#bPNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT p0 db/login/show_config_errors.php000064400000002101151502156010012641 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('makegrid.js'); $scripts->addFile('vendor/jquery/jquery.uitablefilter.js'); $scripts->addFile('sql.js'); require_once 'libraries/server_common.inc.php'; /** * Query box, bookmark, insert data from textfile */ $response->addHTML(SqlQueryForm::getHtml()); db/login/tbl_export.php000064400000004577151502156010011145 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('export.js'); // Get the relation settings $relation = new Relation(); $cfgRelation = $relation->getRelationsParam(); $displayExport = new Export(); // handling export template actions if (isset($_POST['templateAction']) && $cfgRelation['exporttemplateswork']) { $displayExport->handleTemplateActions($cfgRelation); exit; } /** * Gets tables information and displays top links */ require_once 'libraries/tbl_common.inc.php'; $url_query .= '&goto=tbl_export.php&back=tbl_export.php'; // Dump of a table $export_page_title = __('View dump (schema) of table'); // When we have some query, we need to remove LIMIT from that and possibly // generate WHERE clause (if we are asked to export specific rows) if (! empty($sql_query)) { $parser = new PhpMyAdmin\SqlParser\Parser($sql_query); if ((!empty($parser->statements[0])) && ($parser->statements[0] instanceof PhpMyAdmin\SqlParser\Statements\SelectStatement) ) { // Checking if the WHERE clause has to be replaced. if ((!empty($where_clause)) && (is_array($where_clause))) { $replaces[] = array( 'WHERE', 'WHERE (' . implode(') OR (', $where_clause) . ')' ); } // Preparing to remove the LIMIT clause. $replaces[] = array('LIMIT', ''); // Replacing the clauses. $sql_query = PhpMyAdmin\SqlParser\Utils\Query::replaceClauses( $parser->statements[0], $parser->list, $replaces ); } echo PhpMyAdmin\Util::getMessage(PhpMyAdmin\Message::success()); } if (! isset($sql_query)) { $sql_query = ''; } if (! isset($num_tables)) { $num_tables = 0; } if (! isset($unlim_num_rows)) { $unlim_num_rows = 0; } if (! isset($multi_values)) { $multi_values = ''; } $response = Response::getInstance(); $response->addHTML( $displayExport->getDisplay( 'table', $db, $table, $sql_query, $num_tables, $unlim_num_rows, $multi_values ) ); db/login/themes.php000064400000001674151502156010010243 0ustar00getFooter()->setMinimal(); $header = $response->getHeader(); $header->setBodyId('bodythemes'); $header->setTitle('phpMyAdmin - ' . __('Theme')); $header->disableMenuAndConsole(); $hash = '#pma_' . preg_replace('/([0-9]*)\.([0-9]*)\..*/', '\1_\2', PMA_VERSION); $url = Core::linkURL('https://www.phpmyadmin.net/themes/') . $hash; $output = '

phpMyAdmin - ' . __('Theme') . '

'; $output .= '

'; $output .= ''; $output .= __('Get more themes!'); $output .= ''; $output .= '

'; $output .= ThemeManager::getInstance()->getPrintPreviews(); $response->addHTML($output); db/login/import_status.php000064400000006607151502156010011674 0ustar00 $value) { // only copy session-prefixed data if (substr($key, 0, strlen(UPLOAD_PREFIX)) == UPLOAD_PREFIX) { $sessionupload[$key] = $value; } } // PMA will kill all variables, so let's use a constant define('SESSIONUPLOAD', serialize($sessionupload)); session_write_close(); // The cookie name is not good anymore since PR #15273 session_name('phpMyAdmin'); session_id($_COOKIE['phpMyAdmin']); } */ define('PMA_MINIMUM_COMMON', 1); require_once 'libraries/common.inc.php'; list( $SESSION_KEY, $upload_id, $plugins ) = ImportAjax::uploadProgressSetup(); /* if (defined('SESSIONUPLOAD')) { // write sessionupload back into the loaded PMA session $sessionupload = unserialize(SESSIONUPLOAD); foreach ($sessionupload as $key => $value) { $_SESSION[$key] = $value; } // remove session upload data that are not set anymore foreach ($_SESSION as $key => $value) { if (substr($key, 0, strlen(UPLOAD_PREFIX)) == UPLOAD_PREFIX && ! isset($sessionupload[$key]) ) { unset($_SESSION[$key]); } } } */ // $_GET["message"] is used for asking for an import message if (isset($_GET["message"]) && $_GET["message"]) { // AJAX requests can't be cached! Core::noCacheHeader(); header('Content-type: text/html'); // wait 0.3 sec before we check for $_SESSION variable, // which is set inside import.php usleep(300000); $maximumTime = ini_get('max_execution_time'); $timestamp = time(); // wait until message is available while ($_SESSION['Import_message']['message'] == null) { // close session before sleeping session_write_close(); // sleep usleep(250000); // 0.25 sec // reopen session session_start(); if ((time() - $timestamp) > $maximumTime) { $_SESSION['Import_message']['message'] = PhpMyAdmin\Message::error( __('Could not load the progress of the import.') )->getDisplay(); break; } } echo $_SESSION['Import_message']['message']; echo '
' , "\n"; echo ' [ ' , __('Back') , ' ]' , "\n"; echo '
' , "\n"; } else { ImportAjax::status($_GET["id"]); } db/login/tbl_replace.php000064400000041114151502156010011223 0ustar00selectDb($GLOBALS['db']); /** * Initializes some variables */ $goto_include = false; $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('makegrid.js'); // Needed for generation of Inline Edit anchors $scripts->addFile('sql.js'); $scripts->addFile('indexes.js'); $scripts->addFile('gis_data_editor.js'); $relation = new Relation(); $insertEdit = new InsertEdit($GLOBALS['dbi']); // check whether insert row mode, if so include tbl_change.php $insertEdit->isInsertRow(); $after_insert_actions = array('new_insert', 'same_insert', 'edit_next'); if (isset($_POST['after_insert']) && in_array($_POST['after_insert'], $after_insert_actions) ) { $url_params['after_insert'] = $_POST['after_insert']; if (isset($_POST['where_clause'])) { foreach ($_POST['where_clause'] as $one_where_clause) { if ($_POST['after_insert'] == 'same_insert') { $url_params['where_clause'][] = $one_where_clause; } elseif ($_POST['after_insert'] == 'edit_next') { $insertEdit->setSessionForEditNext($one_where_clause); } } } } //get $goto_include for different cases $goto_include = $insertEdit->getGotoInclude($goto_include); // Defines the url to return in case of failure of the query $err_url = $insertEdit->getErrorUrl($url_params); /** * Prepares the update/insert of a row */ list($loop_array, $using_key, $is_insert, $is_insertignore) = $insertEdit->getParamsForUpdateOrInsert(); $query = array(); $value_sets = array(); $func_no_param = array( 'CONNECTION_ID', 'CURRENT_USER', 'CURDATE', 'CURTIME', 'CURRENT_DATE', 'CURRENT_TIME', 'DATABASE', 'LAST_INSERT_ID', 'NOW', 'PI', 'RAND', 'SYSDATE', 'UNIX_TIMESTAMP', 'USER', 'UTC_DATE', 'UTC_TIME', 'UTC_TIMESTAMP', 'UUID', 'UUID_SHORT', 'VERSION', ); $func_optional_param = array( 'RAND', 'UNIX_TIMESTAMP', ); $gis_from_text_functions = array( 'GeomFromText', 'GeomCollFromText', 'LineFromText', 'MLineFromText', 'PointFromText', 'MPointFromText', 'PolyFromText', 'MPolyFromText', ); if ($GLOBALS['dbi']->getVersion() >= 50600) { $gis_from_text_functions = array( 'ST_GeomFromText', 'ST_GeomCollFromText', 'ST_LineFromText', 'ST_MLineFromText', 'ST_PointFromText', 'ST_MPointFromText', 'ST_PolyFromText', 'ST_MPolyFromText', ); } $gis_from_wkb_functions = array( 'GeomFromWKB', 'GeomCollFromWKB', 'LineFromWKB', 'MLineFromWKB', 'PointFromWKB', 'MPointFromWKB', 'PolyFromWKB', 'MPolyFromWKB', ); //if some posted fields need to be transformed. $mime_map = Transformations::getMIME($GLOBALS['db'], $GLOBALS['table']); if ($mime_map === false) { $mime_map = array(); } $query_fields = array(); $insert_errors = array(); $row_skipped = false; $unsaved_values = array(); foreach ($loop_array as $rownumber => $where_clause) { // skip fields to be ignored if (! $using_key && isset($_POST['insert_ignore_' . $where_clause])) { continue; } // Defines the SET part of the sql query $query_values = array(); // Map multi-edit keys to single-level arrays, dependent on how we got the fields $multi_edit_columns = isset($_POST['fields']['multi_edit'][$rownumber]) ? $_POST['fields']['multi_edit'][$rownumber] : array(); $multi_edit_columns_name = isset($_POST['fields_name']['multi_edit'][$rownumber]) ? $_POST['fields_name']['multi_edit'][$rownumber] : array(); $multi_edit_columns_prev = isset($_POST['fields_prev']['multi_edit'][$rownumber]) ? $_POST['fields_prev']['multi_edit'][$rownumber] : null; $multi_edit_funcs = isset($_POST['funcs']['multi_edit'][$rownumber]) ? $_POST['funcs']['multi_edit'][$rownumber] : null; $multi_edit_salt = isset($_POST['salt']['multi_edit'][$rownumber]) ? $_POST['salt']['multi_edit'][$rownumber] :null; $multi_edit_columns_type = isset($_POST['fields_type']['multi_edit'][$rownumber]) ? $_POST['fields_type']['multi_edit'][$rownumber] : null; $multi_edit_columns_null = isset($_POST['fields_null']['multi_edit'][$rownumber]) ? $_POST['fields_null']['multi_edit'][$rownumber] : null; $multi_edit_columns_null_prev = isset($_POST['fields_null_prev']['multi_edit'][$rownumber]) ? $_POST['fields_null_prev']['multi_edit'][$rownumber] : null; $multi_edit_auto_increment = isset($_POST['auto_increment']['multi_edit'][$rownumber]) ? $_POST['auto_increment']['multi_edit'][$rownumber] : null; $multi_edit_virtual = isset($_POST['virtual']['multi_edit'][$rownumber]) ? $_POST['virtual']['multi_edit'][$rownumber] : null; // When a select field is nullified, it's not present in $_POST // so initialize it; this way, the foreach($multi_edit_columns) will process it foreach ($multi_edit_columns_name as $key => $val) { if (! isset($multi_edit_columns[$key])) { $multi_edit_columns[$key] = ''; } } // Iterate in the order of $multi_edit_columns_name, // not $multi_edit_columns, to avoid problems // when inserting multiple entries $insert_fail = false; foreach ($multi_edit_columns_name as $key => $column_name) { $current_value = $multi_edit_columns[$key]; // Note: $key is an md5 of the fieldname. The actual fieldname is // available in $multi_edit_columns_name[$key] $file_to_insert = new File(); $file_to_insert->checkTblChangeForm($key, $rownumber); $possibly_uploaded_val = $file_to_insert->getContent(); if ($possibly_uploaded_val !== false) { $current_value = $possibly_uploaded_val; } // Apply Input Transformation if defined if (!empty($mime_map[$column_name]) && !empty($mime_map[$column_name]['input_transformation']) ) { $filename = 'libraries/classes/Plugins/Transformations/' . $mime_map[$column_name]['input_transformation']; if (is_file($filename)) { $classname = Transformations::getClassName($filename); if (class_exists($classname)) { /** @var IOTransformationsPlugin $transformation_plugin */ $transformation_plugin = new $classname(); $transformation_options = Transformations::getOptions( $mime_map[$column_name]['input_transformation_options'] ); $current_value = $transformation_plugin->applyTransformation( $current_value, $transformation_options ); // check if transformation was successful or not // and accordingly set error messages & insert_fail if (method_exists($transformation_plugin, 'isSuccess') && !$transformation_plugin->isSuccess() ) { $insert_fail = true; $row_skipped = true; $insert_errors[] = sprintf( __('Row: %1$s, Column: %2$s, Error: %3$s'), $rownumber, $column_name, $transformation_plugin->getError() ); } } } } if ($file_to_insert->isError()) { $insert_errors[] = $file_to_insert->getError(); } // delete $file_to_insert temporary variable $file_to_insert->cleanUp(); $current_value = $insertEdit->getCurrentValueForDifferentTypes( $possibly_uploaded_val, $key, $multi_edit_columns_type, $current_value, $multi_edit_auto_increment, $rownumber, $multi_edit_columns_name, $multi_edit_columns_null, $multi_edit_columns_null_prev, $is_insert, $using_key, $where_clause, $table, $multi_edit_funcs ); $current_value_as_an_array = $insertEdit->getCurrentValueAsAnArrayForMultipleEdit( $multi_edit_funcs, $multi_edit_salt, $gis_from_text_functions, $current_value, $gis_from_wkb_functions, $func_optional_param, $func_no_param, $key ); if (! isset($multi_edit_virtual) || ! isset($multi_edit_virtual[$key])) { list($query_values, $query_fields) = $insertEdit->getQueryValuesForInsertAndUpdateInMultipleEdit( $multi_edit_columns_name, $multi_edit_columns_null, $current_value, $multi_edit_columns_prev, $multi_edit_funcs, $is_insert, $query_values, $query_fields, $current_value_as_an_array, $value_sets, $key, $multi_edit_columns_null_prev ); } if (isset($multi_edit_columns_null[$key])) { $multi_edit_columns[$key] = null; } } //end of foreach // temporarily store rows not inserted // so that they can be populated again. if ($insert_fail) { $unsaved_values[$rownumber] = $multi_edit_columns; } if (!$insert_fail && count($query_values) > 0) { if ($is_insert) { $value_sets[] = implode(', ', $query_values); } else { // build update query $query[] = 'UPDATE ' . Util::backquote($GLOBALS['table']) . ' SET ' . implode(', ', $query_values) . ' WHERE ' . $where_clause . ($_POST['clause_is_unique'] ? '' : ' LIMIT 1'); } } } // end foreach ($loop_array as $where_clause) unset( $multi_edit_columns_name, $multi_edit_columns_prev, $multi_edit_funcs, $multi_edit_columns_type, $multi_edit_columns_null, $func_no_param, $multi_edit_auto_increment, $current_value_as_an_array, $key, $current_value, $loop_array, $where_clause, $using_key, $multi_edit_columns_null_prev, $insert_fail ); // Builds the sql query if ($is_insert && count($value_sets) > 0) { $query = $insertEdit->buildSqlQuery($is_insertignore, $query_fields, $value_sets); } elseif (empty($query) && ! isset($_POST['preview_sql']) && !$row_skipped) { // No change -> move back to the calling script // // Note: logic passes here for inline edit $message = Message::success(__('No change')); // Avoid infinite recursion if ($goto_include == 'tbl_replace.php') { $goto_include = 'tbl_change.php'; } $active_page = $goto_include; include '' . Core::securePath($goto_include); exit; } unset($multi_edit_columns, $is_insertignore); // If there is a request for SQL previewing. if (isset($_POST['preview_sql'])) { Core::previewSQL($query); } /** * Executes the sql query and get the result, then move back to the calling * page */ list ($url_params, $total_affected_rows, $last_messages, $warning_messages, $error_messages, $return_to_sql_query) = $insertEdit->executeSqlQuery($url_params, $query); if ($is_insert && (count($value_sets) > 0 || $row_skipped)) { $message = Message::getMessageForInsertedRows( $total_affected_rows ); $unsaved_values = array_values($unsaved_values); } else { $message = Message::getMessageForAffectedRows( $total_affected_rows ); } if ($row_skipped) { $goto_include = 'tbl_change.php'; $message->addMessagesString($insert_errors, '
'); $message->isError(true); } $message->addMessages($last_messages, '
'); if (! empty($warning_messages)) { $message->addMessagesString($warning_messages, '
'); $message->isError(true); } if (! empty($error_messages)) { $message->addMessagesString($error_messages); $message->isError(true); } unset( $error_messages, $warning_messages, $total_affected_rows, $last_messages, $last_message, $row_skipped, $insert_errors ); /** * The following section only applies to grid editing. * However, verifying isAjax() is not enough to ensure we are coming from * grid editing. If we are coming from the Edit or Copy link in Browse mode, * ajax_page_request is present in the POST parameters. */ if ($response->isAjax() && ! isset($_POST['ajax_page_request'])) { /** * If we are in grid editing, we need to process the relational and * transformed fields, if they were edited. After that, output the correct * link/transformed value and exit */ if (isset($_POST['rel_fields_list']) && $_POST['rel_fields_list'] != '') { $map = $relation->getForeigners($db, $table, '', 'both'); $relation_fields = array(); parse_str($_POST['rel_fields_list'], $relation_fields); // loop for each relation cell /** @var array $relation_fields */ foreach ($relation_fields as $cell_index => $curr_rel_field) { foreach ($curr_rel_field as $relation_field => $relation_field_value) { $where_comparison = "='" . $relation_field_value . "'"; $dispval = $insertEdit->getDisplayValueForForeignTableColumn( $where_comparison, $map, $relation_field ); $extra_data['relations'][$cell_index] = $insertEdit->getLinkForRelationalDisplayField( $map, $relation_field, $where_comparison, $dispval, $relation_field_value ); } } // end of loop for each relation cell } if (isset($_POST['do_transformations']) && $_POST['do_transformations'] == true ) { $edited_values = array(); parse_str($_POST['transform_fields_list'], $edited_values); if (! isset($extra_data)) { $extra_data = array(); } $transformation_types = array( "input_transformation", "transformation" ); foreach ($mime_map as $transformation) { $column_name = $transformation['column_name']; foreach ($transformation_types as $type) { $file = Core::securePath($transformation[$type]); $extra_data = $insertEdit->transformEditedValues( $db, $table, $transformation, $edited_values, $file, $column_name, $extra_data, $type ); } } // end of loop for each $mime_map } // Need to check the inline edited value can be truncated by MySQL // without informing while saving $column_name = $_POST['fields_name']['multi_edit'][0][0]; $insertEdit->verifyWhetherValueCanBeTruncatedAndAppendExtraData( $db, $table, $column_name, $extra_data ); /**Get the total row count of the table*/ $_table = new Table($_POST['table'], $_POST['db']); $extra_data['row_count'] = $_table->countRecords(); $extra_data['sql_query'] = Util::getMessage( $message, $GLOBALS['display_query'] ); $response->setRequestStatus($message->isSuccess()); $response->addJSON('message', $message); $response->addJSON($extra_data); exit; } if (! empty($return_to_sql_query)) { $disp_query = $GLOBALS['sql_query']; $disp_message = $message; unset($message); $GLOBALS['sql_query'] = $return_to_sql_query; } $scripts->addFile('vendor/jquery/additional-methods.js'); $scripts->addFile('tbl_change.js'); $active_page = $goto_include; /** * If user asked for "and then Insert another new row" we have to remove * WHERE clause information so that tbl_change.php does not go back * to the current record */ if (isset($_POST['after_insert']) && 'new_insert' == $_POST['after_insert']) { unset($_POST['where_clause']); } /** * Load target page. */ require '' . Core::securePath($goto_include); exit; db/login/composer.lock000064400000275216151502156010010753 0ustar00{ "_readme": [ "This file locks the dependencies of your project to a known state", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "fcc1bc864c141a58b0bbb7e52b156ef1", "packages": [ { "name": "bacon/bacon-qr-code", "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/Bacon/BaconQrCode.git", "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/5a91b62b9d37cee635bbf8d553f4546057250bee", "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee", "shasum": "" }, "require": { "ext-iconv": "*", "php": "^5.4|^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8" }, "suggest": { "ext-gd": "to generate QR code images" }, "type": "library", "autoload": { "psr-0": { "BaconQrCode": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-2-Clause" ], "authors": [ { "name": "Ben Scholzen 'DASPRiD'", "email": "mail@dasprids.de", "homepage": "http://www.dasprids.de", "role": "Developer" } ], "description": "BaconQrCode is a QR code generator for PHP.", "homepage": "https://github.com/Bacon/BaconQrCode", "time": "2017-10-17T09:59:25+00:00" }, { "name": "google/recaptcha", "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/google/recaptcha.git", "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/google/recaptcha/zipball/614f25a9038be4f3f2da7cbfd778dc5b357d2419", "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.2.20|^2.15", "php-coveralls/php-coveralls": "^2.1", "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.2.x-dev" } }, "autoload": { "psr-4": { "ReCaptcha\\": "src/ReCaptcha" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.", "homepage": "https://www.google.com/recaptcha/", "keywords": [ "Abuse", "captcha", "recaptcha", "spam" ], "time": "2020-03-31T17:50:54+00:00" }, { "name": "paragonie/constant_time_encoding", "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", "reference": "2132f0f293d856026d7d11bd81b9f4a23a1dc1f6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/2132f0f293d856026d7d11bd81b9f4a23a1dc1f6", "reference": "2132f0f293d856026d7d11bd81b9f4a23a1dc1f6", "shasum": "" }, "require": { "php": "^5.3|^7" }, "require-dev": { "paragonie/random_compat": "^1.4|^2", "phpunit/phpunit": "4.*|5.*", "vimeo/psalm": "^0.3|^1" }, "type": "library", "autoload": { "psr-4": { "ParagonIE\\ConstantTime\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Paragon Initiative Enterprises", "email": "security@paragonie.com", "homepage": "https://paragonie.com", "role": "Maintainer" }, { "name": "Steve 'Sc00bz' Thomas", "email": "steve@tobtu.com", "homepage": "https://www.tobtu.com", "role": "Original Developer" } ], "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", "keywords": [ "base16", "base32", "base32_decode", "base32_encode", "base64", "base64_decode", "base64_encode", "bin2hex", "encoding", "hex", "hex2bin", "rfc4648" ], "time": "2018-04-30T17:57:16+00:00" }, { "name": "paragonie/random_compat", "version": "v2.0.19", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241", "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241", "shasum": "" }, "require": { "php": ">=5.2.0" }, "require-dev": { "phpunit/phpunit": "4.*|5.*" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", "autoload": { "files": [ "lib/random.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Paragon Initiative Enterprises", "email": "security@paragonie.com", "homepage": "https://paragonie.com" } ], "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", "polyfill", "pseudorandom", "random" ], "time": "2020-10-15T10:06:57+00:00" }, { "name": "phpmyadmin/motranslator", "version": "4.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/motranslator.git", "reference": "fcb370254998fda7eeccfd7c787b4deb71b0d77c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/motranslator/zipball/fcb370254998fda7eeccfd7c787b4deb71b0d77c", "reference": "fcb370254998fda7eeccfd7c787b4deb71b0d77c", "shasum": "" }, "require": { "php": ">=5.3.0", "symfony/expression-language": "^4.0 || ^3.2 || ^2.8" }, "require-dev": { "apigen/apigen": "^4.1", "phpunit/php-code-coverage": "*", "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5" }, "type": "library", "autoload": { "psr-4": { "PhpMyAdmin\\MoTranslator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "Translation API for PHP using Gettext MO files", "homepage": "https://github.com/phpmyadmin/motranslator", "keywords": [ "gettext", "i18n", "mo", "translator" ], "time": "2018-02-12T13:22:52+00:00" }, { "name": "phpmyadmin/shapefile", "version": "2.1", "source": { "type": "git", "url": "https://github.com/phpmyadmin/shapefile.git", "reference": "e23b767f2a81f61fee3fc09fc062879985f3e224" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/shapefile/zipball/e23b767f2a81f61fee3fc09fc062879985f3e224", "reference": "e23b767f2a81f61fee3fc09fc062879985f3e224", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { "phpunit/php-code-coverage": "*", "phpunit/phpunit": "~4.8 || ~5.7" }, "suggest": { "ext-dbase": "For dbf files parsing" }, "type": "library", "autoload": { "psr-4": { "PhpMyAdmin\\ShapeFile\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0+" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "ESRI ShapeFile library for PHP", "homepage": "https://github.com/phpmyadmin/shapefile", "keywords": [ "ESRI", "Shapefile", "dbf", "geo", "geospatial", "shape", "shp" ], "time": "2017-05-15T08:31:47+00:00" }, { "name": "phpmyadmin/sql-parser", "version": "4.7.1", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", "reference": "550ce6968794e890cfd5b4cbf202e716d78b6a92" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/550ce6968794e890cfd5b4cbf202e716d78b6a92", "reference": "550ce6968794e890cfd5b4cbf202e716d78b6a92", "shasum": "" }, "require": { "php": ">=5.3.0", "symfony/polyfill-mbstring": "^1.3" }, "conflict": { "phpmyadmin/motranslator": "<3.0" }, "require-dev": { "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5 || ^7.0", "squizlabs/php_codesniffer": "~2.9 || ~3.4" }, "suggest": { "ext-mbstring": "For best performance", "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, "bin": [ "bin/highlight-query", "bin/lint-query", "bin/tokenize-query" ], "type": "library", "autoload": { "psr-4": { "PhpMyAdmin\\SqlParser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", "homepage": "https://github.com/phpmyadmin/sql-parser", "keywords": [ "analysis", "lexer", "parser", "sql" ], "time": "2020-10-15T15:17:59+00:00" }, { "name": "phpseclib/phpseclib", "version": "2.0.29", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", "reference": "497856a8d997f640b4a516062f84228a772a48a8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/497856a8d997f640b4a516062f84228a772a48a8", "reference": "497856a8d997f640b4a516062f84228a772a48a8", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { "phing/phing": "~2.7", "phpunit/phpunit": "^4.8.35|^5.7|^6.0", "squizlabs/php_codesniffer": "~2.0" }, "suggest": { "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." }, "type": "library", "autoload": { "files": [ "phpseclib/bootstrap.php" ], "psr-4": { "phpseclib\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Jim Wigginton", "email": "terrafrost@php.net", "role": "Lead Developer" }, { "name": "Patrick Monnerat", "email": "pm@datasphere.ch", "role": "Developer" }, { "name": "Andreas Fischer", "email": "bantu@phpbb.com", "role": "Developer" }, { "name": "Hans-Jürgen Petrich", "email": "petrich@tronic-media.com", "role": "Developer" }, { "name": "Graham Campbell", "email": "graham@alt-three.com", "role": "Developer" } ], "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", "homepage": "http://phpseclib.sourceforge.net", "keywords": [ "BigInteger", "aes", "asn.1", "asn1", "blowfish", "crypto", "cryptography", "encryption", "rsa", "security", "sftp", "signature", "signing", "ssh", "twofish", "x.509", "x509" ], "funding": [ { "url": "https://github.com/terrafrost", "type": "github" }, { "url": "https://www.patreon.com/phpseclib", "type": "patreon" }, { "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", "type": "tidelift" } ], "time": "2020-09-08T04:24:43+00:00" }, { "name": "pragmarx/google2fa", "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", "reference": "6949226739e4424f40031e6f1c96b1fd64047335" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6949226739e4424f40031e6f1c96b1fd64047335", "reference": "6949226739e4424f40031e6f1c96b1fd64047335", "shasum": "" }, "require": { "paragonie/constant_time_encoding": "~1.0|~2.0", "paragonie/random_compat": ">=1", "php": ">=5.4", "symfony/polyfill-php56": "~1.2" }, "require-dev": { "bacon/bacon-qr-code": "~1.0", "phpunit/phpunit": "~4|~5|~6" }, "suggest": { "bacon/bacon-qr-code": "Required to generate inline QR Codes." }, "type": "library", "extra": { "component": "package", "branch-alias": { "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { "PragmaRX\\Google2FA\\": "src/", "PragmaRX\\Google2FA\\Tests\\": "tests/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Antonio Carlos Ribeiro", "email": "acr@antoniocarlosribeiro.com", "role": "Creator & Designer" } ], "description": "A One Time Password Authentication package, compatible with Google Authenticator.", "keywords": [ "2fa", "Authentication", "Two Factor Authentication", "google2fa", "laravel" ], "time": "2018-08-29T13:28:06+00:00" }, { "name": "psr/container", "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "http://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", "homepage": "https://github.com/php-fig/container", "keywords": [ "PSR-11", "container", "container-interface", "container-interop", "psr" ], "time": "2017-02-14T16:28:37+00:00" }, { "name": "samyoul/u2f-php-server", "version": "v1.1.4", "source": { "type": "git", "url": "https://github.com/Samyoul/U2F-php-server.git", "reference": "0625202c79d570e58525ed6c4ae38500ea3f0883" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Samyoul/U2F-php-server/zipball/0625202c79d570e58525ed6c4ae38500ea3f0883", "reference": "0625202c79d570e58525ed6c4ae38500ea3f0883", "shasum": "" }, "require": { "ext-openssl": "*" }, "type": "library", "autoload": { "psr-4": { "Samyoul\\U2F\\U2FServer\\": [ "src/" ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-2-Clause" ], "authors": [ { "name": "Samuel Hawksby-Robinson", "email": "samuel@samyoul.com" } ], "description": "Server side handling class for FIDO U2F registration and authentication", "time": "2018-10-26T12:43:39+00:00" }, { "name": "symfony/expression-language", "version": "v2.8.52", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/expression-language/zipball/fa9be1b831859b56d244137fabbfd01a46dbdb36", "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36", "shasum": "" }, "require": { "php": ">=5.3.9" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\ExpressionLanguage\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony ExpressionLanguage Component", "homepage": "https://symfony.com", "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/polyfill-ctype", "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "ctype", "polyfill", "portable" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-mbstring", "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", "mbstring", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php56", "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", "reference": "13df84e91cd168f247c2f2ec82cc0fa24901c011" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/13df84e91cd168f247c2f2ec82cc0fa24901c011", "reference": "13df84e91cd168f247c2f2ec82cc0fa24901c011", "shasum": "" }, "require": { "php": ">=5.3.3", "symfony/polyfill-util": "~1.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Php56\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-util", "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", "reference": "46b910c71e9828f8ec2aa7a0314de1130d9b295a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/46b910c71e9828f8ec2aa7a0314de1130d9b295a", "reference": "46b910c71e9828f8ec2aa7a0314de1130d9b295a", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Util\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony utilities for portability of PHP codes", "homepage": "https://symfony.com", "keywords": [ "compat", "compatibility", "polyfill", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-07-14T12:35:20+00:00" }, { "name": "tecnickcom/tcpdf", "version": "6.3.5", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", "reference": "19a535eaa7fb1c1cac499109deeb1a7a201b4549" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/19a535eaa7fb1c1cac499109deeb1a7a201b4549", "reference": "19a535eaa7fb1c1cac499109deeb1a7a201b4549", "shasum": "" }, "require": { "php": ">=5.3.0" }, "type": "library", "autoload": { "classmap": [ "config", "include", "tcpdf.php", "tcpdf_parser.php", "tcpdf_import.php", "tcpdf_barcodes_1d.php", "tcpdf_barcodes_2d.php", "include/tcpdf_colors.php", "include/tcpdf_filters.php", "include/tcpdf_font_data.php", "include/tcpdf_fonts.php", "include/tcpdf_images.php", "include/tcpdf_static.php", "include/barcodes/datamatrix.php", "include/barcodes/pdf417.php", "include/barcodes/qrcode.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-3.0-only" ], "authors": [ { "name": "Nicola Asuni", "email": "info@tecnick.com", "role": "lead" } ], "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", "homepage": "http://www.tcpdf.org/", "keywords": [ "PDFD32000-2008", "TCPDF", "barcodes", "datamatrix", "pdf", "pdf417", "qrcode" ], "time": "2020-02-14T14:20:12+00:00" }, { "name": "twig/extensions", "version": "v1.5.4", "source": { "type": "git", "url": "https://github.com/twigphp/Twig-extensions.git", "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", "shasum": "" }, "require": { "twig/twig": "^1.27|^2.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.4", "symfony/translation": "^2.7|^3.4" }, "suggest": { "symfony/translation": "Allow the time_diff output to be translated" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.5-dev" } }, "autoload": { "psr-0": { "Twig_Extensions_": "lib/" }, "psr-4": { "Twig\\Extensions\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" } ], "description": "Common additional features for Twig that do not directly belong in core", "keywords": [ "i18n", "text" ], "abandoned": true, "time": "2018-12-05T18:34:18+00:00" }, { "name": "twig/twig", "version": "v1.42.5", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twigphp/Twig/zipball/87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e", "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e", "shasum": "" }, "require": { "php": ">=5.5.0", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", "symfony/phpunit-bridge": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.42-dev" } }, "autoload": { "psr-0": { "Twig_": "lib/" }, "psr-4": { "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com", "homepage": "http://fabien.potencier.org", "role": "Lead Developer" }, { "name": "Twig Team", "role": "Contributors" }, { "name": "Armin Ronacher", "email": "armin.ronacher@active-4.com", "role": "Project Founder" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", "homepage": "https://twig.symfony.com", "keywords": [ "templating" ], "time": "2020-02-11T05:59:23+00:00" } ], "packages-dev": [ { "name": "codacy/coverage", "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/codacy/php-codacy-coverage.git", "reference": "1852ca987c91ef466ebcfdbdd4e1788b653eaf1d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/codacy/php-codacy-coverage/zipball/1852ca987c91ef466ebcfdbdd4e1788b653eaf1d", "reference": "1852ca987c91ef466ebcfdbdd4e1788b653eaf1d", "shasum": "" }, "require": { "gitonomy/gitlib": ">=1.0", "php": ">=5.3.3", "symfony/console": "~2.5|~3.0|~4.0|~5.0" }, "require-dev": { "clue/phar-composer": "^1.1", "phpunit/phpunit": "~6.5" }, "bin": [ "bin/codacycoverage" ], "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Jakob Pupke", "email": "jakob.pupke@gmail.com" } ], "description": "Sends PHP test coverage information to Codacy.", "homepage": "https://github.com/codacy/php-codacy-coverage", "abandoned": true, "time": "2020-01-10T10:52:12+00:00" }, { "name": "doctrine/instantiator", "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { "php": ">=5.3,<8.0-DEV" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", "phpunit/phpunit": "~4.0", "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", "homepage": "http://ocramius.github.com/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", "homepage": "https://github.com/doctrine/instantiator", "keywords": [ "constructor", "instantiate" ], "time": "2015-06-14T21:17:01+00:00" }, { "name": "gitonomy/gitlib", "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/gitonomy/gitlib.git", "reference": "932a960221ae3484a3e82553b3be478e56beb68d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/932a960221ae3484a3e82553b3be478e56beb68d", "reference": "932a960221ae3484a3e82553b3be478e56beb68d", "shasum": "" }, "require": { "php": "^5.3 || ^7.0", "symfony/process": "^2.3|^3.0|^4.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35|^5.7", "psr/log": "^1.0" }, "suggest": { "psr/log": "Add some log" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { "Gitonomy\\Git\\": "src/Gitonomy/Git/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Alexandre Salomé", "email": "alexandre.salome@gmail.com", "homepage": "http://alexandre-salome.fr" }, { "name": "Julien DIDIER", "email": "genzo.wm@gmail.com", "homepage": "http://www.jdidier.net" } ], "description": "Library for accessing git", "homepage": "http://gitonomy.com", "time": "2018-04-22T19:55:36+00:00" }, { "name": "phpdocumentor/reflection-common", "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { "phpunit/phpunit": "^4.6" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ "src" ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Jaap van Otterdijk", "email": "opensource@ijaap.nl" } ], "description": "Common reflection classes used by phpdocumentor to reflect the code structure", "homepage": "http://www.phpdoc.org", "keywords": [ "FQSEN", "phpDocumentor", "phpdoc", "reflection", "static analysis" ], "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", "shasum": "" }, "require": { "php": ">=5.5", "phpdocumentor/reflection-common": "^1.0@dev", "phpdocumentor/type-resolver": "^0.3.0", "webmozart/assert": "^1.0" }, "require-dev": { "mockery/mockery": "^0.9.4", "phpunit/phpunit": "^4.4" }, "type": "library", "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ "src/" ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Mike van Riel", "email": "me@mikevanriel.com" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "time": "2017-08-08T06:39:58+00:00" }, { "name": "phpdocumentor/type-resolver", "version": "0.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", "shasum": "" }, "require": { "php": "^5.5 || ^7.0", "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { "mockery/mockery": "^0.9.4", "phpunit/phpunit": "^5.2||^4.8.24" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ "src/" ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Mike van Riel", "email": "me@mikevanriel.com" } ], "time": "2017-06-03T08:32:36+00:00" }, { "name": "phpmyadmin/coding-standard", "version": "0.3", "source": { "type": "git", "url": "https://github.com/phpmyadmin/coding-standard.git", "reference": "5ae123e27140a1e16be005432e26a8233524eaf5" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/coding-standard/zipball/5ae123e27140a1e16be005432e26a8233524eaf5", "reference": "5ae123e27140a1e16be005432e26a8233524eaf5", "shasum": "" }, "require": { "squizlabs/php_codesniffer": "^3.0" }, "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "phpMyAdmin PHP CodeSniffer Coding Standard", "keywords": [ "codesniffer", "phpcs", "phpmyadmin" ], "time": "2017-09-28T09:13:00+00:00" }, { "name": "phpspec/prophecy", "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { "phpspec/phpspec": "^2.5 || ^3.2", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.10.x-dev" } }, "autoload": { "psr-4": { "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Konstantin Kudryashov", "email": "ever.zet@gmail.com", "homepage": "http://everzet.com" }, { "name": "Marcello Duarte", "email": "marcello.duarte@gmail.com" } ], "description": "Highly opinionated mocking framework for PHP 5.3+", "homepage": "https://github.com/phpspec/prophecy", "keywords": [ "Double", "Dummy", "fake", "mock", "spy", "stub" ], "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", "version": "2.2.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", "shasum": "" }, "require": { "php": ">=5.3.3", "phpunit/php-file-iterator": "~1.3", "phpunit/php-text-template": "~1.2", "phpunit/php-token-stream": "~1.3", "sebastian/environment": "^1.3.2", "sebastian/version": "~1.0" }, "require-dev": { "ext-xdebug": ">=2.1.4", "phpunit/phpunit": "~4" }, "suggest": { "ext-dom": "*", "ext-xdebug": ">=2.2.1", "ext-xmlwriter": "*" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.2.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sb@sebastian-bergmann.de", "role": "lead" } ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ "coverage", "testing", "xunit" ], "time": "2015-10-06T15:47:00+00:00" }, { "name": "phpunit/php-file-iterator", "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.4.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sb@sebastian-bergmann.de", "role": "lead" } ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ "filesystem", "iterator" ], "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "Simple template engine.", "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ "template" ], "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", "version": "1.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sb@sebastian-bergmann.de", "role": "lead" } ], "description": "Utility class for timing", "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ "timer" ], "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", "version": "1.4.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", "shasum": "" }, "require": { "ext-tokenizer": "*", "php": ">=5.3.3" }, "require-dev": { "phpunit/phpunit": "~4.2" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.4-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Wrapper around PHP's tokenizer extension.", "homepage": "https://github.com/sebastianbergmann/php-token-stream/", "keywords": [ "tokenizer" ], "abandoned": true, "time": "2017-12-04T08:55:13+00:00" }, { "name": "phpunit/phpunit", "version": "4.8.36", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", "shasum": "" }, "require": { "ext-dom": "*", "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", "php": ">=5.3.3", "phpspec/prophecy": "^1.3.1", "phpunit/php-code-coverage": "~2.1", "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", "phpunit/php-timer": "^1.0.6", "phpunit/phpunit-mock-objects": "~2.3", "sebastian/comparator": "~1.2.2", "sebastian/diff": "~1.2", "sebastian/environment": "~1.3", "sebastian/exporter": "~1.2", "sebastian/global-state": "~1.0", "sebastian/version": "~1.0", "symfony/yaml": "~2.1|~3.0" }, "suggest": { "phpunit/php-invoker": "~1.1" }, "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { "dev-master": "4.8.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "The PHP Unit Testing framework.", "homepage": "https://phpunit.de/", "keywords": [ "phpunit", "testing", "xunit" ], "time": "2017-06-21T08:07:12+00:00" }, { "name": "phpunit/phpunit-mock-objects", "version": "2.3.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": ">=5.3.3", "phpunit/php-text-template": "~1.2", "sebastian/exporter": "~1.2" }, "require-dev": { "phpunit/phpunit": "~4.4" }, "suggest": { "ext-soap": "*" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.3.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sb@sebastian-bergmann.de", "role": "lead" } ], "description": "Mock Object library for PHPUnit", "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", "keywords": [ "mock", "xunit" ], "abandoned": true, "time": "2015-10-02T06:51:40+00:00" }, { "name": "phpunit/phpunit-selenium", "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/giorgiosironi/phpunit-selenium.git", "reference": "c84dd7ca214563868ce216123b7ae9c792beb262" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/c84dd7ca214563868ce216123b7ae9c792beb262", "reference": "c84dd7ca214563868ce216123b7ae9c792beb262", "shasum": "" }, "require": { "ext-curl": "*", "ext-dom": "*", "php": ">=5.3.3", "phpunit/phpunit": "~3.7|~4.0", "sebastian/comparator": "~1.0" }, "type": "library", "autoload": { "classmap": [ "PHPUnit/" ] }, "notification-url": "https://packagist.org/downloads/", "include-path": [ "" ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sb@sebastian-bergmann.de", "role": "lead" }, { "name": "Giorgio Sironi", "email": "info@giorgiosironi.com", "role": "developer" } ], "description": "Selenium Server integration for PHPUnit", "homepage": "http://www.phpunit.de/", "keywords": [ "selenium", "testing", "xunit" ], "time": "2014-11-02T09:23:27+00:00" }, { "name": "psr/log", "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for logging libraries", "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], "time": "2020-03-23T09:12:05+00:00" }, { "name": "sebastian/comparator", "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "shasum": "" }, "require": { "php": ">=5.3.3", "sebastian/diff": "~1.2", "sebastian/exporter": "~1.2 || ~2.0" }, "require-dev": { "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.2.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { "name": "Volker Dusch", "email": "github@wallbash.com" }, { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", "homepage": "http://www.github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.4-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Kore Nordmann", "email": "mail@kore-nordmann.de" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ "diff" ], "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", "version": "1.3.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8 || ^5.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.3.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Provides functionality to handle HHVM/PHP environments", "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", "hhvm" ], "time": "2016-08-18T05:49:44+00:00" }, { "name": "sebastian/exporter", "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", "shasum": "" }, "require": { "php": ">=5.3.3", "sebastian/recursion-context": "~1.0" }, "require-dev": { "ext-mbstring": "*", "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.3.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { "name": "Volker Dusch", "email": "github@wallbash.com" }, { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, { "name": "Adam Harvey", "email": "aharvey@php.net" } ], "description": "Provides the functionality to export PHP variables for visualization", "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "time": "2016-06-17T09:04:28+00:00" }, { "name": "sebastian/global-state", "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { "phpunit/phpunit": "~4.2" }, "suggest": { "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Snapshotting of global state", "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/recursion-context", "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, { "name": "Adam Harvey", "email": "aharvey@php.net" } ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "time": "2016-10-03T07:41:43+00:00" }, { "name": "sebastian/version", "version": "1.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", "shasum": "" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", "time": "2015-06-21T13:59:46+00:00" }, { "name": "squizlabs/php_codesniffer", "version": "3.5.6", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", "reference": "e97627871a7eab2f70e59166072a6b767d5834e0" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0", "reference": "e97627871a7eab2f70e59166072a6b767d5834e0", "shasum": "" }, "require": { "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", "php": ">=5.4.0" }, "require-dev": { "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "bin": [ "bin/phpcs", "bin/phpcbf" ], "type": "library", "extra": { "branch-alias": { "dev-master": "3.x-dev" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Greg Sherwood", "role": "lead" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" ], "time": "2020-08-10T04:50:15+00:00" }, { "name": "symfony/console", "version": "v2.8.52", "source": { "type": "git", "url": "https://github.com/symfony/console.git", "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", "shasum": "" }, "require": { "php": ">=5.3.9", "symfony/debug": "^2.7.2|~3.0.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "psr/log": "~1.0", "symfony/event-dispatcher": "~2.1|~3.0.0", "symfony/process": "~2.1|~3.0.0" }, "suggest": { "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Console Component", "homepage": "https://symfony.com", "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/debug", "version": "v2.8.52", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/debug/zipball/74251c8d50dd3be7c4ce0c7b862497cdc641a5d0", "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0", "shasum": "" }, "require": { "php": ">=5.3.9", "psr/log": "~1.0" }, "conflict": { "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { "symfony/class-loader": "~2.2|~3.0.0", "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Debug\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/process", "version": "v2.8.52", "source": { "type": "git", "url": "https://github.com/symfony/process.git", "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/process/zipball/c3591a09c78639822b0b290d44edb69bf9f05dc8", "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8", "shasum": "" }, "require": { "php": ">=5.3.9" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Process Component", "homepage": "https://symfony.com", "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/yaml", "version": "v2.8.52", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", "reference": "02c1859112aa779d9ab394ae4f3381911d84052b" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b", "reference": "02c1859112aa779d9ab394ae4f3381911d84052b", "shasum": "" }, "require": { "php": ">=5.3.9", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", "time": "2018-11-11T11:18:13+00:00" }, { "name": "webmozart/assert", "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "phpstan/phpstan": "<0.12.20", "vimeo/psalm": "<3.9.1" }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Bernhard Schussek", "email": "bschussek@gmail.com" } ], "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ "assert", "check", "validate" ], "time": "2020-07-08T17:02:28+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { "php": ">=5.5.0", "ext-mysqli": "*", "ext-xml": "*", "ext-pcre": "*", "ext-json": "*", "ext-ctype": "*", "ext-hash": "*" }, "platform-dev": [], "platform-overrides": { "php": "5.5" }, "plugin-api-version": "1.1.0" } db/login/libraries/check_user_privileges.inc.php000064400000001506151502156010016040 0ustar00getCurrentUserAndHost(); if ($username === '') { // MySQL is started with --skip-grant-tables $GLOBALS['is_create_db_priv'] = true; $GLOBALS['is_reload_priv'] = true; $GLOBALS['db_to_create'] = ''; $GLOBALS['dbs_where_create_table_allowed'] = array('*'); $GLOBALS['dbs_to_test'] = false; $GLOBALS['db_priv'] = true; $GLOBALS['col_priv'] = true; $GLOBALS['table_priv'] = true; $GLOBALS['proc_priv'] = true; } else { $checkUserPrivileges->analyseShowGrant(); } db/login/libraries/mult_submits.inc.php000064400000025323151502156010014226 0ustar00getVirtualTables($db); list($full_query, $reload, $full_query_views) = $multSubmits->getQueryFromSelected( $submit_mult, $table, $selected, $views ); $_url_params = $multSubmits->getUrlParams( $submit_mult, $reload, $action, $db, $table, $selected, $views, isset($original_sql_query)? $original_sql_query : null, isset($original_url_query)? $original_url_query : null ); $response->disable(); $response->addHTML( $multSubmits->getHtmlForCopyMultipleTables($action, $_url_params) ); exit; case 'show_create': $show_create = Template::get( 'database/structure/show_create' ) ->render( array( 'db' => $GLOBALS['db'], 'db_objects' => $selected, 'dbi' => $GLOBALS['dbi'], ) ); // Send response to client. $response->addJSON('message', $show_create); exit; case 'sync_unique_columns_central_list': $centralColsError = $centralColumns->syncUniqueColumns( $selected ); break; case 'delete_unique_columns_central_list': $centralColsError = $centralColumns->deleteColumnsFromList( $selected ); break; case 'make_consistent_with_central_list': $centralColsError = $centralColumns->makeConsistentWithList( $GLOBALS['db'], $selected ); break; } // end switch } elseif (isset($selected_fld) && !empty($selected_fld)) { // coming from table structure view - do something with // selected columns // handled in StructrueController } else { // coming from browsing - do something with selected rows $what = 'row_delete'; $selected = $_REQUEST['rows_to_delete']; } } // end if if (empty($db)) { $db = ''; } if (empty($table)) { $table = ''; } $views = $GLOBALS['dbi']->getVirtualTables($db); /** * Displays the confirmation form if required */ if (!empty($submit_mult) && !empty($what)) { unset($message); if (strlen($table) > 0) { include './libraries/tbl_common.inc.php'; $url_query .= '&goto=tbl_sql.php&back=tbl_sql.php'; } elseif (strlen($db) > 0) { include './libraries/db_common.inc.php'; list( $tables, $num_tables, $total_num_tables, $sub_part, $is_show_stats, $db_is_system_schema, $tooltip_truename, $tooltip_aliasname, $pos ) = Util::getDbInfo($db, isset($sub_part) ? $sub_part : ''); } else { include_once './libraries/server_common.inc.php'; } // Builds the query list($full_query, $reload, $full_query_views) = $multSubmits->getQueryFromSelected( $what, $table, $selected, $views ); // Displays the confirmation form $_url_params = $multSubmits->getUrlParams( $what, $reload, $action, $db, $table, $selected, $views, isset($original_sql_query)? $original_sql_query : null, isset($original_url_query)? $original_url_query : null ); if ($what == 'replace_prefix_tbl' || $what == 'copy_tbl_change_prefix') { $response->disable(); $response->addHTML( $multSubmits->getHtmlForReplacePrefixTable($action, $_url_params) ); } elseif ($what == 'add_prefix_tbl') { $response->disable(); $response->addHTML($multSubmits->getHtmlForAddPrefixTable($action, $_url_params)); } else { $response->addHTML( $multSubmits->getHtmlForOtherActions($what, $action, $_url_params, $full_query) ); } exit; } elseif (! empty($mult_btn) && $mult_btn == __('Yes')) { /** * Executes the query - dropping rows, columns/fields, tables or dbs */ if ($query_type == 'primary_fld') { // Gets table primary key $GLOBALS['dbi']->selectDb($db); $result = $GLOBALS['dbi']->query( 'SHOW KEYS FROM ' . Util::backquote($table) . ';' ); $primary = ''; while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { // Backups the list of primary keys if ($row['Key_name'] == 'PRIMARY') { $primary .= $row['Column_name'] . ', '; } } // end while $GLOBALS['dbi']->freeResult($result); } if ($query_type == 'drop_tbl' || $query_type == 'empty_tbl' || $query_type == 'row_delete' ) { $default_fk_check_value = Util::handleDisableFKCheckInit(); } list( $result, $rebuild_database_list, $reload_ret, $run_parts, $execute_query_later, $sql_query, $sql_query_views ) = $multSubmits->buildOrExecuteQuery( $query_type, $selected, $db, $table, $views, isset($primary) ? $primary : null, isset($from_prefix) ? $from_prefix : null, isset($to_prefix) ? $to_prefix : null ); //update the existed variable if (isset($reload_ret)) { $reload = $reload_ret; } if ($query_type == 'drop_tbl') { if (!empty($sql_query)) { $sql_query .= ';'; } elseif (!empty($sql_query_views)) { $sql_query = $sql_query_views . ';'; unset($sql_query_views); } } // Unset cache values for tables count, issue #14205 if ($query_type === 'drop_tbl' && isset($_SESSION['tmpval'])) { if (isset($_SESSION['tmpval']['table_limit_offset'])) { unset($_SESSION['tmpval']['table_limit_offset']); } if (isset($_SESSION['tmpval']['table_limit_offset_db'])) { unset($_SESSION['tmpval']['table_limit_offset_db']); } } if ($execute_query_later) { $sql = new Sql(); $sql->executeQueryAndSendQueryResponse( null, // analyzed_sql_results false, // is_gotofile $db, // db $table, // table null, // find_real_end null, // sql_query_for_bookmark null, // extra_data null, // message_to_show null, // message null, // sql_data $goto, // goto $pmaThemeImage, // pmaThemeImage null, // disp_query null, // disp_message $query_type, // query_type $sql_query, // sql_query $selected, // selectedTables null // complete_query ); } elseif (!$run_parts) { $GLOBALS['dbi']->selectDb($db); $result = $GLOBALS['dbi']->tryQuery($sql_query); if ($result && !empty($sql_query_views)) { $sql_query .= ' ' . $sql_query_views . ';'; $result = $GLOBALS['dbi']->tryQuery($sql_query_views); unset($sql_query_views); } if (! $result) { $message = Message::error($GLOBALS['dbi']->getError()); } } if ($query_type == 'drop_tbl' || $query_type == 'empty_tbl' || $query_type == 'row_delete' ) { Util::handleDisableFKCheckCleanup($default_fk_check_value); } if ($rebuild_database_list) { // avoid a problem with the database list navigator // when dropping a db from server_databases $GLOBALS['dblist']->databases->build(); } } else { if (isset($submit_mult) && ($submit_mult == 'sync_unique_columns_central_list' || $submit_mult == 'delete_unique_columns_central_list' || $submit_mult == 'add_to_central_columns' || $submit_mult == 'remove_from_central_columns' || $submit_mult == 'make_consistent_with_central_list') ) { if (isset($centralColsError) && $centralColsError !== true) { $message = $centralColsError; } else { $message = Message::success(__('Success!')); } } else { $message = Message::success(__('No change')); } } db/login/libraries/user_preferences.inc.php000064400000004400151502156010015027 0ustar00 'b_tblops', 'Sql' => 'b_sql', 'Navi' => 'b_select', 'Main' => 'b_props', 'Import' => 'b_import', 'Export' => 'b_export'); $content = PhpMyAdmin\Util::getHtmlTab( array( 'link' => 'prefs_manage.php', 'text' => __('Manage your settings') ) ) . "\n"; /* Second authentication factor */ $content .= PhpMyAdmin\Util::getHtmlTab( array( 'link' => 'prefs_twofactor.php', 'text' => __('Two-factor authentication') ) ) . "\n"; $script_name = basename($GLOBALS['PMA_PHP_SELF']); foreach (UserFormList::getAll() as $formset) { $formset_class = UserFormList::get($formset); $tab = array( 'link' => 'prefs_forms.php', 'text' => $formset_class::getName(), 'icon' => $tabs_icons[$formset], 'active' => ($script_name == 'prefs_forms.php' && $formset == $form_param)); $content .= PhpMyAdmin\Util::getHtmlTab($tab, array('form' => $formset)) . "\n"; } echo PhpMyAdmin\Template::get('list/unordered')->render( array( 'id' => 'topmenu2', 'class' => 'user_prefs_tabs', 'content' => $content, ) ); echo '
'; // show "configuration saved" message and reload navigation panel if needed if (!empty($_GET['saved'])) { Message::rawSuccess(__('Configuration has been saved.'))->display(); } // warn about using session storage for settings $relation = new Relation(); $cfgRelation = $relation->getRelationsParam(); if (! $cfgRelation['userconfigwork']) { $msg = __( 'Your preferences will be saved for current session only. Storing them ' . 'permanently requires %sphpMyAdmin configuration storage%s.' ); $msg = Sanitize::sanitize( sprintf($msg, '[doc@linked-tables]', '[/doc]') ); Message::notice($msg)->display(); } db/login/libraries/replication.inc.php000064400000010541151502156010014004 0ustar00fetchResult('SHOW MASTER STATUS'); /** * set selected master server */ if (! empty($_POST['master_connection'])) { /** * check for multi-master replication functionality */ $server_slave_multi_replication = $GLOBALS['dbi']->fetchResult( 'SHOW ALL SLAVES STATUS' ); if ($server_slave_multi_replication) { $GLOBALS['dbi']->query( "SET @@default_master_connection = '" . $GLOBALS['dbi']->escapeString( $_POST['master_connection'] ) . "'" ); $GLOBALS['url_params']['master_connection'] = $_POST['master_connection']; } } /** * get slave replication from server */ $server_slave_replication = $GLOBALS['dbi']->fetchResult('SHOW SLAVE STATUS'); /** * replication types */ $replication_types = array('master', 'slave'); /** * define variables for master status */ $master_variables = array( 'File', 'Position', 'Binlog_Do_DB', 'Binlog_Ignore_DB', ); /** * Define variables for slave status */ $slave_variables = array( 'Slave_IO_State', 'Master_Host', 'Master_User', 'Master_Port', 'Connect_Retry', 'Master_Log_File', 'Read_Master_Log_Pos', 'Relay_Log_File', 'Relay_Log_Pos', 'Relay_Master_Log_File', 'Slave_IO_Running', 'Slave_SQL_Running', 'Replicate_Do_DB', 'Replicate_Ignore_DB', 'Replicate_Do_Table', 'Replicate_Ignore_Table', 'Replicate_Wild_Do_Table', 'Replicate_Wild_Ignore_Table', 'Last_Errno', 'Last_Error', 'Skip_Counter', 'Exec_Master_Log_Pos', 'Relay_Log_Space', 'Until_Condition', 'Until_Log_File', 'Until_Log_Pos', 'Master_SSL_Allowed', 'Master_SSL_CA_File', 'Master_SSL_CA_Path', 'Master_SSL_Cert', 'Master_SSL_Cipher', 'Master_SSL_Key', 'Seconds_Behind_Master', ); /** * define important variables, which need to be watched for * correct running of replication in slave mode * * @usedby PhpMyAdmin\ReplicationGui::getHtmlForReplicationStatusTable() */ // TODO change to regexp or something, to allow for negative match. // To e.g. highlight 'Last_Error' // $slave_variables_alerts = array( 'Slave_IO_Running' => 'No', 'Slave_SQL_Running' => 'No', ); $slave_variables_oks = array( 'Slave_IO_Running' => 'Yes', 'Slave_SQL_Running' => 'Yes', ); // check which replication is available and // set $server_{master/slave}_status and assign values // replication info is more easily passed to functions $GLOBALS['replication_info'] = array(); foreach ($replication_types as $type) { if (count(${"server_{$type}_replication"}) > 0) { $GLOBALS['replication_info'][$type]['status'] = true; } else { $GLOBALS['replication_info'][$type]['status'] = false; } if ($GLOBALS['replication_info'][$type]['status']) { if ($type == "master") { Replication::fillInfo( $type, 'Do_DB', $server_master_replication[0], 'Binlog_Do_DB' ); Replication::fillInfo( $type, 'Ignore_DB', $server_master_replication[0], 'Binlog_Ignore_DB' ); } elseif ($type == "slave") { Replication::fillInfo( $type, 'Do_DB', $server_slave_replication[0], 'Replicate_Do_DB' ); Replication::fillInfo( $type, 'Ignore_DB', $server_slave_replication[0], 'Replicate_Ignore_DB' ); Replication::fillInfo( $type, 'Do_Table', $server_slave_replication[0], 'Replicate_Do_Table' ); Replication::fillInfo( $type, 'Ignore_Table', $server_slave_replication[0], 'Replicate_Ignore_Table' ); Replication::fillInfo( $type, 'Wild_Do_Table', $server_slave_replication[0], 'Replicate_Wild_Do_Table' ); Replication::fillInfo( $type, 'Wild_Ignore_Table', $server_slave_replication[0], 'Replicate_Wild_Ignore_Table' ); } } } db/login/libraries/hash.lib.php000064400000001112151502156010012405 0ustar00 0] Slow_queries / Questions * 100 value >= 5 There is a lot of slow queries compared to the overall amount of Queries. You might want to increase {long_query_time} or optimize the queries listed in the slow query log The slow query rate should be below 5%, your value is %s%. | round(value,2) rule 'Slow query rate' [Questions > 0] (Slow_queries / Questions * 100) / Uptime value * 60 * 60 > 1 There is a high percentage of slow queries compared to the server uptime. You might want to increase {long_query_time} or optimize the queries listed in the slow query log You have a slow query rate of %s per hour, you should have less than 1% per hour. | ADVISOR_bytime(value,2) rule 'Long query time' long_query_time value >= 10 {long_query_time} is set to 10 seconds or more, thus only slow queries that take above 10 seconds are logged. It is suggested to set {long_query_time} to a lower value, depending on your environment. Usually a value of 1-5 seconds is suggested. long_query_time is currently set to %ds. | value rule 'Slow query logging' [PMA_MYSQL_INT_VERSION < 50600] log_slow_queries value == 'OFF' The slow query log is disabled. Enable slow query logging by setting {log_slow_queries} to 'ON'. This will help troubleshooting badly performing queries. log_slow_queries is set to 'OFF' rule 'Slow query logging' [PMA_MYSQL_INT_VERSION >= 50600] slow_query_log value == 'OFF' The slow query log is disabled. Enable slow query logging by setting {slow_query_log} to 'ON'. This will help troubleshooting badly performing queries. slow_query_log is set to 'OFF' # # versions rule 'Release Series' version substr(value,0,2) <= '5.' && substr(value,2,1) < 1 The MySQL server version less than 5.1. You should upgrade, as MySQL 5.1 has improved performance, and MySQL 5.5 even more so. Current version: %s | value rule 'Minor Version' [! fired('Release Series')] version substr(value,0,2) <= '5.' && substr(value,2,1) <= 1 && substr(value,4,2) < 30 Version less than 5.1.30 (the first GA release of 5.1). You should upgrade, as recent versions of MySQL 5.1 have improved performance and MySQL 5.5 even more so. Current version: %s | value rule 'Minor Version' [! fired('Release Series')] version substr(value,0,1) == 5 && substr(value,2,1) == 5 && substr(value,4,2) < 8 Version less than 5.5.8 (the first GA release of 5.5). You should upgrade, to a stable version of MySQL 5.5. Current version: %s | value rule 'Distribution' version_comment preg_match('/source/i',value) Version is compiled from source, not a MySQL official binary. If you did not compile from source, you may be using a package modified by a distribution. The MySQL manual only is accurate for official MySQL binaries, not any package distributions (such as RedHat, Debian/Ubuntu etc). 'source' found in version_comment rule 'Distribution' version_comment preg_match('/percona/i',value) The MySQL manual only is accurate for official MySQL binaries. Percona documentation is at https://www.percona.com/software/documentation/ 'percona' found in version_comment rule 'MySQL Architecture' system_memory value > 3072*1024 && !preg_match('/64/',version_compile_machine) && !preg_match('/64/',version_compile_os) MySQL is not compiled as a 64-bit package. Your memory capacity is above 3 GiB (assuming the Server is on localhost), so MySQL might not be able to access all of your memory. You might want to consider installing the 64-bit version of MySQL. Available memory on this host: %s | ADVISOR_formatByteDown(value*1024, 2, 2) # # Query cache rule 'Query caching method' [!fired('Query cache disabled')] Questions / Uptime value > 100 Suboptimal caching method. You are using the MySQL Query cache with a fairly high traffic database. It might be worth considering to use memcached instead of the MySQL Query cache, especially if you have multiple slaves. The query cache is enabled and the server receives %d queries per second. This rule fires if there is more than 100 queries per second. | round(value,1) # # Sorts rule 'Percentage of sorts that cause temporary tables' [Sort_scan + Sort_range > 0] Sort_merge_passes / (Sort_scan + Sort_range) * 100 value > 10 Too many sorts are causing temporary tables. Consider increasing {sort_buffer_size} and/or {read_rnd_buffer_size}, depending on your system memory limits. %s% of all sorts cause temporary tables, this value should be lower than 10%. | round(value,1) rule 'Rate of sorts that cause temporary tables' Sort_merge_passes / Uptime value * 60 * 60 > 1 Too many sorts are causing temporary tables. Consider increasing {sort_buffer_size} and/or {read_rnd_buffer_size}, depending on your system memory limits. Temporary tables average: %s, this value should be less than 1 per hour. | ADVISOR_bytime(value,2) rule 'Sort rows' Sort_rows / Uptime value * 60 >= 1 There are lots of rows being sorted. While there is nothing wrong with a high amount of row sorting, you might want to make sure that the queries which require a lot of sorting use indexed columns in the ORDER BY clause, as this will result in much faster sorting. Sorted rows average: %s | ADVISOR_bytime(value,2) # Joins, scans rule 'Rate of joins without indexes' (Select_range_check + Select_scan + Select_full_join) / Uptime value * 60 * 60 > 1 There are too many joins without indexes. This means that joins are doing full table scans. Adding indexes for the columns being used in the join conditions will greatly speed up table joins. Table joins average: %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) rule 'Rate of reading first index entry' Handler_read_first / Uptime value * 60 * 60 > 1 The rate of reading the first index entry is high. This usually indicates frequent full index scans. Full index scans are faster than table scans but require lots of CPU cycles in big tables, if those tables that have or had high volumes of UPDATEs and DELETEs, running 'OPTIMIZE TABLE' might reduce the amount of and/or speed up full index scans. Other than that full index scans can only be reduced by rewriting queries. Index scans average: %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) rule 'Rate of reading fixed position' Handler_read_rnd / Uptime value * 60 * 60 > 1 The rate of reading data from a fixed position is high. This indicates that many queries need to sort results and/or do a full table scan, including join queries that do not use indexes. Add indexes where applicable. Rate of reading fixed position average: %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) rule 'Rate of reading next table row' Handler_read_rnd_next / Uptime value * 60 * 60 > 1 The rate of reading the next table row is high. This indicates that many queries are doing full table scans. Add indexes where applicable. Rate of reading next table row: %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) # temp tables rule 'Different tmp_table_size and max_heap_table_size' tmp_table_size - max_heap_table_size value !=0 {tmp_table_size} and {max_heap_table_size} are not the same. If you have deliberately changed one of either: The server uses the lower value of either to determine the maximum size of in-memory tables. So if you wish to increase the in-memory table limit you will have to increase the other value as well. Current values are tmp_table_size: %s, max_heap_table_size: %s | ADVISOR_formatByteDown(tmp_table_size, 2, 2), ADVISOR_formatByteDown(max_heap_table_size, 2, 2) rule 'Percentage of temp tables on disk' [Created_tmp_tables + Created_tmp_disk_tables > 0] Created_tmp_disk_tables / (Created_tmp_tables + Created_tmp_disk_tables) * 100 value > 25 Many temporary tables are being written to disk instead of being kept in memory. Increasing {max_heap_table_size} and {tmp_table_size} might help. However some temporary tables are always being written to disk, independent of the value of these variables. To eliminate these you will have to rewrite your queries to avoid those conditions (Within a temporary table: Presence of a BLOB or TEXT column or presence of a column bigger than 512 bytes) as mentioned in the beginning of an Article by the Pythian Group %s% of all temporary tables are being written to disk, this value should be below 25% | round(value,1) rule 'Temp disk rate' [!fired('Percentage of temp tables on disk')] Created_tmp_disk_tables / Uptime value * 60 * 60 > 1 Many temporary tables are being written to disk instead of being kept in memory. Increasing {max_heap_table_size} and {tmp_table_size} might help. However some temporary tables are always being written to disk, independent of the value of these variables. To eliminate these you will have to rewrite your queries to avoid those conditions (Within a temporary table: Presence of a BLOB or TEXT column or presence of a column bigger than 512 bytes) as mentioned in the MySQL Documentation Rate of temporary tables being written to disk: %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) # # MyISAM index cache rule 'MyISAM key buffer size' key_buffer_size value == 0 Key buffer is not initialized. No MyISAM indexes will be cached. Set {key_buffer_size} depending on the size of your MyISAM indexes. 64M is a good start. key_buffer_size is 0 rule 'Max % MyISAM key buffer ever used' [key_buffer_size > 0] Key_blocks_used * key_cache_block_size / key_buffer_size * 100 value < 95 MyISAM key buffer (index cache) % used is low. You may need to decrease the size of {key_buffer_size}, re-examine your tables to see if indexes have been removed, or examine queries and expectations about what indexes are being used. max % MyISAM key buffer ever used: %s%, this value should be above 95% | round(value,1) # Don't fire if above rule fired - we don't need the same advice twice rule 'Percentage of MyISAM key buffer used' [key_buffer_size > 0 && !fired('Max % MyISAM key buffer ever used')] ( 1 - Key_blocks_unused * key_cache_block_size / key_buffer_size) * 100 value < 95 MyISAM key buffer (index cache) % used is low. You may need to decrease the size of {key_buffer_size}, re-examine your tables to see if indexes have been removed, or examine queries and expectations about what indexes are being used. % MyISAM key buffer used: %s%, this value should be above 95% | round(value,1) rule 'Percentage of index reads from memory' [Key_read_requests > 0] 100 - (Key_reads / Key_read_requests * 100) value < 95 The % of indexes that use the MyISAM key buffer is low. You may need to increase {key_buffer_size}. Index reads from memory: %s%, this value should be above 95% | round(value,1) # # other caches rule 'Rate of table open' Opened_tables / Uptime value*60*60 > 10 The rate of opening tables is high. Opening tables requires disk I/O which is costly. Increasing {table_open_cache} might avoid this. Opened table rate: %s, this value should be less than 10 per hour | ADVISOR_bytime(value,2) rule 'Percentage of used open files limit' Open_files / open_files_limit * 100 value > 85 The number of open files is approaching the max number of open files. You may get a "Too many open files" error. Consider increasing {open_files_limit}, and check the error log when restarting after changing {open_files_limit}. The number of opened files is at %s% of the limit. It should be below 85% | round(value,1) rule 'Rate of open files' Open_files / Uptime value * 60 * 60 > 5 The rate of opening files is high. Consider increasing {open_files_limit}, and check the error log when restarting after changing {open_files_limit}. Opened files rate: %s, this value should be less than 5 per hour | ADVISOR_bytime(value,2) rule 'Immediate table locks %' [Table_locks_waited + Table_locks_immediate > 0] Table_locks_immediate / (Table_locks_waited + Table_locks_immediate) * 100 value < 95 Too many table locks were not granted immediately. Optimize queries and/or use InnoDB to reduce lock wait. Immediate table locks: %s%, this value should be above 95% | round(value,1) rule 'Table lock wait rate' Table_locks_waited / Uptime value * 60 * 60 > 1 Too many table locks were not granted immediately. Optimize queries and/or use InnoDB to reduce lock wait. Table lock wait rate: %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) rule 'Thread cache' thread_cache_size value < 1 Thread cache is disabled, resulting in more overhead from new connections to MySQL. Enable the thread cache by setting {thread_cache_size} > 0. The thread cache is set to 0 rule 'Thread cache hit rate %' [thread_cache_size > 0] 100 - Threads_created / Connections value < 80 Thread cache is not efficient. Increase {thread_cache_size}. Thread cache hitrate: %s%, this value should be above 80% | round(value,1) rule 'Threads that are slow to launch' [slow_launch_time > 0] Slow_launch_threads value > 0 There are too many threads that are slow to launch. This generally happens in case of general system overload as it is pretty simple operations. You might want to monitor your system load carefully. %s thread(s) took longer than %s seconds to start, it should be 0 | value, slow_launch_time rule 'Slow launch time' slow_launch_time value > 2 Slow_launch_time is above 2s. Set {slow_launch_time} to 1s or 2s to correctly count threads that are slow to launch. slow_launch_time is set to %s | value # #Connections rule 'Percentage of used connections' Max_used_connections / max_connections * 100 value > 80 The maximum amount of used connections is getting close to the value of {max_connections}. Increase {max_connections}, or decrease {wait_timeout} so that connections that do not close database handlers properly get killed sooner. Make sure the code closes database handlers properly. Max_used_connections is at %s% of max_connections, it should be below 80% | round(value,1) rule 'Percentage of aborted connections' Aborted_connects / Connections * 100 value > 1 Too many connections are aborted. Connections are usually aborted when they cannot be authorized. This article might help you track down the source. %s% of all connections are aborted. This value should be below 1% | round(value,1) rule 'Rate of aborted connections' Aborted_connects / Uptime value * 60 * 60 > 1 Too many connections are aborted. Connections are usually aborted when they cannot be authorized. This article might help you track down the source. Aborted connections rate is at %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) rule 'Percentage of aborted clients' Aborted_clients / Connections * 100 value > 2 Too many clients are aborted. Clients are usually aborted when they did not close their connection to MySQL properly. This can be due to network issues or code not closing a database handler properly. Check your network and code. %s% of all clients are aborted. This value should be below 2% | round(value,1) rule 'Rate of aborted clients' Aborted_clients / Uptime value * 60 * 60 > 1 Too many clients are aborted. Clients are usually aborted when they did not close their connection to MySQL properly. This can be due to network issues or code not closing a database handler properly. Check your network and code. Aborted client rate is at %s, this value should be less than 1 per hour | ADVISOR_bytime(value,2) # # InnoDB rule 'Is InnoDB disabled?' [PMA_MYSQL_INT_VERSION < 50600] have_innodb value != "YES" You do not have InnoDB enabled. InnoDB is usually the better choice for table engines. have_innodb is set to 'value' rule 'InnoDB log size' [innodb_buffer_pool_size > 0] innodb_log_file_size / innodb_buffer_pool_size * 100 value < 20 && innodb_log_file_size / (1024 * 1024) < 256 The InnoDB log file size is not an appropriate size, in relation to the InnoDB buffer pool. Especially on a system with a lot of writes to InnoDB tables you should set {innodb_log_file_size} to 25% of {innodb_buffer_pool_size}. However the bigger this value, the longer the recovery time will be when database crashes, so this value should not be set much higher than 256 MiB. Please note however that you cannot simply change the value of this variable. You need to shutdown the server, remove the InnoDB log files, set the new value in my.cnf, start the server, then check the error logs if everything went fine. See also this blog entry Your InnoDB log size is at %s% in relation to the InnoDB buffer pool size, it should not be below 20% | round(value,1) rule 'Max InnoDB log size' [innodb_buffer_pool_size > 0 && innodb_log_file_size / innodb_buffer_pool_size * 100 < 30] innodb_log_file_size / (1024 * 1024) value > 256 The InnoDB log file size is inadequately large. It is usually sufficient to set {innodb_log_file_size} to 25% of the size of {innodb_buffer_pool_size}. A very big {innodb_log_file_size} slows down the recovery time after a database crash considerably. See also this Article. You need to shutdown the server, remove the InnoDB log files, set the new value in my.cnf, start the server, then check the error logs if everything went fine. See also this blog entry Your absolute InnoDB log size is %s MiB | round(value,1) rule 'InnoDB buffer pool size' [system_memory > 0] innodb_buffer_pool_size / system_memory * 100 value < 60 Your InnoDB buffer pool is fairly small. The InnoDB buffer pool has a profound impact on performance for InnoDB tables. Assign all your remaining memory to this buffer. For database servers that use solely InnoDB as storage engine and have no other services (e.g. a web server) running, you may set this as high as 80% of your available memory. If that is not the case, you need to carefully assess the memory consumption of your other services and non-InnoDB-Tables and set this variable accordingly. If it is set too high, your system will start swapping, which decreases performance significantly. See also this article You are currently using %s% of your memory for the InnoDB buffer pool. This rule fires if you are assigning less than 60%, however this might be perfectly adequate for your system if you don't have much InnoDB tables or other services running on the same machine. | value # # other rule 'MyISAM concurrent inserts' concurrent_insert value === 0 || value === 'NEVER' Enable {concurrent_insert} by setting it to 1 Setting {concurrent_insert} to 1 reduces contention between readers and writers for a given table. See also MySQL Documentation concurrent_insert is set to 0 # INSERT DELAYED USAGE #Delayed_errors 0 #Delayed_insert_threads 0 #Delayed_writes 0 #Not_flushed_delayed_rows db/login/libraries/vendor_config.php000064400000003600151502156010013543 0ustar00 $db ); if ($action == 'tbl_create.php') { $form_params['reload'] = 1; } else { if ($action == 'tbl_addfield.php') { $form_params = array_merge( $form_params, array( 'field_where' => Util::getValueByKey($_POST, 'field_where')) ); if (isset($_POST['field_where'])) { $form_params['after_field'] = $_POST['after_field']; } } $form_params['table'] = $table; } if (isset($num_fields)) { $form_params['orig_num_fields'] = $num_fields; } $form_params = array_merge( $form_params, array( 'orig_field_where' => Util::getValueByKey($_POST, 'field_where'), 'orig_after_field' => Util::getValueByKey($_POST, 'after_field'), ) ); if (isset($selected) && is_array($selected)) { foreach ($selected as $o_fld_nr => $o_fld_val) { $form_params['selected[' . $o_fld_nr . ']'] = $o_fld_val; } } $is_backup = ($action != 'tbl_create.php' && $action != 'tbl_addfield.php'); $cfgRelation = $relation->getRelationsParam(); $comments_map = $relation->getComments($db, $table); $move_columns = array(); if (isset($fields_meta)) { /** @var PhpMyAdmin\DatabaseInterface $dbi */ $dbi = Container::getDefaultContainer()->get('dbi'); $move_columns = $dbi->getTable($db, $table)->getColumnsMeta(); } $available_mime = array(); if ($cfgRelation['mimework'] && $GLOBALS['cfg']['BrowseMIME']) { $mime_map = Transformations::getMIME($db, $table); $available_mime = Transformations::getAvailableMIMEtypes(); } // workaround for field_fulltext, because its submitted indices contain // the index as a value, not a key. Inserted here for easier maintenance // and less code to change in existing files. if (isset($field_fulltext) && is_array($field_fulltext)) { foreach ($field_fulltext as $fulltext_nr => $fulltext_indexkey) { $submit_fulltext[$fulltext_indexkey] = $fulltext_indexkey; } } if (isset($_POST['submit_num_fields']) || isset($_POST['submit_partition_change']) ) { //if adding new fields, set regenerate to keep the original values $regenerate = 1; } $foreigners = $relation->getForeigners($db, $table, '', 'foreign'); $child_references = null; // From MySQL 5.6.6 onwards columns with foreign keys can be renamed. // Hence, no need to get child references if ($GLOBALS['dbi']->getVersion() < 50606) { $child_references = $relation->getChildReferences($db, $table); } for ($columnNumber = 0; $columnNumber < $num_fields; $columnNumber++) { $type = ''; $length = ''; $columnMeta = array(); $submit_attribute = null; $extracted_columnspec = array(); if (!empty($regenerate)) { $columnMeta = array_merge( $columnMeta, array( 'Field' => Util::getValueByKey( $_POST, "field_name.${columnNumber}", false ), 'Type' => Util::getValueByKey( $_POST, "field_type.${columnNumber}", false ), 'Collation' => Util::getValueByKey( $_POST, "field_collation.${columnNumber}", '' ), 'Null' => Util::getValueByKey( $_POST, "field_null.${columnNumber}", '' ), 'DefaultType' => Util::getValueByKey( $_POST, "field_default_type.${columnNumber}", 'NONE' ), 'DefaultValue' => Util::getValueByKey( $_POST, "field_default_value.${columnNumber}", '' ), 'Extra' => Util::getValueByKey( $_POST, "field_extra.${columnNumber}", false ), 'Virtuality' => Util::getValueByKey( $_POST, "field_virtuality.${columnNumber}", '' ), 'Expression' => Util::getValueByKey( $_POST, "field_expression.${columnNumber}", '' ), ) ); $columnMeta['Key'] = ''; $parts = explode( '_', Util::getValueByKey($_POST, "field_key.${columnNumber}", ''), 2 ); if (count($parts) == 2 && $parts[1] == $columnNumber) { $columnMeta['Key'] = Util::getValueByKey( array( 'primary' => 'PRI', 'index' => 'MUL', 'unique' => 'UNI', 'fulltext' => 'FULLTEXT', 'spatial' => 'SPATIAL' ), $parts[0], '' ); } $columnMeta['Comment'] = isset($submit_fulltext[$columnNumber]) && ($submit_fulltext[$columnNumber] == $columnNumber) ? 'FULLTEXT' : false; switch ($columnMeta['DefaultType']) { case 'NONE': $columnMeta['Default'] = null; break; case 'USER_DEFINED': $columnMeta['Default'] = $columnMeta['DefaultValue']; break; case 'NULL': case 'CURRENT_TIMESTAMP': case 'current_timestamp()': $columnMeta['Default'] = $columnMeta['DefaultType']; break; } $length = Util::getValueByKey($_POST, "field_length.${columnNumber}", $length); $submit_attribute = Util::getValueByKey( $_POST, "field_attribute.${columnNumber}", false ); $comments_map[$columnMeta['Field']] = Util::getValueByKey( $_POST, "field_comments.${columnNumber}" ); $mime_map[$columnMeta['Field']] = array_merge( isset($mime_map[$columnMeta['Field']]) ? $mime_map[$columnMeta['Field']] : [], array( 'mimetype' => Util::getValueByKey($_POST, "field_mimetype.${$columnNumber}"), 'transformation' => Util::getValueByKey( $_POST, "field_transformation.${$columnNumber}" ), 'transformation_options' => Util::getValueByKey( $_POST, "field_transformation_options.${$columnNumber}" ), ) ); } elseif (isset($fields_meta[$columnNumber])) { $columnMeta = $fields_meta[$columnNumber]; $virtual = array( 'VIRTUAL', 'PERSISTENT', 'VIRTUAL GENERATED', 'STORED GENERATED' ); if (in_array($columnMeta['Extra'], $virtual)) { $tableObj = new Table($GLOBALS['table'], $GLOBALS['db']); $expressions = $tableObj->getColumnGenerationExpression( $columnMeta['Field'] ); $columnMeta['Expression'] = $expressions[$columnMeta['Field']]; } switch ($columnMeta['Default']) { case null: if (is_null($columnMeta['Default'])) { // null if ($columnMeta['Null'] == 'YES') { $columnMeta['DefaultType'] = 'NULL'; $columnMeta['DefaultValue'] = ''; } else { $columnMeta['DefaultType'] = 'NONE'; $columnMeta['DefaultValue'] = ''; } } else { // empty $columnMeta['DefaultType'] = 'USER_DEFINED'; $columnMeta['DefaultValue'] = $columnMeta['Default']; } break; case 'CURRENT_TIMESTAMP': case 'current_timestamp()': $columnMeta['DefaultType'] = 'CURRENT_TIMESTAMP'; $columnMeta['DefaultValue'] = ''; break; default: $columnMeta['DefaultType'] = 'USER_DEFINED'; if ('text' === substr($columnMeta['Type'], -4)) { $textDefault = substr($columnMeta['Default'], 1, -1); $columnMeta['Default'] = stripcslashes($textDefault !== false ? $textDefault : $columnMeta['Default']); } $columnMeta['DefaultValue'] = $columnMeta['Default']; break; } } if (isset($columnMeta['Type'])) { $extracted_columnspec = Util::extractColumnSpec( $columnMeta['Type'] ); if ($extracted_columnspec['type'] == 'bit') { $columnMeta['Default'] = Util::convertBitDefaultValue($columnMeta['Default']); } $type = $extracted_columnspec['type']; if ($length == '') { $length = $extracted_columnspec['spec_in_brackets']; } } else { // creating a column $columnMeta['Type'] = ''; } // Variable tell if current column is bound in a foreign key constraint or not. // MySQL version from 5.6.6 allow renaming columns with foreign keys if (isset($columnMeta['Field']) && isset($form_params['table']) && $GLOBALS['dbi']->getVersion() < 50606 ) { $columnMeta['column_status'] = $relation->checkChildForeignReferences( $form_params['db'], $form_params['table'], $columnMeta['Field'], $foreigners, $child_references ); } // some types, for example longtext, are reported as // "longtext character set latin7" when their charset and / or collation // differs from the ones of the corresponding database. // rtrim the type, for cases like "float unsigned" $type = rtrim( preg_replace('/[\s]character set[\s][\S]+/', '', $type) ); /** * old column attributes */ if ($is_backup) { // old column name if (isset($columnMeta['Field'])) { $form_params['field_orig[' . $columnNumber . ']'] = $columnMeta['Field']; if (isset($columnMeta['column_status']) && !$columnMeta['column_status']['isEditable'] ) { $form_params['field_name[' . $columnNumber . ']'] = $columnMeta['Field']; } } else { $form_params['field_orig[' . $columnNumber . ']'] = ''; } // old column type if (isset($columnMeta['Type'])) { // keep in uppercase because the new type will be in uppercase $form_params['field_type_orig[' . $columnNumber . ']'] = mb_strtoupper($type); if (isset($columnMeta['column_status']) && !$columnMeta['column_status']['isEditable'] ) { $form_params['field_type[' . $columnNumber . ']'] = mb_strtoupper($type); } } else { $form_params['field_type_orig[' . $columnNumber . ']'] = ''; } // old column length $form_params['field_length_orig[' . $columnNumber . ']'] = $length; // old column default $form_params = array_merge( $form_params, array( "field_default_value_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Default', '' ), "field_default_type_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'DefaultType', '' ), "field_collation_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Collation', '' ), "field_attribute_orig[${columnNumber}]" => trim( Util::getValueByKey($extracted_columnspec, 'attribute', '') ), "field_null_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Null', '' ), "field_extra_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Extra', '' ), "field_comments_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Comment', '' ), "field_virtuality_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Virtuality', '' ), "field_expression_orig[${columnNumber}]" => Util::getValueByKey( $columnMeta, 'Expression', '' ), ) ); } $content_cells[$columnNumber] = array( 'column_number' => $columnNumber, 'column_meta' => $columnMeta, 'type_upper' => mb_strtoupper($type), 'length_values_input_size' => $length_values_input_size, 'length' => $length, 'extracted_columnspec' => $extracted_columnspec, 'submit_attribute' => $submit_attribute, 'comments_map' => $comments_map, 'fields_meta' => isset($fields_meta) ? $fields_meta : null, 'is_backup' => $is_backup, 'move_columns' => $move_columns, 'cfg_relation' => $cfgRelation, 'available_mime' => $available_mime, 'mime_map' => isset($mime_map) ? $mime_map : array() ); } // end for include 'libraries/tbl_partition_definition.inc.php'; $html = Template::get('columns_definitions/column_definitions_form')->render([ 'is_backup' => $is_backup, 'fields_meta' => isset($fields_meta) ? $fields_meta : null, 'mimework' => $cfgRelation['mimework'], 'action' => $action, 'form_params' => $form_params, 'content_cells' => $content_cells, 'partition_details' => $partitionDetails, 'primary_indexes' => isset($_POST['primary_indexes']) ? $_POST['primary_indexes'] : null, 'unique_indexes' => isset($_POST['unique_indexes']) ? $_POST['unique_indexes'] : null, 'indexes' => isset($_POST['indexes']) ? $_POST['indexes'] : null, 'fulltext_indexes' => isset($_POST['fulltext_indexes']) ? $_POST['fulltext_indexes'] : null, 'spatial_indexes' => isset($_POST['spatial_indexes']) ? $_POST['spatial_indexes'] : null, 'table' => isset($_POST['table']) ? $_POST['table'] : null, 'comment' => isset($_POST['comment']) ? $_POST['comment'] : null, 'tbl_collation' => isset($_POST['tbl_collation']) ? $_POST['tbl_collation'] : null, 'tbl_storage_engine' => isset($_POST['tbl_storage_engine']) ? $_POST['tbl_storage_engine'] : null, 'connection' => isset($_POST['connection']) ? $_POST['connection'] : null, 'change_column' => isset($_POST['change_column']) ? $_POST['change_column'] : null, 'is_virtual_columns_supported' => Util::isVirtualColumnsSupported(), 'browse_mime' => isset($GLOBALS['cfg']['BrowseMIME']) ? $GLOBALS['cfg']['BrowseMIME'] : null, 'server_type' => Util::getServerType(), 'max_rows' => intval($GLOBALS['cfg']['MaxRows']), 'char_editing' => isset($GLOBALS['cfg']['CharEditing']) ? $GLOBALS['cfg']['CharEditing'] : null, 'attribute_types' => $GLOBALS['dbi']->types->getAttributes(), 'privs_available' => ((isset($GLOBALS['col_priv']) ? $GLOBALS['col_priv'] : false) && (isset($GLOBALS['is_reload_priv']) ? $GLOBALS['is_reload_priv'] : false) ), 'max_length' => $GLOBALS['dbi']->getVersion() >= 50503 ? 1024 : 255, 'have_partitioning' => Partition::havePartitioning(), 'dbi' => $GLOBALS['dbi'], 'disable_is' => $GLOBALS['cfg']['Server']['DisableIS'], ]); unset($form_params); $response = Response::getInstance(); $response->getHeader()->getScripts()->addFiles( array( 'vendor/jquery/jquery.uitablefilter.js', 'indexes.js' ) ); $response->addHTML($html); db/login/libraries/special_schema_links.inc.php000064400000042735151502156010015645 0ustar00 array( * // Table name * 'db' => array( * // Column name * 'user' => array( * // Main url param (can be an array where represent sql) * 'link_param' => 'username', * // Other url params * 'link_dependancy_params' => array( * 0 => array( * // URL parameter name * // (can be array where url param has static value) * 'param_info' => 'hostname', * // Column name related to url param * 'column_name' => 'host' * ) * ), * // Page to link * 'default_page' => './server_privileges.php' * ) * ) * ) * ); * */ $GLOBALS['special_schema_links'] = array( 'mysql' => array( 'columns_priv' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'host' ) ), 'default_page' => './server_privileges.php' ), 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'Db' ), ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'column_name' => array( 'link_param' => 'field', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'Db' ), 1 => array( 'param_info' => 'table', 'column_name' => 'Table_name' ) ), 'default_page' => './tbl_structure.php?change_column=1' ), ), 'db' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'host' ) ), 'default_page' => './server_privileges.php' ) ), 'event' => array( 'name' => array( 'link_param' => 'item_name', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'db' ) ), 'default_page' => './db_events.php?edit_item=1' ), ), 'innodb_index_stats' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'database_name' ), ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'index_name' => array( 'link_param' => 'index', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'database_name' ), 1 => array( 'param_info' => 'table', 'column_name' => 'table_name' ) ), 'default_page' => './tbl_structure.php' ), ), 'innodb_table_stats' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'database_name' ), ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), ), 'proc' => array( 'name' => array( 'link_param' => 'item_name', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'db' ), 1 => array( 'param_info' => 'item_type', 'column_name' => 'type' ) ), 'default_page' => './db_routines.php?edit_item=1' ), 'specific_name' => array( 'link_param' => 'item_name', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'db' ), 1 => array( 'param_info' => 'item_type', 'column_name' => 'type' ) ), 'default_page' => './db_routines.php?edit_item=1' ), ), 'proc_priv' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'Host' ) ), 'default_page' => './server_privileges.php' ), 'routine_name' => array( 'link_param' => 'item_name', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'Db' ), 1 => array( 'param_info' => 'item_type', 'column_name' => 'Routine_type' ) ), 'default_page' => './db_routines.php?edit_item=1' ), ), 'proxies_priv' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'Host' ) ), 'default_page' => './server_privileges.php' ), ), 'tables_priv' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'Host' ) ), 'default_page' => './server_privileges.php' ), 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'Db' ), ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), ), 'user' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'host' ) ), 'default_page' => './server_privileges.php' ) ) ), 'information_schema' => array( 'columns' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'column_name' => array( 'link_param' => 'field', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ), 1 => array( 'param_info' => 'table', 'column_name' => 'table_name' ) ), 'default_page' => './tbl_structure.php?change_column=1' ) ), 'key_column_usage' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'constraint_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'column_name' => array( 'link_param' => 'field', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ), 1 => array( 'param_info' => 'table', 'column_name' => 'table_name' ) ), 'default_page' => './tbl_structure.php?change_column=1' ), 'referenced_table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'referenced_table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'referenced_column_name' => array( 'link_param' => 'field', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'referenced_table_schema' ), 1 => array( 'param_info' => 'table', 'column_name' => 'referenced_table_name' ) ), 'default_page' => './tbl_structure.php?change_column=1' ) ), 'partitions' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ) ), 'processlist' => array( 'user' => array( 'link_param' => 'username', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'hostname', 'column_name' => 'host' ) ), 'default_page' => './server_privileges.php' ) ), 'referential_constraints' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'constraint_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'referenced_table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'constraint_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ) ), 'routines' => array( 'routine_name' => array( 'link_param' => 'item_name', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'routine_schema' ), 1 => array( 'param_info' => 'item_type', 'column_name' => 'routine_type' ) ), 'default_page' => './db_routines.php' ), ), 'schemata' => array( 'schema_name' => array( 'link_param' => 'db', 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ) ), 'statistics' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), 'column_name' => array( 'link_param' => 'field', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ), 1 => array( 'param_info' => 'table', 'column_name' => 'table_name' ) ), 'default_page' => './tbl_structure.php?change_column=1' ) ), 'tables' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), ), 'table_constraints' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), ), 'views' => array( 'table_name' => array( 'link_param' => 'table', 'link_dependancy_params' => array( 0 => array( 'param_info' => 'db', 'column_name' => 'table_schema' ) ), 'default_page' => './' . PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) ), ), ) ); db/login/libraries/information_schema_relations.inc.php000064400000025716151502156010017432 0ustar00 array( 'DEFAULT_COLLATE_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'COLLATIONS' => array( 'CHARACTER_SET_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ) ), 'COLLATION_CHARACTER_SET_APPLICABILITY' => array( 'CHARACTER_SET_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'COLUMNS' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'CHARACTER_SET_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'COLUMN_PRIVILEGES' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'EVENTS' => array( 'EVENT_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'CHARACTER_SET_CLIENT' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_CONNECTION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'DATABASE_COLLATION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'FILES' => array( 'TABLESPACE_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'TABLESPACES', 'foreign_field' => 'TABLESPACE_NAME' ), 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'COLLATION_CONNECTION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'ENGINE' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'ENGINES', 'foreign_field' => 'ENGINE' ) ), 'KEY_COLUMN_USAGE' => array( 'CONSTRAINT_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'REFERENCED_TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'PARAMETERS' => array( 'SPECIFIC_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'CHARACTER_SET_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'PARTITIONS' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'TABLESPACE_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'TABLESPACES', 'foreign_field' => 'TABLESPACE_NAME' ) ), 'PROCESSLIST' => array( 'DB' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'REFERENTIAL_CONSTRAINTS' => array( 'CONSTRAINT_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'UNIQUE_CONSTRAINT_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'ROUTINES' => array( 'ROUTINE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'CHARACTER_SET_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'CHARACTER_SET_CLIENT' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_CONNECTION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'DATABASE_COLLATION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'SCHEMATA' => array( 'DEFAULT_CHARACTER_SET_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'DEFAULT_COLLATION_NAME' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'SCHEMA_PRIVILEGES' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'STATISTICS' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'INDEX_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'TABLES' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'TABLE_COLLATION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'ENGINE' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'ENGINES', 'foreign_field' => 'ENGINE' ), ), 'TABLESAPCES' => array( 'ENGINE' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'ENGINES', 'foreign_field' => 'ENGINE' ) ), 'TABLE_CONSTRAINTS' => array( 'CONSTRAINT_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'TABLE_PRIVILEGES' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ) ), 'TRIGGERS' => array( 'TRIGGER_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'EVENT_OBJECT_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'CHARACTER_SET_CLIENT' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_CONNECTION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'DATABASE_COLLATION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ), 'VIEWS' => array( 'TABLE_SCHEMA' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'CHARACTER_SET_CLIENT' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'COLLATION_CONNECTION' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ) ) ); db/login/libraries/common.inc.php000064400000033450151502156010012767 0ustar00 Currently installed version is: ' . phpversion() ); } /** * for verification in all procedural scripts under libraries */ define('PHPMYADMIN', true); /** * Load vendor configuration. */ require_once './libraries/vendor_config.php'; /** * Load hash polyfill. */ require_once './libraries/hash.lib.php'; /** * Activate autoloader */ if (! @is_readable(AUTOLOAD_FILE)) { die( 'File ' . AUTOLOAD_FILE . ' missing or not readable.
' . 'Most likely you did not run Composer to ' . 'install library files.' ); } require_once AUTOLOAD_FILE; /** * Load gettext functions. */ PhpMyAdmin\MoTranslator\Loader::loadFunctions(); /** * initialize the error handler */ $GLOBALS['error_handler'] = new ErrorHandler(); /** * Warning about missing PHP extensions. */ Core::checkExtensions(); /** * Configure required PHP settings. */ Core::configure(); /******************************************************************************/ /* start procedural code label_start_procedural */ Core::cleanupPathInfo(); /******************************************************************************/ /* parsing configuration file LABEL_parsing_config_file */ /** * @global Config $GLOBALS['PMA_Config'] * force reading of config file, because we removed sensitive values * in the previous iteration */ $GLOBALS['PMA_Config'] = new Config(CONFIG_FILE); /** * include session handling after the globals, to prevent overwriting */ if (! defined('PMA_NO_SESSION')) { Session::setUp($GLOBALS['PMA_Config'], $GLOBALS['error_handler']); } /** * init some variables LABEL_variables_init */ /** * holds parameters to be passed to next page * @global array $GLOBALS['url_params'] */ $GLOBALS['url_params'] = array(); /** * holds page that should be displayed * @global string $GLOBALS['goto'] */ $GLOBALS['goto'] = ''; // Security fix: disallow accessing serious server files via "?goto=" if (Core::checkPageValidity($_REQUEST['goto'])) { $GLOBALS['goto'] = $_REQUEST['goto']; $GLOBALS['url_params']['goto'] = $_REQUEST['goto']; } else { $GLOBALS['PMA_Config']->removeCookie('goto'); unset($_REQUEST['goto'], $_GET['goto'], $_POST['goto']); } /** * returning page * @global string $GLOBALS['back'] */ if (Core::checkPageValidity($_REQUEST['back'])) { $GLOBALS['back'] = $_REQUEST['back']; } else { $GLOBALS['PMA_Config']->removeCookie('back'); unset($_REQUEST['back'], $_GET['back'], $_POST['back']); } /** * Check whether user supplied token is valid, if not remove any possibly * dangerous stuff from request. * * remember that some objects in the session with session_start and __wakeup() * could access this variables before we reach this point * f.e. PhpMyAdmin\Config: fontsize * * Check for token mismatch only if the Request method is POST * GET Requests would never have token and therefore checking * mis-match does not make sense * * @todo variables should be handled by their respective owners (objects) * f.e. lang, server in PhpMyAdmin\Config */ $token_mismatch = true; $token_provided = false; if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (Core::isValid($_POST['token'])) { $token_provided = true; $token_mismatch = ! @hash_equals($_SESSION[' PMA_token '], $_POST['token']); } if ($token_mismatch) { /* Warn in case the mismatch is result of failed setting of session cookie */ if (isset($_POST['set_session']) && $_POST['set_session'] != session_id()) { trigger_error( __( 'Failed to set session cookie. Maybe you are using ' . 'HTTP instead of HTTPS to access phpMyAdmin.' ), E_USER_ERROR ); } /** * We don't allow any POST operation parameters if the token is mismatched * or is not provided */ $whitelist = array('ajax_request'); PhpMyAdmin\Sanitize::removeRequestVars($whitelist); } } /** * current selected database * @global string $GLOBALS['db'] */ Core::setGlobalDbOrTable('db'); /** * current selected table * @global string $GLOBALS['table'] */ Core::setGlobalDbOrTable('table'); /** * Store currently selected recent table. * Affect $GLOBALS['db'] and $GLOBALS['table'] */ if (Core::isValid($_REQUEST['selected_recent_table'])) { $recent_table = json_decode($_REQUEST['selected_recent_table'], true); $GLOBALS['db'] = (array_key_exists('db', $recent_table) && is_string($recent_table['db'])) ? $recent_table['db'] : ''; $GLOBALS['url_params']['db'] = $GLOBALS['db']; $GLOBALS['table'] = (array_key_exists('table', $recent_table) && is_string($recent_table['table'])) ? $recent_table['table'] : ''; $GLOBALS['url_params']['table'] = $GLOBALS['table']; } /** * SQL query to be executed * @global string $GLOBALS['sql_query'] */ $GLOBALS['sql_query'] = ''; if (Core::isValid($_POST['sql_query'])) { $GLOBALS['sql_query'] = $_POST['sql_query']; } //$_REQUEST['set_theme'] // checked later in this file LABEL_theme_setup //$_REQUEST['server']; // checked later in this file //$_REQUEST['lang']; // checked by LABEL_loading_language_file /******************************************************************************/ /* loading language file LABEL_loading_language_file */ /** * lang detection is done here */ $language = LanguageManager::getInstance()->selectLanguage(); $language->activate(); /** * check for errors occurred while loading configuration * this check is done here after loading language files to present errors in locale */ $GLOBALS['PMA_Config']->checkPermissions(); $GLOBALS['PMA_Config']->checkErrors(); /* Check server configuration */ Core::checkConfiguration(); /* Check request for possible attacks */ Core::checkRequest(); /******************************************************************************/ /* setup servers LABEL_setup_servers */ $GLOBALS['PMA_Config']->checkServers(); /** * current server * @global integer $GLOBALS['server'] */ $GLOBALS['server'] = $GLOBALS['PMA_Config']->selectServer(); $GLOBALS['url_params']['server'] = $GLOBALS['server']; /** * BC - enable backward compatibility * exports all configuration settings into $GLOBALS ($GLOBALS['cfg']) */ $GLOBALS['PMA_Config']->enableBc(); /******************************************************************************/ /* setup themes LABEL_theme_setup */ ThemeManager::initializeTheme(); if (! defined('PMA_MINIMUM_COMMON')) { /** * save some settings in cookies * @todo should be done in PhpMyAdmin\Config */ $GLOBALS['PMA_Config']->setCookie('pma_lang', $GLOBALS['lang']); ThemeManager::getInstance()->setThemeCookie(); if (! empty($cfg['Server'])) { /** * Loads the proper database interface for this server */ DatabaseInterface::load(); // get LoginCookieValidity from preferences cache // no generic solution for loading preferences from cache as some settings // need to be kept for processing in // PhpMyAdmin\Config::loadUserPreferences() $cache_key = 'server_' . $GLOBALS['server']; if (isset($_SESSION['cache'][$cache_key]['userprefs']['LoginCookieValidity']) ) { $value = $_SESSION['cache'][$cache_key]['userprefs']['LoginCookieValidity']; $GLOBALS['PMA_Config']->set('LoginCookieValidity', $value); $GLOBALS['cfg']['LoginCookieValidity'] = $value; unset($value); } unset($cache_key); // Gets the authentication library that fits the $cfg['Server'] settings // and run authentication /** * the required auth type plugin */ $auth_class = 'PhpMyAdmin\\Plugins\\Auth\\Authentication' . ucfirst(strtolower($cfg['Server']['auth_type'])); if (! @class_exists($auth_class)) { Core::fatalError( __('Invalid authentication method set in configuration:') . ' ' . $cfg['Server']['auth_type'] ); } if (isset($_POST['pma_password']) && strlen($_POST['pma_password']) > 256) { $_POST['pma_password'] = substr($_POST['pma_password'], 0, 256); } $auth_plugin = new $auth_class(); $auth_plugin->authenticate(); // Try to connect MySQL with the control user profile (will be used to // get the privileges list for the current user but the true user link // must be open after this one so it would be default one for all the // scripts) $controllink = false; if ($cfg['Server']['controluser'] != '') { $controllink = $GLOBALS['dbi']->connect( DatabaseInterface::CONNECT_CONTROL ); } // Connects to the server (validates user's login) /** @var DatabaseInterface $userlink */ $userlink = $GLOBALS['dbi']->connect(DatabaseInterface::CONNECT_USER); if ($userlink === false) { $auth_plugin->showFailure('mysql-denied'); } if (! $controllink) { /* * Open separate connection for control queries, this is needed * to avoid problems with table locking used in main connection * and phpMyAdmin issuing queries to configuration storage, which * is not locked by that time. */ $controllink = $GLOBALS['dbi']->connect( DatabaseInterface::CONNECT_USER, null, DatabaseInterface::CONNECT_CONTROL ); } $auth_plugin->rememberCredentials(); $auth_plugin->checkTwoFactor(); /* Log success */ Logging::logUser($cfg['Server']['user']); if ($GLOBALS['dbi']->getVersion() < $cfg['MysqlMinVersion']['internal']) { Core::fatalError( __('You should upgrade to %s %s or later.'), array('MySQL', $cfg['MysqlMinVersion']['human']) ); } // Sets the default delimiter (if specified). if (!empty($_REQUEST['sql_delimiter'])) { PhpMyAdmin\SqlParser\Lexer::$DEFAULT_DELIMITER = $_REQUEST['sql_delimiter']; } // TODO: Set SQL modes too. } else { // end server connecting $response = Response::getInstance(); $response->getHeader()->disableMenuAndConsole(); $response->getFooter()->setMinimal(); } /** * check if profiling was requested and remember it * (note: when $cfg['ServerDefault'] = 0, constant is not defined) */ if (isset($_REQUEST['profiling']) && Util::profilingSupported() ) { $_SESSION['profiling'] = true; } elseif (isset($_REQUEST['profiling_form'])) { // the checkbox was unchecked unset($_SESSION['profiling']); } /** * Inclusion of profiling scripts is needed on various * pages like sql, tbl_sql, db_sql, tbl_select */ $response = Response::getInstance(); if (isset($_SESSION['profiling'])) { $scripts = $response->getHeader()->getScripts(); $scripts->addFile('chart.js'); $scripts->addFile('vendor/jqplot/jquery.jqplot.js'); $scripts->addFile('vendor/jqplot/plugins/jqplot.pieRenderer.js'); $scripts->addFile('vendor/jqplot/plugins/jqplot.highlighter.js'); $scripts->addFile('vendor/jquery/jquery.tablesorter.js'); } /* * There is no point in even attempting to process * an ajax request if there is a token mismatch */ if ($response->isAjax() && $_SERVER['REQUEST_METHOD'] == 'POST' && $token_mismatch) { $response->setRequestStatus(false); $response->addJSON( 'message', Message::error(__('Error: Token mismatch')) ); exit; } } // load user preferences $GLOBALS['PMA_Config']->loadUserPreferences(); /* Tell tracker that it can actually work */ Tracker::enable(); if (! defined('PMA_MINIMUM_COMMON') && ! empty($GLOBALS['server']) && isset($GLOBALS['cfg']['ZeroConf']) && $GLOBALS['cfg']['ZeroConf'] == true ) { $GLOBALS['dbi']->postConnectControl(); } db/login/libraries/db_table_exists.inc.php000064400000006531151502156010014632 0ustar00 0) { $is_db = @$GLOBALS['dbi']->selectDb($db); } else { $is_db = false; } if (! $is_db) { // not a valid db name -> back to the welcome page if (! defined('IS_TRANSFORMATION_WRAPPER')) { $response = Response::getInstance(); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON( 'message', Message::error(__('No databases selected.')) ); } else { $url_params = array('reload' => 1); if (isset($message)) { $url_params['message'] = $message; } if (! empty($sql_query)) { $url_params['sql_query'] = $sql_query; } if (isset($show_as_php)) { $url_params['show_as_php'] = $show_as_php; } Core::sendHeaderLocation( './index.php' . Url::getCommonRaw($url_params) ); } exit; } } } // end if (ensures db exists) if (empty($is_table) && !defined('PMA_SUBMIT_MULT') && !defined('TABLE_MAY_BE_ABSENT') ) { // Not a valid table name -> back to the db_sql.php if (strlen($table) > 0) { $is_table = $GLOBALS['dbi']->getCachedTableContent(array($db, $table), false); if (! $is_table) { $_result = $GLOBALS['dbi']->tryQuery( 'SHOW TABLES LIKE \'' . $GLOBALS['dbi']->escapeString($table) . '\';', PhpMyAdmin\DatabaseInterface::CONNECT_USER, PhpMyAdmin\DatabaseInterface::QUERY_STORE ); $is_table = @$GLOBALS['dbi']->numRows($_result); $GLOBALS['dbi']->freeResult($_result); } } else { $is_table = false; } if (! $is_table) { if (!defined('IS_TRANSFORMATION_WRAPPER')) { if (strlen($table) > 0) { // SHOW TABLES doesn't show temporary tables, so try select // (as it can happen just in case temporary table, it should be // fast): /** * @todo should this check really * only happen if IS_TRANSFORMATION_WRAPPER? */ $_result = $GLOBALS['dbi']->tryQuery( 'SELECT COUNT(*) FROM ' . PhpMyAdmin\Util::backquote($table) . ';', PhpMyAdmin\DatabaseInterface::CONNECT_USER, PhpMyAdmin\DatabaseInterface::QUERY_STORE ); $is_table = ($_result && @$GLOBALS['dbi']->numRows($_result)); $GLOBALS['dbi']->freeResult($_result); } if (! $is_table) { include './db_sql.php'; exit; } } if (! $is_table) { exit; } } } // end if (ensures table exists) db/login/libraries/config.default.php000064400000211122151502156010013611 0ustar00 * N N OOO !! DDDD OOO N N OOO TTTTT EEEE DDDD I TTTTT !! * NN N O O !! D D O O NN N O O T E D D I T !! * N N N O O !! D D O O N N N O O T EEEE D D I T !! * N NN O O D D O O N NN O O T E D D I T * N N OOO !! DDDD OOO N N OOO T EEEE DDDD I T !! * * * DO NOT EDIT THIS FILE, EDIT config.inc.php INSTEAD !!! * * phpMyAdmin default configuration, you can copy values from here to your * config.inc.php * * All directives are explained in the documentation * * @package PhpMyAdmin */ /** * Your phpMyAdmin URL. * * Complete the variable below with the full URL ie * https://example.com/path_to_your_phpMyAdmin_directory/ * * It must contain characters that are valid for a URL, and the path is * case sensitive on some Web servers, for example Unix-based servers. * * In most cases you can leave this variable empty, as the correct value * will be detected automatically. However, we recommend that you do * test to see that the auto-detection code works in your system. A good * test is to browse a table, then edit a row and save it. There will be * an error message if phpMyAdmin cannot auto-detect the correct value. * * @global string $cfg['PmaAbsoluteUri'] */ $cfg['PmaAbsoluteUri'] = ''; /** * Configure authentication logging destination * * @global string $cfg['AuthLog'] */ $cfg['AuthLog'] = 'auto'; /** * Whether to log successful authentication attempts * * @global boolean $cfg['AuthLogSuccess'] */ $cfg['AuthLogSuccess'] = false; /** * Disable the default warning that is displayed on the DB Details Structure page if * any of the required Tables for the configuration storage could not be found * * @global boolean $cfg['PmaNoRelation_DisableWarning'] */ $cfg['PmaNoRelation_DisableWarning'] = false; /** * Disable the default warning that is displayed if Suhosin is detected * * @global boolean $cfg['SuhosinDisableWarning'] */ $cfg['SuhosinDisableWarning'] = false; /** * Disable the default warning that is displayed if session.gc_maxlifetime * is less than `LoginCookieValidity` * * @global boolean $cfg['LoginCookieValidityDisableWarning'] */ $cfg['LoginCookieValidityDisableWarning'] = false; /** * Disable the default warning about MySQL reserved words in column names * * @global boolean $cfg['ReservedWordDisableWarning'] */ $cfg['ReservedWordDisableWarning'] = false; /** * Show warning about incomplete translations on certain threshold. * * @global boolean $cfg['TranslationWarningThreshold'] */ $cfg['TranslationWarningThreshold'] = 80; /** * Allows phpMyAdmin to be included from a other document in a frame; * setting this to true is a potential security hole * * @global boolean $cfg['AllowThirdPartyFraming'] */ $cfg['AllowThirdPartyFraming'] = false; /** * The 'cookie' auth_type uses AES algorithm to encrypt the password. If * at least one server configuration uses 'cookie' auth_type, enter here a * pass phrase that will be used by AES. The maximum length seems to be 46 * characters. * * @global string $cfg['blowfish_secret'] */ $cfg['blowfish_secret'] = ''; /******************************************************************************* * Server(s) configuration * * The $cfg['Servers'] array starts with $cfg['Servers'][1]. Do not use * $cfg['Servers'][0]. You can disable a server configuration entry by setting host * to ''. If you want more than one server, just copy following section * (including $i incrementation) several times. There is no need to define * full server array, just define values you need to change. * * @global array $cfg['Servers'] */ $cfg['Servers'] = array(); $i = 1; /** * MySQL hostname or IP address * * @global string $cfg['Servers'][$i]['host'] */ $cfg['Servers'][$i]['host'] = 'localhost'; /** * MySQL port - leave blank for default port * * @global string $cfg['Servers'][$i]['port'] */ $cfg['Servers'][$i]['port'] = ''; /** * Path to the socket - leave blank for default socket * * @global string $cfg['Servers'][$i]['socket'] */ $cfg['Servers'][$i]['socket'] = ''; /** * Use SSL for connecting to MySQL server? * * @global boolean $cfg['Servers'][$i]['ssl'] */ $cfg['Servers'][$i]['ssl'] = false; /** * Path to the key file when using SSL for connecting to the MySQL server * * @global string $cfg['Servers'][$i]['ssl_key'] */ $cfg['Servers'][$i]['ssl_key'] = null; /** * Path to the cert file when using SSL for connecting to the MySQL server * * @global string $cfg['Servers'][$i]['ssl_cert'] */ $cfg['Servers'][$i]['ssl_cert'] = null; /** * Path to the CA file when using SSL for connecting to the MySQL server * * @global string $cfg['Servers'][$i]['ssl_ca'] */ $cfg['Servers'][$i]['ssl_ca'] = null; /** * Directory containing trusted SSL CA certificates in PEM format * * @global string $cfg['Servers'][$i]['ssl_ca_path'] */ $cfg['Servers'][$i]['ssl_ca_path'] = null; /** * List of allowable ciphers for SSL connections to the MySQL server * * @global string $cfg['Servers'][$i]['ssl_ciphers'] */ $cfg['Servers'][$i]['ssl_ciphers'] = null; /** * MySQL 5.6 or later triggers the mysqlnd driver in PHP to validate the * peer_name of the SSL certifcate * For most self-signed certificates this is a problem. Setting this to false * will disable the check and allow the connection (PHP 5.6.16 or later) * * @link https://bugs.php.net/68344 * @global string $cfg['Servers'][$i]['ssl_verify'] */ $cfg['Servers'][$i]['ssl_verify'] = true; /** * Use compressed protocol for the MySQL connection * * @global boolean $cfg['Servers'][$i]['compress'] */ $cfg['Servers'][$i]['compress'] = false; /** * MySQL control host. This permits to use a host different than the * main host, for the phpMyAdmin configuration storage. If left empty, * $cfg['Servers'][$i]['host'] is used instead. * * @global string $cfg['Servers'][$i]['controlhost'] */ $cfg['Servers'][$i]['controlhost'] = ''; /** * MySQL control port. This permits to use a port different than the * main port, for the phpMyAdmin configuration storage. If left empty, * $cfg['Servers'][$i]['port'] is used instead. * * @global string $cfg['Servers'][$i]['controlport'] */ $cfg['Servers'][$i]['controlport'] = ''; /** * MySQL control user settings (this user must have read-only * access to the "mysql/user" and "mysql/db" tables). The controluser is also * used for all relational features (pmadb) * * @global string $cfg['Servers'][$i]['controluser'] */ $cfg['Servers'][$i]['controluser'] = ''; /** * MySQL control user settings (this user must have read-only * access to the "mysql/user" and "mysql/db" tables). The controluser is also * used for all relational features (pmadb) * * @global string $cfg['Servers'][$i]['controlpass'] */ $cfg['Servers'][$i]['controlpass'] = ''; /** * Authentication method (valid choices: config, http, signon or cookie) * * @global string $cfg['Servers'][$i]['auth_type'] */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /** * HTTP Basic Auth Realm name to display (only used with 'HTTP' auth_type) * * @global string $cfg['Servers'][$i]['auth_http_realm'] */ $cfg['Servers'][$i]['auth_http_realm'] = ''; /** * MySQL user * * @global string $cfg['Servers'][$i]['user'] */ $cfg['Servers'][$i]['user'] = 'root'; /** * MySQL password (only needed with 'config' auth_type) * * @global string $cfg['Servers'][$i]['password'] */ $cfg['Servers'][$i]['password'] = ''; /** * Session to use for 'signon' authentication method * * @global string $cfg['Servers'][$i]['SignonSession'] */ $cfg['Servers'][$i]['SignonSession'] = ''; /** * Cookie params to match session to use for 'signon' authentication method * It should be an associative array matching result of session_get_cookie_params() in other system * * @global array $cfg['Servers'][$i]['SignonCookieParams'] */ $cfg['Servers'][$i]['SignonCookieParams'] = array(); /** * PHP script to use for 'signon' authentication method * * @global string $cfg['Servers'][$i]['SignonScript'] */ $cfg['Servers'][$i]['SignonScript'] = ''; /** * URL where to redirect user to login for 'signon' authentication method * * @global string $cfg['Servers'][$i]['SignonURL'] */ $cfg['Servers'][$i]['SignonURL'] = ''; /** * URL where to redirect user after logout * * @global string $cfg['Servers'][$i]['LogoutURL'] */ $cfg['Servers'][$i]['LogoutURL'] = ''; /** * If set to a db-name, only this db is displayed in navigation panel * It may also be an array of db-names * * @global string $cfg['Servers'][$i]['only_db'] */ $cfg['Servers'][$i]['only_db'] = ''; /** * Database name to be hidden from listings * * @global string $cfg['Servers'][$i]['hide_db'] */ $cfg['Servers'][$i]['hide_db'] = ''; /** * Verbose name for this host - leave blank to show the hostname * (for HTTP authentication, all non-US-ASCII characters will be stripped) * * @global string $cfg['Servers'][$i]['verbose'] */ $cfg['Servers'][$i]['verbose'] = ''; /** * Database used for Relation, Bookmark and PDF Features * (see sql/create_tables.sql) * - leave blank for no support * SUGGESTED: 'phpmyadmin' * * @global string $cfg['Servers'][$i]['pmadb'] */ $cfg['Servers'][$i]['pmadb'] = ''; /** * Bookmark table * - leave blank for no bookmark support * SUGGESTED: 'pma__bookmark' * * @global string $cfg['Servers'][$i]['bookmarktable'] */ $cfg['Servers'][$i]['bookmarktable'] = ''; /** * table to describe the relation between links (see doc) * - leave blank for no relation-links support * SUGGESTED: 'pma__relation' * * @global string $cfg['Servers'][$i]['relation'] */ $cfg['Servers'][$i]['relation'] = ''; /** * table to describe the display fields * - leave blank for no display fields support * SUGGESTED: 'pma__table_info' * * @global string $cfg['Servers'][$i]['table_info'] */ $cfg['Servers'][$i]['table_info'] = ''; /** * table to describe the tables position for the designer and PDF schema * - leave blank for no PDF schema support * SUGGESTED: 'pma__table_coords' * * @global string $cfg['Servers'][$i]['table_coords'] */ $cfg['Servers'][$i]['table_coords'] = ''; /** * table to describe pages of relationpdf * - leave blank if you don't want to use this * SUGGESTED: 'pma__pdf_pages' * * @global string $cfg['Servers'][$i]['pdf_pages'] */ $cfg['Servers'][$i]['pdf_pages'] = ''; /** * table to store column information * - leave blank for no column comments/mime types * SUGGESTED: 'pma__column_info' * * @global string $cfg['Servers'][$i]['column_info'] */ $cfg['Servers'][$i]['column_info'] = ''; /** * table to store SQL history * - leave blank for no SQL query history * SUGGESTED: 'pma__history' * * @global string $cfg['Servers'][$i]['history'] */ $cfg['Servers'][$i]['history'] = ''; /** * table to store recently used tables * - leave blank for no "persistent" recently used tables * SUGGESTED: 'pma__recent' */ $cfg['Servers'][$i]['recent'] = ''; /** * table to store favorite tables * - leave blank for no favorite tables * SUGGESTED: 'pma__favorite' */ $cfg['Servers'][$i]['favorite'] = ''; /** * table to store UI preferences for tables * - leave blank for no "persistent" UI preferences * SUGGESTED: 'pma__table_uiprefs' */ $cfg['Servers'][$i]['table_uiprefs'] = ''; /** * table to store SQL tracking * - leave blank for no SQL tracking * SUGGESTED: 'pma__tracking' * * @global string $cfg['Servers'][$i]['tracking'] */ $cfg['Servers'][$i]['tracking'] = ''; /** * table to store user preferences * - leave blank to disable server storage * SUGGESTED: 'pma__userconfig' * * @global string $cfg['Servers'][$i]['userconfig'] */ $cfg['Servers'][$i]['userconfig'] = ''; /** * table to store users and their assignment to user groups * - leave blank to disable configurable menus feature * SUGGESTED: 'pma__users' * * @global string $cfg['Servers'][$i]['users'] */ $cfg['Servers'][$i]['users'] = ''; /** * table to store allowed menu items for each user group * - leave blank to disable configurable menus feature * SUGGESTED: 'pma__usergroups' * * @global string $cfg['Servers'][$i]['usergroups'] */ $cfg['Servers'][$i]['usergroups'] = ''; /** * table to store information about item hidden from navigation tree * - leave blank to disable hide/show navigation items feature * SUGGESTED: 'pma__navigationhiding' * * @global string $cfg['Servers'][$i]['navigationhiding'] */ $cfg['Servers'][$i]['navigationhiding'] = ''; /** * table to store information about saved searches from query-by-example on a db * - leave blank to disable saved searches feature * SUGGESTED: 'pma__savedsearches' * * @global string $cfg['Servers'][$i]['savedsearches'] */ $cfg['Servers'][$i]['savedsearches'] = ''; /** * table to store central list of columns per database * - leave blank to disable central list of columns feature * SUGGESTED: 'pma__central_columns' * * @global string $cfg['Servers'][$i]['central_columns'] */ $cfg['Servers'][$i]['central_columns'] = ''; /** * table to store designer settings * - leave blank to disable the storage of designer settings * SUGGESTED: 'pma__designer_settings' * * @global string $cfg['Servers'][$i]['designer_settings'] */ $cfg['Servers'][$i]['designer_settings'] = ''; /** * table to store export templates * - leave blank to disable saved searches feature * SUGGESTED: 'pma__export_templates' * * @global string $cfg['Servers'][$i]['export_templates'] */ $cfg['Servers'][$i]['export_templates'] = ''; /** * Maximum number of records saved in $cfg['Servers'][$i]['table_uiprefs'] table. * * In case where tables in databases is modified (e.g. dropped or renamed), * table_uiprefs may contains invalid data (referring to tables which are not * exist anymore). * This configuration make sure that we only keep N (N = MaxTableUiprefs) * newest record in table_uiprefs and automatically delete older records. * * @global integer $cfg['Servers'][$i]['userconfig'] = ''; */ $cfg['Servers'][$i]['MaxTableUiprefs'] = 100; /** * Sets the time zone used by phpMyAdmin. Possible values are explained at * https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html * * @global string $cfg['Servers'][$i]['SessionTimeZone'] = '' */ $cfg['Servers'][$i]['SessionTimeZone'] = ''; /** * whether to allow root login * * @global boolean $cfg['Servers'][$i]['AllowRoot'] */ $cfg['Servers'][$i]['AllowRoot'] = true; /** * whether to allow login of any user without a password * * @global boolean $cfg['Servers'][$i]['AllowNoPassword'] */ $cfg['Servers'][$i]['AllowNoPassword'] = false; /** * Host authentication order, leave blank to not use * * @global string $cfg['Servers'][$i]['AllowDeny']['order'] */ $cfg['Servers'][$i]['AllowDeny']['order'] = ''; /** * Host authentication rules, leave blank for defaults * * @global array $cfg['Servers'][$i]['AllowDeny']['rules'] */ $cfg['Servers'][$i]['AllowDeny']['rules'] = array(); /** * Disable use of INFORMATION_SCHEMA. * * @see https://github.com/phpmyadmin/phpmyadmin/issues/8970 * @see https://bugs.mysql.com/19588 * @global boolean $cfg['Servers'][$i]['DisableIS'] */ $cfg['Servers'][$i]['DisableIS'] = false; /** * Whether the tracking mechanism creates * versions for tables and views automatically. * * @global bool $cfg['Servers'][$i]['tracking_version_auto_create'] */ $cfg['Servers'][$i]['tracking_version_auto_create'] = false; /** * Defines the list of statements * the auto-creation uses for new versions. * * @global string $cfg['Servers'][$i]['tracking_default_statements'] */ $cfg['Servers'][$i]['tracking_default_statements'] = 'CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,CREATE INDEX,' . 'DROP INDEX,INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,CREATE VIEW,' . 'ALTER VIEW,DROP VIEW,CREATE DATABASE,ALTER DATABASE,DROP DATABASE'; /** * Whether a DROP VIEW IF EXISTS statement will be added * as first line to the log when creating a view. * * @global bool $cfg['Servers'][$i]['tracking_add_drop_view'] */ $cfg['Servers'][$i]['tracking_add_drop_view'] = true; /** * Whether a DROP TABLE IF EXISTS statement will be added * as first line to the log when creating a table. * * @global bool $cfg['Servers'][$i]['tracking_add_drop_table'] */ $cfg['Servers'][$i]['tracking_add_drop_table'] = true; /** * Whether a DROP DATABASE IF EXISTS statement will be added * as first line to the log when creating a database. * * @global bool $cfg['Servers'][$i]['tracking_add_drop_database'] */ $cfg['Servers'][$i]['tracking_add_drop_database'] = true; /** * Default server (0 = no default server) * * If you have more than one server configured, you can set $cfg['ServerDefault'] * to any one of them to auto-connect to that server when phpMyAdmin is started, * or set it to 0 to be given a list of servers without logging in * If you have only one server configured, $cfg['ServerDefault'] *MUST* be * set to that server. * * @global integer $cfg['ServerDefault'] */ $cfg['ServerDefault'] = 1; /* * Other core phpMyAdmin settings */ /** * whether version check is active * * @global boolean $cfg['VersionCheck'] */ if (defined('VERSION_CHECK_DEFAULT')) { $cfg['VersionCheck'] = VERSION_CHECK_DEFAULT; } else { $cfg['VersionCheck'] = true; } /** * The url of the proxy to be used when retrieving the information about * the latest version of phpMyAdmin or error reporting. You need this if * the server where phpMyAdmin is installed does not have direct access to * the internet. * The format is: "hostname:portnumber" * * @global string $cfg['ProxyUrl'] */ $cfg['ProxyUrl'] = ""; /** * The username for authenticating with the proxy. By default, no * authentication is performed. If a username is supplied, Basic * Authentication will be performed. No other types of authentication * are currently supported. * * @global string $cfg['ProxyUser'] */ $cfg['ProxyUser'] = ""; /** * The password for authenticating with the proxy. * * @global string $cfg['ProxyPass'] */ $cfg['ProxyPass'] = ""; /** * maximum number of db's displayed in database list * * @global integer $cfg['MaxDbList'] */ $cfg['MaxDbList'] = 100; /** * maximum number of tables displayed in table list * * @global integer $cfg['MaxTableList'] */ $cfg['MaxTableList'] = 250; /** * whether to show hint or not * * @global boolean $cfg['ShowHint'] */ $cfg['ShowHint'] = true; /** * maximum number of characters when a SQL query is displayed * * @global integer $cfg['MaxCharactersInDisplayedSQL'] */ $cfg['MaxCharactersInDisplayedSQL'] = 1000; /** * use GZIP output buffering if possible (true|false|'auto') * * @global string $cfg['OBGzip'] */ $cfg['OBGzip'] = 'auto'; /** * use persistent connections to MySQL database * * @global boolean $cfg['PersistentConnections'] */ $cfg['PersistentConnections'] = false; /** * maximum execution time in seconds (0 for no limit) * * @global integer $cfg['ExecTimeLimit'] */ $cfg['ExecTimeLimit'] = 300; /** * Path for storing session data (session_save_path PHP parameter). * * @global integer $cfg['SessionSavePath'] */ $cfg['SessionSavePath'] = ''; /** * maximum allocated bytes ('-1' for no limit, '0' for no change) * this is a string because '16M' is a valid value; we must put here * a string as the default value so that /setup accepts strings * * @global string $cfg['MemoryLimit'] */ $cfg['MemoryLimit'] = '-1'; /** * mark used tables, make possible to show locked tables (since MySQL 3.23.30) * * @global boolean $cfg['SkipLockedTables'] */ $cfg['SkipLockedTables'] = false; /** * show SQL queries as run * * @global boolean $cfg['ShowSQL'] */ $cfg['ShowSQL'] = true; /** * retain SQL input on Ajax execute * * @global boolean $cfg['RetainQueryEditor'] */ $cfg['RetainQueryBox'] = false; /** * use CodeMirror syntax highlighting for editing SQL * * @global boolean $cfg['CodemirrorEnable'] */ $cfg['CodemirrorEnable'] = true; /** * use the parser to find any errors in the query before executing * * @global boolean $cfg['LintEnable'] */ $cfg['LintEnable'] = true; /** * show a 'Drop database' link to normal users * * @global boolean $cfg['AllowUserDropDatabase'] */ $cfg['AllowUserDropDatabase'] = false; /** * confirm some commands that can result in loss of data * * @global boolean $cfg['Confirm'] */ $cfg['Confirm'] = true; /** * recall previous login in cookie authentication mode or not * * @global boolean $cfg['LoginCookieRecall'] */ $cfg['LoginCookieRecall'] = true; /** * validity of cookie login (in seconds; 1440 matches php.ini's * session.gc_maxlifetime) * * @global integer $cfg['LoginCookieValidity'] */ $cfg['LoginCookieValidity'] = 1440; /** * how long login cookie should be stored (in seconds) * * @global integer $cfg['LoginCookieStore'] */ $cfg['LoginCookieStore'] = 0; /** * whether to delete all login cookies on logout * * @global boolean $cfg['LoginCookieDeleteAll'] */ $cfg['LoginCookieDeleteAll'] = true; /** * whether to enable the "database search" feature or not * * @global boolean $cfg['UseDbSearch'] */ $cfg['UseDbSearch'] = true; /** * if set to true, PMA continues computing multiple-statement queries * even if one of the queries failed * * @global boolean $cfg['IgnoreMultiSubmitErrors'] */ $cfg['IgnoreMultiSubmitErrors'] = false; /** * allow login to any user entered server in cookie based authentication * * @global boolean $cfg['AllowArbitraryServer'] */ $cfg['AllowArbitraryServer'] = false; /** * restrict by IP (with regular expression) the MySQL servers the user can enter * when $cfg['AllowArbitraryServer'] = true * * @global string $cfg['ArbitraryServerRegexp'] */ $cfg['ArbitraryServerRegexp'] = ''; /** * if reCaptcha is enabled it needs public key to connect with the service * * @global string $cfg['CaptchaLoginPublicKey'] */ $cfg['CaptchaLoginPublicKey'] = ''; /** * if reCaptcha is enabled it needs private key to connect with the service * * @global string $cfg['CaptchaLoginPrivateKey'] */ $cfg['CaptchaLoginPrivateKey'] = ''; /******************************************************************************* * Navigation panel setup */ /** * In the navigation panel, replaces the database tree with a selector * * @global boolean $cfg['ShowDatabasesNavigationAsTree'] */ $cfg['ShowDatabasesNavigationAsTree'] = true; /** * maximum number of first level databases displayed in navigation panel * * @global integer $cfg['FirstLevelNavigationItems'] */ $cfg['FirstLevelNavigationItems'] = 100; /** * maximum number of items displayed in navigation panel * * @global integer $cfg['MaxNavigationItems'] */ $cfg['MaxNavigationItems'] = 50; /** * turn the select-based light menu into a tree * * @global boolean $cfg['NavigationTreeEnableGrouping'] */ $cfg['NavigationTreeEnableGrouping'] = true; /** * the separator to sub-tree the select-based light menu tree * * @global string $cfg['NavigationTreeDbSeparator'] */ $cfg['NavigationTreeDbSeparator'] = '_'; /** * Which string will be used to generate table prefixes * to split/nest tables into multiple categories * * @global string $cfg['NavigationTreeTableSeparator'] */ $cfg['NavigationTreeTableSeparator'] = '__'; /** * How many sublevels should be displayed when splitting up tables * by the above Separator * * @global integer $cfg['NavigationTreeTableLevel'] */ $cfg['NavigationTreeTableLevel'] = 1; /** * link with main panel by highlighting the current db/table * * @global boolean $cfg['NavigationLinkWithMainPanel'] */ $cfg['NavigationLinkWithMainPanel'] = true; /** * display logo at top of navigation panel * * @global boolean $cfg['NavigationDisplayLogo'] */ $cfg['NavigationDisplayLogo'] = true; /** * where should logo link point to (can also contain an external URL) * * @global string $cfg['NavigationLogoLink'] */ $cfg['NavigationLogoLink'] = 'index.php'; /** * whether to open the linked page in the main window ('main') or * in a new window ('new') * * @global string $cfg['NavigationLogoLinkWindow'] */ $cfg['NavigationLogoLinkWindow'] = 'main'; /** * number of recently used tables displayed in the navigation panel * * @global integer $cfg['NumRecentTables'] */ $cfg['NumRecentTables'] = 10; /** * number of favorite tables displayed in the navigation panel * * @global integer $cfg['NumFavoriteTables'] */ $cfg['NumFavoriteTables'] = 10; /** * display a JavaScript table filter in the navigation panel * when more then x tables are present * * @global boolean $cfg['NavigationTreeDisplayItemFilterMinimum'] */ $cfg['NavigationTreeDisplayItemFilterMinimum'] = 30; /** * display server choice at top of navigation panel * * @global boolean $cfg['NavigationDisplayServers'] */ $cfg['NavigationDisplayServers'] = true; /** * server choice as links * * @global boolean $cfg['DisplayServersList'] */ $cfg['DisplayServersList'] = false; /** * display a JavaScript database filter in the navigation panel * when more then x databases are present * * @global boolean $cfg['NavigationTreeDisplayDbFilterMinimum'] */ $cfg['NavigationTreeDisplayDbFilterMinimum'] = 30; /** * target of the navigation panel quick access icon * * Possible values: * 'structure.php' = fields list * 'sql' = SQL form * 'search' = search page * 'insert' = insert row page * 'browse' = browse page * * @global string $cfg['NavigationTreeDefaultTabTable'] */ $cfg['NavigationTreeDefaultTabTable'] = 'structure'; /** * target of the navigation panel quick second access icon * * Possible values: * 'structure' = fields list * 'sql' = SQL form * 'search' = search page * 'insert' = insert row page * 'browse' = browse page * '' = no link * * @global string $cfg['NavigationTreeDefaultTabTable2'] */ $cfg['NavigationTreeDefaultTabTable2'] = ''; /** * Enables the possibility of navigation tree expansion * * @global boolean $cfg['NavigationTreeEnableExpansion'] */ $cfg['NavigationTreeEnableExpansion'] = true; /** * Show tables in navigation panel * * @global boolean $cfg['NavigationTreeShowTables'] */ $cfg['NavigationTreeShowTables'] = true; /** * Show views in navigation panel * * @global boolean $cfg['NavigationTreeShowViews'] */ $cfg['NavigationTreeShowViews'] = true; /** * Show functions in navigation panel * * @global boolean $cfg['NavigationTreeShowFunctions'] */ $cfg['NavigationTreeShowFunctions'] = true; /** * Show procedures in navigation panel * * @global boolean $cfg['NavigationTreeShowProcedures'] */ $cfg['NavigationTreeShowProcedures'] = true; /** * Show events in navigation panel * * @global boolean $cfg['NavigationTreeShowEvents'] */ $cfg['NavigationTreeShowEvents'] = true; /** * Width of navigation panel * * @global integer $cfg['NavigationWidth'] */ $cfg['NavigationWidth'] = 240; /******************************************************************************* * In the main panel, at startup... */ /** * allow to display statistics and space usage in the pages about database * details and table properties * * @global boolean $cfg['ShowStats'] */ $cfg['ShowStats'] = true; /** * show PHP info link * * @global boolean $cfg['ShowPhpInfo'] */ $cfg['ShowPhpInfo'] = false; /** * show MySQL server and web server information * * @global boolean $cfg['ShowServerInfo'] */ $cfg['ShowServerInfo'] = true; /** * show change password link * * @global boolean $cfg['ShowChgPassword'] */ $cfg['ShowChgPassword'] = true; /** * show create database form * * @global boolean $cfg['ShowCreateDb'] */ $cfg['ShowCreateDb'] = true; /******************************************************************************* * Database structure */ /** show charset column in database structure (true|false)? * * @global boolean $cfg['ShowDbStructureCharset'] */ $cfg['ShowDbStructureCharset'] = false; /** * show comment column in database structure (true|false)? * * @global boolean $cfg['ShowDbStructureComment'] */ $cfg['ShowDbStructureComment'] = false; /** * show creation timestamp column in database structure (true|false)? * * @global boolean $cfg['ShowDbStructureCreation'] */ $cfg['ShowDbStructureCreation'] = false; /** * show last update timestamp column in database structure (true|false)? * * @global boolean $cfg['ShowDbStructureLastUpdate'] */ $cfg['ShowDbStructureLastUpdate'] = false; /** * show last check timestamp column in database structure (true|false)? * * @global boolean $cfg['ShowDbStructureLastCheck'] */ $cfg['ShowDbStructureLastCheck'] = false; /** * allow hide action columns to drop down menu in database structure (true|false)? * * @global boolean $cfg['HideStructureActions'] */ $cfg['HideStructureActions'] = true; /** * Show column comments in table structure view (true|false)? * * @global boolean $cfg['ShowColumnComments'] */ $cfg['ShowColumnComments'] = true; /******************************************************************************* * In browse mode... */ /** * Use icons instead of text for the navigation bar buttons (table browse) * ('text'|'icons'|'both') * * @global string $cfg['TableNavigationLinksMode'] */ $cfg['TableNavigationLinksMode'] = 'icons'; /** * Defines whether a user should be displayed a "show all (records)" * button in browse mode or not. * * @global boolean $cfg['ShowAll'] */ $cfg['ShowAll'] = false; /** * Number of rows displayed when browsing a result set. If the result * set contains more rows, "Previous" and "Next". * Possible values: 25,50,100,250,500 * * @global integer $cfg['MaxRows'] */ $cfg['MaxRows'] = 25; /** * default for 'ORDER BY' clause (valid values are 'ASC', 'DESC' or 'SMART' -ie * descending order for fields of type TIME, DATE, DATETIME & TIMESTAMP, * ascending order else-) * * @global string $cfg['Order'] */ $cfg['Order'] = 'SMART'; /** * grid editing: save edited cell(s) in browse-mode at once * * @global boolean $cfg['SaveCellsAtOnce'] */ $cfg['SaveCellsAtOnce'] = false; /** * grid editing: which action triggers it, or completely disable the feature * * Possible values: * 'click' * 'double-click' * 'disabled' * * @global string $cfg['GridEditing'] */ $cfg['GridEditing'] ='double-click'; /** * Options > Relational display * * Possible values: * 'K' for key value * 'D' for display column * * @global string $cfg['RelationalDisplay'] * */ $cfg['RelationalDisplay'] = 'K'; /******************************************************************************* * In edit mode... */ /** * disallow editing of binary fields * valid values are: * false allow editing * 'blob' allow editing except for BLOB fields * 'noblob' disallow editing except for BLOB fields * 'all' disallow editing * * @global string $cfg['ProtectBinary'] */ $cfg['ProtectBinary'] = 'blob'; /** * Display the function fields in edit/insert mode * * @global boolean $cfg['ShowFunctionFields'] */ $cfg['ShowFunctionFields'] = true; /** * Display the type fields in edit/insert mode * * @global boolean $cfg['ShowFieldTypesInDataEditView'] */ $cfg['ShowFieldTypesInDataEditView'] = true; /** * Which editor should be used for CHAR/VARCHAR fields: * input - allows limiting of input length * textarea - allows newlines in fields * * @global string $cfg['CharEditing'] */ $cfg['CharEditing'] = 'input'; /** * The minimum size for character input fields * * @global integer $cfg['MinSizeForInputField'] */ $cfg['MinSizeForInputField'] = 4; /** * The maximum size for character input fields * * @global integer $cfg['MinSizeForInputField'] */ $cfg['MaxSizeForInputField'] = 60; /** * How many rows can be inserted at one time * * @global integer $cfg['InsertRows'] */ $cfg['InsertRows'] = 2; /** * Sort order for items in a foreign-key drop-down list. * 'content' is the referenced data, 'id' is the key value. * * @global array $cfg['ForeignKeyDropdownOrder'] */ $cfg['ForeignKeyDropdownOrder'] = array('content-id', 'id-content'); /** * A drop-down list will be used if fewer items are present * * @global integer $cfg['ForeignKeyMaxLimit'] */ $cfg['ForeignKeyMaxLimit'] = 100; /** * Whether to disable foreign key checks while importing * * @global boolean $cfg['DefaultForeignKeyChecks'] */ $cfg['DefaultForeignKeyChecks'] = 'default'; /******************************************************************************* * For the export features... */ /** * Allow for the use of zip compression (requires zip support to be enabled) * * @global boolean $cfg['ZipDump'] */ $cfg['ZipDump'] = true; /** * Allow for the use of gzip compression (requires zlib) * * @global boolean $cfg['GZipDump'] */ $cfg['GZipDump'] = true; /** * Allow for the use of bzip2 decompression (requires bz2 extension) * * @global boolean $cfg['BZipDump'] */ $cfg['BZipDump'] = true; /** * Will compress gzip exports on the fly without the need for much memory. * If you encounter problems with created gzip files disable this feature. * * @global boolean $cfg['CompressOnFly'] */ $cfg['CompressOnFly'] = true; /******************************************************************************* * Tabs display settings */ /** * How to display the menu tabs ('icons'|'text'|'both') * * @global boolean $cfg['TabsMode'] */ $cfg['TabsMode'] = 'both'; /** * How to display various action links ('icons'|'text'|'both') * * @global boolean $cfg['ActionLinksMode'] */ $cfg['ActionLinksMode'] = 'both'; /** * How many columns should be used for table display of a database? * (a value larger than 1 results in some information being hidden) * * @global integer $cfg['PropertiesNumColumns'] */ $cfg['PropertiesNumColumns'] = 1; /** * Possible values: * 'welcome' = the welcome page * (recommended for multiuser setups) * 'databases' = list of databases * 'status' = runtime information * 'variables' = MySQL server variables * 'privileges' = user management * * @global string $cfg['DefaultTabServer'] */ $cfg['DefaultTabServer'] = 'welcome'; /** * Possible values: * 'structure' = tables list * 'sql' = SQL form * 'search' = search query * 'operations' = operations on database * * @global string $cfg['DefaultTabDatabase'] */ $cfg['DefaultTabDatabase'] = 'structure'; /** * Possible values: * 'structure' = fields list * 'sql' = SQL form * 'search' = search page * 'insert' = insert row page * 'browse' = browse page * * @global string $cfg['DefaultTabTable'] */ $cfg['DefaultTabTable'] = 'browse'; /** * Whether to display image or text or both image and text in table row * action segment. Value can be either of ``image``, ``text`` or ``both``. */ $cfg['RowActionType'] = 'both'; /******************************************************************************* * Export defaults */ $cfg['Export'] = array(); /** * codegen/csv/excel/htmlexcel/htmlword/latex/ods/odt/pdf/sql/texytext/xml/yaml * * @global string $cfg['Export']['format'] */ $cfg['Export']['format'] = 'sql'; /** * quick/custom/custom-no-form * * @global string $cfg['Export']['format'] */ $cfg['Export']['method'] = 'quick'; /** * none/zip/gzip * * @global string $cfg['Export']['compression'] */ $cfg['Export']['compression'] = 'none'; /** * Whether to LOCK TABLES before exporting * * @global boolean $cfg['Export']['lock_tables'] */ $cfg['Export']['lock_tables'] = false; /** * Whether to export databases/tables as separate files * * @global boolean $cfg['Export']['as_separate_files'] */ $cfg['Export']['as_separate_files'] = false; /** * * * @global boolean $cfg['Export']['asfile'] */ $cfg['Export']['asfile'] = true; /** * * * @global string $cfg['Export']['charset'] */ $cfg['Export']['charset'] = ''; /** * * * @global boolean $cfg['Export']['onserver'] */ $cfg['Export']['onserver'] = false; /** * * * @global boolean $cfg['Export']['onserver_overwrite'] */ $cfg['Export']['onserver_overwrite'] = false; /** * * * @global boolean $cfg['Export']['quick_export_onserver'] */ $cfg['Export']['quick_export_onserver'] = false; /** * * * @global boolean $cfg['Export']['quick_export_onserver_overwrite'] */ $cfg['Export']['quick_export_onserver_overwrite'] = false; /** * * * @global boolean $cfg['Export']['remember_file_template'] */ $cfg['Export']['remember_file_template'] = true; /** * * * @global string $cfg['Export']['file_template_table'] */ $cfg['Export']['file_template_table'] = '@TABLE@'; /** * * * @global string $cfg['Export']['file_template_database'] */ $cfg['Export']['file_template_database'] = '@DATABASE@'; /** * * * @global string $cfg['Export']['file_template_server'] */ $cfg['Export']['file_template_server'] = '@SERVER@'; /** * * * @global string $cfg['Export']['codegen_structure_or_data'] */ $cfg['Export']['codegen_structure_or_data'] = 'data'; /** * * * @global $cfg['Export']['codegen_format'] */ $cfg['Export']['codegen_format'] = 0; /** * * * @global boolean $cfg['Export']['ods_columns'] */ $cfg['Export']['ods_columns'] = false; /** * * * @global string $cfg['Export']['ods_null'] */ $cfg['Export']['ods_null'] = 'NULL'; /** * * * @global string $cfg['Export']['odt_structure_or_data'] */ $cfg['Export']['odt_structure_or_data'] = 'structure_and_data'; /** * * * @global boolean $cfg['Export']['odt_columns'] */ $cfg['Export']['odt_columns'] = true; /** * * * @global boolean $cfg['Export']['odt_relation'] */ $cfg['Export']['odt_relation'] = true; /** * * * @global boolean $cfg['Export']['odt_comments'] */ $cfg['Export']['odt_comments'] = true; /** * * * @global boolean $cfg['Export']['odt_mime'] */ $cfg['Export']['odt_mime'] = true; /** * * * @global string $cfg['Export']['odt_null'] */ $cfg['Export']['odt_null'] = 'NULL'; /** * * * @global boolean $cfg['Export']['htmlword_structure_or_data'] */ $cfg['Export']['htmlword_structure_or_data'] = 'structure_and_data'; /** * * * @global boolean $cfg['Export']['htmlword_columns'] */ $cfg['Export']['htmlword_columns'] = false; /** * * * @global string $cfg['Export']['htmlword_null'] */ $cfg['Export']['htmlword_null'] = 'NULL'; /** * * * @global string $cfg['Export']['texytext_structure_or_data'] */ $cfg['Export']['texytext_structure_or_data'] = 'structure_and_data'; /** * * * @global boolean $cfg['Export']['texytext_columns'] */ $cfg['Export']['texytext_columns'] = false; /** * * * @global string $cfg['Export']['texytext_null'] */ $cfg['Export']['texytext_null'] = 'NULL'; /** * * * @global boolean $cfg['Export']['csv_columns'] */ $cfg['Export']['csv_columns'] = false; /** * * * @global string $cfg['Export']['csv_structure_or_data'] */ $cfg['Export']['csv_structure_or_data'] = 'data'; /** * * * @global string $cfg['Export']['csv_null'] */ $cfg['Export']['csv_null'] = 'NULL'; /** * * * @global string $cfg['Export']['csv_separator'] */ $cfg['Export']['csv_separator'] = ','; /** * * * @global string $cfg['Export']['csv_enclosed'] */ $cfg['Export']['csv_enclosed'] = '"'; /** * * * @global string $cfg['Export']['csv_escaped'] */ $cfg['Export']['csv_escaped'] = '"'; /** * * * @global string $cfg['Export']['csv_terminated'] */ $cfg['Export']['csv_terminated'] = 'AUTO'; /** * * * @global string $cfg['Export']['csv_removeCRLF'] */ $cfg['Export']['csv_removeCRLF'] = false; /** * * * @global boolean $cfg['Export']['excel_columns'] */ $cfg['Export']['excel_columns'] = true; /** * * * @global string $cfg['Export']['excel_null'] */ $cfg['Export']['excel_null'] = 'NULL'; /** * win/mac * * @global string $cfg['Export']['excel_edition'] */ $cfg['Export']['excel_edition'] = 'win'; /** * * * @global string $cfg['Export']['excel_removeCRLF'] */ $cfg['Export']['excel_removeCRLF'] = false; /** * * * @global string $cfg['Export']['excel_structure_or_data'] */ $cfg['Export']['excel_structure_or_data'] = 'data'; /** * * * @global string $cfg['Export']['latex_structure_or_data'] */ $cfg['Export']['latex_structure_or_data'] = 'structure_and_data'; /** * * * @global boolean $cfg['Export']['latex_columns'] */ $cfg['Export']['latex_columns'] = true; /** * * * @global boolean $cfg['Export']['latex_relation'] */ $cfg['Export']['latex_relation'] = true; /** * * * @global boolean $cfg['Export']['latex_comments'] */ $cfg['Export']['latex_comments'] = true; /** * * * @global boolean $cfg['Export']['latex_mime'] */ $cfg['Export']['latex_mime'] = true; /** * * * @global string $cfg['Export']['latex_null'] */ $cfg['Export']['latex_null'] = '\textit{NULL}'; /** * * * @global boolean $cfg['Export']['latex_caption'] */ $cfg['Export']['latex_caption'] = true; /** * * * @global string $cfg['Export']['latex_structure_caption'] */ $cfg['Export']['latex_structure_caption'] = 'strLatexStructure'; /** * * * @global string $cfg['Export']['latex_structure_continued_caption'] */ $cfg['Export']['latex_structure_continued_caption'] = 'strLatexStructure strLatexContinued'; /** * * * @global string $cfg['Export']['latex_data_caption'] */ $cfg['Export']['latex_data_caption'] = 'strLatexContent'; /** * * * @global string $cfg['Export']['latex_data_continued_caption'] */ $cfg['Export']['latex_data_continued_caption'] = 'strLatexContent strLatexContinued'; /** * * * @global string $cfg['Export']['latex_data_label'] */ $cfg['Export']['latex_data_label'] = 'tab:@TABLE@-data'; /** * * * @global string $cfg['Export']['latex_structure_label'] */ $cfg['Export']['latex_structure_label'] = 'tab:@TABLE@-structure'; /** * * * @global string $cfg['Export']['mediawiki_structure_or_data'] */ $cfg['Export']['mediawiki_structure_or_data'] = 'data'; /** * * * @global boolean $cfg['Export']['mediawiki_caption'] */ $cfg['Export']['mediawiki_caption'] = true; /** * * * @global boolean $cfg['Export']['mediawiki_headers'] */ $cfg['Export']['mediawiki_headers'] = true; /** * * * @global string $cfg['Export']['ods_structure_or_data'] */ $cfg['Export']['ods_structure_or_data'] = 'data'; /** * * * @global string $cfg['Export']['pdf_structure_or_data'] */ $cfg['Export']['pdf_structure_or_data'] = 'data'; /** * * * @global string $cfg['Export']['phparray_structure_or_data'] */ $cfg['Export']['phparray_structure_or_data'] = 'data'; /** * * * @global string $cfg['Export']['json_structure_or_data'] */ $cfg['Export']['json_structure_or_data'] = 'data'; /** * Export functions * * @global string $cfg['Export']['json_pretty_print'] */ $cfg['Export']['json_pretty_print'] = false; /** * Export functions * * @global string $cfg['Export']['json_unicode'] */ $cfg['Export']['json_unicode'] = true; /** * * * @global string $cfg['Export']['sql_structure_or_data'] */ $cfg['Export']['sql_structure_or_data'] = 'structure_and_data'; /** * * * @global string $cfg['Export']['sql_compatibility'] */ $cfg['Export']['sql_compatibility'] = 'NONE'; /** * Whether to include comments in SQL export. * * @global string $cfg['Export']['sql_include_comments'] */ $cfg['Export']['sql_include_comments'] = true; /** * * * @global boolean $cfg['Export']['sql_disable_fk'] */ $cfg['Export']['sql_disable_fk'] = false; /** * * * @global boolean $cfg['Export']['sql_views_as_tables'] */ $cfg['Export']['sql_views_as_tables'] = false; /** * * * @global boolean $cfg['Export']['sql_metadata'] */ $cfg['Export']['sql_metadata'] = false; /** * * * @global boolean $cfg['Export']['sql_use_transaction'] */ $cfg['Export']['sql_use_transaction'] = true; /** * * * @global boolean $cfg['Export']['sql_create_database'] */ $cfg['Export']['sql_create_database'] = false; /** * * * @global boolean $cfg['Export']['sql_drop_database'] */ $cfg['Export']['sql_drop_database'] = false; /** * * * @global boolean $cfg['Export']['sql_drop_table'] */ $cfg['Export']['sql_drop_table'] = false; /** * * * true by default for correct behavior when dealing with exporting * of VIEWs and the stand-in table * @global boolean $cfg['Export']['sql_if_not_exists'] */ $cfg['Export']['sql_if_not_exists'] = false; /** * * * @global boolean $cfg['Export']['sql_procedure_function'] */ $cfg['Export']['sql_procedure_function'] = true; /** * * * @global boolean $cfg['Export']['sql_create_table'] */ $cfg['Export']['sql_create_table'] = true; /** * * * @global boolean $cfg['Export']['sql_create_view'] */ $cfg['Export']['sql_create_view'] = true; /** * * * @global boolean $cfg['Export']['sql_create_trigger'] */ $cfg['Export']['sql_create_trigger'] = true; /** * * * @global boolean $cfg['Export']['sql_auto_increment'] */ $cfg['Export']['sql_auto_increment'] = true; /** * * * @global boolean $cfg['Export']['sql_backquotes'] */ $cfg['Export']['sql_backquotes'] = true; /** * * * @global boolean $cfg['Export']['sql_dates'] */ $cfg['Export']['sql_dates'] = false; /** * * * @global boolean $cfg['Export']['sql_relation'] */ $cfg['Export']['sql_relation'] = false; /** * * * @global boolean $cfg['Export']['sql_truncate'] */ $cfg['Export']['sql_truncate'] = false; /** * * * @global boolean $cfg['Export']['sql_delayed'] */ $cfg['Export']['sql_delayed'] = false; /** * * * @global boolean $cfg['Export']['sql_ignore'] */ $cfg['Export']['sql_ignore'] = false; /** * Export time in UTC. * * @global boolean $cfg['Export']['sql_utc_time'] */ $cfg['Export']['sql_utc_time'] = true; /** * * * @global boolean $cfg['Export']['sql_hex_for_binary'] */ $cfg['Export']['sql_hex_for_binary'] = true; /** * insert/update/replace * * @global string $cfg['Export']['sql_type'] */ $cfg['Export']['sql_type'] = 'INSERT'; /** * * * @global integer $cfg['Export']['sql_max_query_size'] */ $cfg['Export']['sql_max_query_size'] = 50000; /** * * * @global boolean $cfg['Export']['sql_mime'] */ $cfg['Export']['sql_mime'] = false; /** * \n is replaced by new line * * @global string $cfg['Export']['sql_header_comment'] */ $cfg['Export']['sql_header_comment'] = ''; /** * Whether to use complete inserts, extended inserts, both, or neither * * @global string $cfg['Export']['sql_insert_syntax'] */ $cfg['Export']['sql_insert_syntax'] = 'both'; /** * * * @global string $cfg['Export']['pdf_report_title'] */ $cfg['Export']['pdf_report_title'] = ''; /** * * *@global string $cfg['Export']['xml_structure_or_data'] */ $cfg['Export']['xml_structure_or_data'] = 'data'; /** * Export schema for each structure * * @global string $cfg['Export']['xml_export_struc'] */ $cfg['Export']['xml_export_struc'] = true; /** * Export events * * @global string $cfg['Export']['xml_export_events'] */ $cfg['Export']['xml_export_events'] = true; /** * Export functions * * @global string $cfg['Export']['xml_export_functions'] */ $cfg['Export']['xml_export_functions'] = true; /** * Export procedures * * @global string $cfg['Export']['xml_export_procedures'] */ $cfg['Export']['xml_export_procedures'] = true; /** * Export schema for each table * * @global string $cfg['Export']['xml_export_tables'] */ $cfg['Export']['xml_export_tables'] = true; /** * Export triggers * * @global string $cfg['Export']['xml_export_triggers'] */ $cfg['Export']['xml_export_triggers'] = true; /** * Export views * * @global string $cfg['Export']['xml_export_views'] */ $cfg['Export']['xml_export_views'] = true; /** * Export contents data * * @global string $cfg['Export']['xml_export_contents'] */ $cfg['Export']['xml_export_contents'] = true; /** * * * @global string $cfg['Export']['yaml_structure_or_data'] */ $cfg['Export']['yaml_structure_or_data'] = 'data'; /******************************************************************************* * Import defaults */ $cfg['Import'] = array(); /** * * * @global string $cfg['Import']['format'] */ $cfg['Import']['format'] = 'sql'; /** * Default charset for import. * * @global string $cfg['Import']['charset'] */ $cfg['Import']['charset'] = ''; /** * * * @global boolean $cfg['Import']['allow_interrupt'] */ $cfg['Import']['allow_interrupt'] = true; /** * * * @global integer $cfg['Import']['skip_queries'] */ $cfg['Import']['skip_queries'] = 0; /** * * * @global string $cfg['Import']['sql_compatibility'] */ $cfg['Import']['sql_compatibility'] = 'NONE'; /** * * * @global string $cfg['Import']['sql_no_auto_value_on_zero'] */ $cfg['Import']['sql_no_auto_value_on_zero'] = true; /** * * * @global string $cfg['Import']['sql_read_as_multibytes'] */ $cfg['Import']['sql_read_as_multibytes'] = false; /** * * * @global boolean $cfg['Import']['csv_replace'] */ $cfg['Import']['csv_replace'] = false; /** * * * @global boolean $cfg['Import']['csv_ignore'] */ $cfg['Import']['csv_ignore'] = false; /** * * * @global string $cfg['Import']['csv_terminated'] */ $cfg['Import']['csv_terminated'] = ','; /** * * * @global string $cfg['Import']['csv_enclosed'] */ $cfg['Import']['csv_enclosed'] = '"'; /** * * * @global string $cfg['Import']['csv_escaped'] */ $cfg['Import']['csv_escaped'] = '"'; /** * * * @global string $cfg['Import']['csv_new_line'] */ $cfg['Import']['csv_new_line'] = 'auto'; /** * * * @global string $cfg['Import']['csv_columns'] */ $cfg['Import']['csv_columns'] = ''; /** * * * @global string $cfg['Import']['csv_col_names'] */ $cfg['Import']['csv_col_names'] = false; /** * * * @global boolean $cfg['Import']['ldi_replace'] */ $cfg['Import']['ldi_replace'] = false; /** * * * @global boolean $cfg['Import']['ldi_ignore'] */ $cfg['Import']['ldi_ignore'] = false; /** * * * @global string $cfg['Import']['ldi_terminated'] */ $cfg['Import']['ldi_terminated'] = ';'; /** * * * @global string $cfg['Import']['ldi_enclosed'] */ $cfg['Import']['ldi_enclosed'] = '"'; /** * * * @global string $cfg['Import']['ldi_escaped'] */ $cfg['Import']['ldi_escaped'] = '\\'; /** * * * @global string $cfg['Import']['ldi_new_line'] */ $cfg['Import']['ldi_new_line'] = 'auto'; /** * * * @global string $cfg['Import']['ldi_columns'] */ $cfg['Import']['ldi_columns'] = ''; /** * 'auto' for auto-detection, true or false for forcing * * @global string $cfg['Import']['ldi_local_option'] */ $cfg['Import']['ldi_local_option'] = 'auto'; /** * * * @global string $cfg['Import']['ods_col_names'] */ $cfg['Import']['ods_col_names'] = false; /** * * * @global string $cfg['Import']['ods_empty_rows'] */ $cfg['Import']['ods_empty_rows'] = true; /** * * * @global string $cfg['Import']['ods_recognize_percentages'] */ $cfg['Import']['ods_recognize_percentages'] = true; /** * * * @global string $cfg['Import']['ods_recognize_currency'] */ $cfg['Import']['ods_recognize_currency'] = true; /******************************************************************************* * Schema export defaults */ $cfg['Schema'] = array(); /** * pdf/eps/dia/svg * * @global string $cfg['Schema']['format'] */ $cfg['Schema']['format'] = 'pdf'; /** * * * @global string $cfg['Schema']['pdf_show_color'] */ $cfg['Schema']['pdf_show_color'] = true; /** * * * @global string $cfg['Schema']['pdf_show_keys'] */ $cfg['Schema']['pdf_show_keys'] = false; /** * * * @global string $cfg['Schema']['pdf_all_tables_same_width'] */ $cfg['Schema']['pdf_all_tables_same_width'] = false; /** * L/P * * @global string $cfg['Schema']['pdf_orientation'] */ $cfg['Schema']['pdf_orientation'] = 'L'; /** * * * @global string $cfg['Schema']['pdf_paper'] */ $cfg['Schema']['pdf_paper'] = 'A4'; /** * * * @global string $cfg['Schema']['pdf_show_grid'] */ $cfg['Schema']['pdf_show_grid'] = false; /** * * * @global string $cfg['Schema']['pdf_with_doc'] */ $cfg['Schema']['pdf_with_doc'] = true; /** * * * @global string $cfg['Schema']['pdf_table_order'] */ $cfg['Schema']['pdf_table_order'] = ''; /** * * * @global string $cfg['Schema']['dia_show_color'] */ $cfg['Schema']['dia_show_color'] = true; /** * * * @global string $cfg['Schema']['dia_show_keys'] */ $cfg['Schema']['dia_show_keys'] = false; /** * L/P * * @global string $cfg['Schema']['dia_orientation'] */ $cfg['Schema']['dia_orientation'] = 'L'; /** * * * @global string $cfg['Schema']['dia_paper'] */ $cfg['Schema']['dia_paper'] = 'A4'; /** * * * @global string $cfg['Schema']['eps_show_color'] */ $cfg['Schema']['eps_show_color'] = true; /** * * * @global string $cfg['Schema']['eps_show_keys'] */ $cfg['Schema']['eps_show_keys'] = false; /** * * * @global string $cfg['Schema']['eps_all_tables_same_width'] */ $cfg['Schema']['eps_all_tables_same_width'] = false; /** * L/P * * @global string $cfg['Schema']['eps_orientation'] */ $cfg['Schema']['eps_orientation'] = 'L'; /** * * * @global string $cfg['Schema']['svg_show_color'] */ $cfg['Schema']['svg_show_color'] = true; /** * * * @global string $cfg['Schema']['svg_show_keys'] */ $cfg['Schema']['svg_show_keys'] = false; /** * * * @global string $cfg['Schema']['svg_all_tables_same_width'] */ $cfg['Schema']['svg_all_tables_same_width'] = false; /******************************************************************************* * PDF options */ /** * * * @global array $cfg['PDFPageSizes'] */ $cfg['PDFPageSizes'] = array('A3', 'A4', 'A5', 'letter', 'legal'); /** * * * @global string $cfg['PDFDefaultPageSize'] */ $cfg['PDFDefaultPageSize'] = 'A4'; /******************************************************************************* * Language and character set conversion settings */ /** * Default language to use, if not browser-defined or user-defined * * @global string $cfg['DefaultLang'] */ $cfg['DefaultLang'] = 'en'; /** * Default connection collation * * @global string $cfg['DefaultConnectionCollation'] */ $cfg['DefaultConnectionCollation'] = 'utf8mb4_unicode_ci'; /** * Force: always use this language, e.g. 'en' * * @global string $cfg['Lang'] */ $cfg['Lang'] = ''; /** * Regular expression to limit listed languages, e.g. '^(cs|en)' for Czech and * English only * * @global string $cfg['FilterLanguages'] */ $cfg['FilterLanguages'] = ''; /** * You can select here which functions will be used for character set conversion. * Possible values are: * auto - automatically use available one (first is tested iconv, then * recode) * iconv - use iconv or libiconv functions * recode - use recode_string function * mb - use mbstring extension * none - disable encoding conversion * * @global string $cfg['RecodingEngine'] */ $cfg['RecodingEngine'] = 'auto'; /** * Specify some parameters for iconv used in character set conversion. See iconv * documentation for details: * https://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.15/iconv_open.3.html * * @global string $cfg['IconvExtraParams'] */ $cfg['IconvExtraParams'] = '//TRANSLIT'; /** * Available character sets for MySQL conversion. currently contains all which could * be found in lang/* files and few more. * Character sets will be shown in same order as here listed, so if you frequently * use some of these move them to the top. * * @global array $cfg['AvailableCharsets'] */ $cfg['AvailableCharsets'] = array( 'iso-8859-1', 'iso-8859-2', 'iso-8859-3', 'iso-8859-4', 'iso-8859-5', 'iso-8859-6', 'iso-8859-7', 'iso-8859-8', 'iso-8859-9', 'iso-8859-10', 'iso-8859-11', 'iso-8859-12', 'iso-8859-13', 'iso-8859-14', 'iso-8859-15', 'windows-1250', 'windows-1251', 'windows-1252', 'windows-1256', 'windows-1257', 'koi8-r', 'big5', 'gb2312', 'utf-16', 'utf-8', 'utf-7', 'x-user-defined', 'euc-jp', 'ks_c_5601-1987', 'tis-620', 'SHIFT_JIS', 'SJIS', 'SJIS-win', ); /******************************************************************************* * Customization & design * * The graphical settings are now located in themes/theme-name/layout.inc.php */ /** * enable the left panel pointer * see also LeftPointerColor * in layout.inc.php * * @global boolean $cfg['NavigationTreePointerEnable'] */ $cfg['NavigationTreePointerEnable'] = true; /** * enable the browse pointer * see also BrowsePointerColor * in layout.inc.php * * @global boolean $cfg['BrowsePointerEnable'] */ $cfg['BrowsePointerEnable'] = true; /** * enable the browse marker * see also BrowseMarkerColor * in layout.inc.php * * @global boolean $cfg['BrowseMarkerEnable'] */ $cfg['BrowseMarkerEnable'] = true; /** * textarea size (columns) in edit mode * (this value will be emphasized (*2) for SQL * query textareas and (*1.25) for query window) * * @global integer $cfg['TextareaCols'] */ $cfg['TextareaCols'] = 40; /** * textarea size (rows) in edit mode * * @global integer $cfg['TextareaRows'] */ $cfg['TextareaRows'] = 15; /** * double size of textarea size for LONGTEXT columns * * @global boolean $cfg['LongtextDoubleTextarea'] */ $cfg['LongtextDoubleTextarea'] = true; /** * auto-select when clicking in the textarea of the query-box * * @global boolean $cfg['TextareaAutoSelect'] */ $cfg['TextareaAutoSelect'] = false; /** * textarea size (columns) for CHAR/VARCHAR * * @global integer $cfg['CharTextareaCols'] */ $cfg['CharTextareaCols'] = 40; /** * textarea size (rows) for CHAR/VARCHAR * * @global integer $cfg['CharTextareaRows'] */ $cfg['CharTextareaRows'] = 2; /** * Max field data length in browse mode for all non-numeric fields * * @global integer $cfg['LimitChars'] */ $cfg['LimitChars'] = 50; /** * Where to show the edit/copy/delete links in browse mode * Possible values are 'left', 'right', 'both' and 'none'. * * @global string $cfg['RowActionLinks'] */ $cfg['RowActionLinks'] = 'left'; /** * Whether to show row links (Edit, Copy, Delete) and checkboxes for * multiple row operations even when the selection does not have a unique key. * * @global boolean $cfg['RowActionLinksWithoutUnique'] */ $cfg['RowActionLinksWithoutUnique'] = false; /** * Default sort order by primary key. * @global string $cfg['TablePrimaryKeyOrder'] */ $cfg['TablePrimaryKeyOrder'] = 'NONE'; /** * remember the last way a table sorted * * @global string $cfg['RememberSorting'] */ $cfg['RememberSorting'] = true; /** * shows column comments in 'browse' mode. * * @global boolean $cfg['ShowBrowseComments'] */ $cfg['ShowBrowseComments'] = true; /** * shows column comments in 'table property' mode. * * @global boolean $cfg['ShowPropertyComments'] */ $cfg['ShowPropertyComments']= true; /** * repeat header names every X cells? (0 = deactivate) * * @global integer $cfg['RepeatCells'] */ $cfg['RepeatCells'] = 100; /** * Set to true if you want DB-based query history.If false, this utilizes * JS-routines to display query history (lost by window close) * * @global boolean $cfg['QueryHistoryDB'] */ $cfg['QueryHistoryDB'] = false; /** * When using DB-based query history, how many entries should be kept? * * @global integer $cfg['QueryHistoryMax'] */ $cfg['QueryHistoryMax'] = 25; /** * Use MIME-Types (stored in column comments table) for * * @global boolean $cfg['BrowseMIME'] */ $cfg['BrowseMIME'] = true; /** * When approximate count < this, PMA will get exact count for table rows. * * @global integer $cfg['MaxExactCount'] */ $cfg['MaxExactCount'] = 50000; /** * Zero means that no row count is done for views; see the doc * * @global integer $cfg['MaxExactCountViews'] */ $cfg['MaxExactCountViews'] = 0; /** * Sort table and database in natural order * * @global boolean $cfg['NaturalOrder'] */ $cfg['NaturalOrder'] = true; /** * Initial state for sliders * (open | closed | disabled) * * @global string $cfg['InitialSlidersState'] */ $cfg['InitialSlidersState'] = 'closed'; /** * User preferences: disallow these settings * For possible setting names look in libraries/config/user_preferences.forms.php * * @global array $cfg['UserprefsDisallow'] */ $cfg['UserprefsDisallow'] = array(); /** * User preferences: enable the Developer tab */ $cfg['UserprefsDeveloperTab'] = false; /******************************************************************************* * Window title settings */ /** * title of browser window when a table is selected * * @global string $cfg['TitleTable'] */ $cfg['TitleTable'] = '@HTTP_HOST@ / @VSERVER@ / @DATABASE@ / @TABLE@ | @PHPMYADMIN@'; /** * title of browser window when a database is selected * * @global string $cfg['TitleDatabase'] */ $cfg['TitleDatabase'] = '@HTTP_HOST@ / @VSERVER@ / @DATABASE@ | @PHPMYADMIN@'; /** * title of browser window when a server is selected * * @global string $cfg['TitleServer'] */ $cfg['TitleServer'] = '@HTTP_HOST@ / @VSERVER@ | @PHPMYADMIN@'; /** * title of browser window when nothing is selected * @global string $cfg['TitleDefault'] */ $cfg['TitleDefault'] = '@HTTP_HOST@ | @PHPMYADMIN@'; /******************************************************************************* * theme manager */ /** * if you want to use selectable themes and if ThemesPath not empty * set it to true, else set it to false (default is false); * * @global boolean $cfg['ThemeManager'] */ $cfg['ThemeManager'] = true; /** * set up default theme, you can set up here an valid * path to themes or 'original' for the original pma-theme * * @global string $cfg['ThemeDefault'] */ $cfg['ThemeDefault'] = 'pmahomme'; /** * allow different theme for each configured server * * @global boolean $cfg['ThemePerServer'] */ $cfg['ThemePerServer'] = false; /** * Font size to use by default */ $cfg['FontSize'] = '82%'; /******************************************************************************* * */ /** * Default query for table * * @global string $cfg['DefaultQueryTable'] */ $cfg['DefaultQueryTable'] = 'SELECT * FROM @TABLE@ WHERE 1'; /** * Default query for database * * @global string $cfg['DefaultQueryDatabase'] */ $cfg['DefaultQueryDatabase'] = ''; /******************************************************************************* * SQL Query box settings * These are the links display in all of the SQL Query boxes * * @global array $cfg['SQLQuery'] */ $cfg['SQLQuery'] = array(); /** * Display an "Edit" link on the results page to change a query * * @global boolean $cfg['SQLQuery']['Edit'] */ $cfg['SQLQuery']['Edit'] = true; /** * Display an "Explain SQL" link on the results page * * @global boolean $cfg['SQLQuery']['Explain'] */ $cfg['SQLQuery']['Explain'] = true; /** * Display a "Create PHP code" link on the results page to wrap a query in PHP * * @global boolean $cfg['SQLQuery']['ShowAsPHP'] */ $cfg['SQLQuery']['ShowAsPHP'] = true; /** * Display a "Refresh" link on the results page * * @global boolean $cfg['SQLQuery']['Refresh'] */ $cfg['SQLQuery']['Refresh'] = true; /** * Enables autoComplete for table & column names in SQL queries * * default = 'true' */ $cfg['EnableAutocompleteForTablesAndColumns'] = true; /******************************************************************************* * Web server upload/save/import directories */ /** * Directory for uploaded files that can be executed by phpMyAdmin. * For example './upload'. Leave empty for no upload directory support. * Use %u for username inclusion. * * @global string $cfg['UploadDir'] */ $cfg['UploadDir'] = ''; /** * Directory where phpMyAdmin can save exported data on server. * For example './save'. Leave empty for no save directory support. * Use %u for username inclusion. * * @global string $cfg['SaveDir'] */ $cfg['SaveDir'] = ''; /** * Directory where phpMyAdmin can save temporary files. * * @global string $cfg['TempDir'] */ if (defined('TEMP_DIR')) { $cfg['TempDir'] = TEMP_DIR; } else { $cfg['TempDir'] = './tmp/'; } /** * Misc. settings */ /** * Is GD >= 2 available? Set to yes/no/auto. 'auto' does auto-detection, * which is the only safe way to determine GD version. * * @global string $cfg['GD2Available'] */ $cfg['GD2Available'] = 'auto'; /** * Lists proxy IP and HTTP header combinations which are trusted for IP allow/deny * * @global array $cfg['TrustedProxies'] */ $cfg['TrustedProxies'] = array(); /** * We normally check the permissions on the configuration file to ensure * it's not world writable. However, phpMyAdmin could be installed on * a NTFS filesystem mounted on a non-Windows server, in which case the * permissions seems wrong but in fact cannot be detected. In this case * a sysadmin would set the following to false. */ $cfg['CheckConfigurationPermissions'] = true; /** * Limit for length of URL in links. When length would be above this limit, it * is replaced by form with button. * This is required as some web servers (IIS) have problems with long URLs. * The recommended limit is 2000 * (see https://www.boutell.com/newfaq/misc/urllength.html) but we put * 1000 to accommodate Suhosin, see bug #3358750. */ $cfg['LinkLengthLimit'] = 1000; /** * Additional string to allow in CSP headers. */ $cfg['CSPAllow'] = ''; /** * Disable the table maintenance mass operations, like optimizing or * repairing the selected tables of a database. An accidental execution * of such a maintenance task can enormously slow down a bigger database. */ $cfg['DisableMultiTableMaintenance'] = false; /** * Whether or not to query the user before sending the error report to * the phpMyAdmin team when a JavaScript error occurs * * Available options * (ask | always | never) * * @global string $cfg['SendErrorReports'] */ $cfg['SendErrorReports'] = 'ask'; /** * Whether Enter or Ctrl+Enter executes queries in the console. * * @global boolean $cfg['ConsoleEnterExecutes'] */ $cfg['ConsoleEnterExecutes'] = false; /** * Zero Configuration mode. * * @global boolean $cfg['ZeroConf'] */ $cfg['ZeroConf'] = true; /******************************************************************************* * Developers ONLY! * * @global array $cfg['DBG'] */ $cfg['DBG'] = array(); /** * Output executed queries and their execution times * * @global boolean $cfg['DBG']['sql'] */ $cfg['DBG']['sql'] = false; /** * Log executed queries and their execution times to syslog * * @global boolean $cfg['DBG']['sqllog'] */ $cfg['DBG']['sqllog'] = false; /** * Enable to let server present itself as demo server. * * @global boolean $cfg['DBG']['demo'] */ $cfg['DBG']['demo'] = false; /** * Enable Simple two-factor authentication * * @global boolean $cfg['DBG']['simple2fa'] */ $cfg['DBG']['simple2fa'] = false; /******************************************************************************* * MySQL settings */ /** * Default functions for above defined groups * * @global array $cfg['DefaultFunctions'] */ $cfg['DefaultFunctions'] = array( 'FUNC_CHAR' => '', 'FUNC_DATE' => '', 'FUNC_NUMBER' => '', 'FUNC_SPATIAL' => 'GeomFromText', 'FUNC_UUID' => 'UUID', 'first_timestamp' => 'NOW', ); /** * Max rows retrieved for zoom search */ $cfg['maxRowPlotLimit'] = 500; /** * Show Git revision if applicable * * @global boolean $cfg['ShowGitRevision'] */ $cfg['ShowGitRevision'] = true; /** * MySQL minimal version required * * @global array $cfg['MysqlMinVersion'] */ $cfg['MysqlMinVersion'] = array( 'internal' => 50500, 'human' => '5.5.0' ); /** * Disable shortcuts * * @global array $cfg['DisableShortcutKeys'] */ $cfg['DisableShortcutKeys'] = false; /** * Console configuration * * This is mostly meant for user preferences. */ $cfg['Console'] = [ 'StartHistory' => false, 'AlwaysExpand' => false, 'CurrentQuery' => true, 'EnterExecutes' => false, 'DarkTheme' => false, 'Mode' => 'info', 'Height' => 92, 'GroupQueries' => false, 'OrderBy' => 'exec', 'Order' => 'asc', ]; /******************************************************************************* * Default options for transformations */ /** * Initialize default transformations array * * @global array $cfg['DefaultTransformations'] */ $cfg['DefaultTransformations'] = array(); /** * Default transformations for Substring * * @global array $cfg['DefaultTransformations']['Substring'] */ $cfg['DefaultTransformations']['Substring'] = array(0, 'all', '…'); /** * Default transformations for Bool2Text * * @global array $cfg['DefaultTransformations']['Bool2Text'] */ $cfg['DefaultTransformations']['Bool2Text'] = array('T', 'F'); /** * Default transformations for External * * @global array $cfg['DefaultTransformations']['External'] */ $cfg['DefaultTransformations']['External'] = array(0, '-f /dev/null -i -wrap -q', 1, 1); /** * Default transformations for PreApPend * * @global array $cfg['DefaultTransformations']['PreApPend'] */ $cfg['DefaultTransformations']['PreApPend'] = array('', ''); /** * Default transformations for Hex * * @global array $cfg['DefaultTransformations']['Hex'] */ $cfg['DefaultTransformations']['Hex'] = array('2'); /** * Default transformations for DateFormat * * @global array $cfg['DefaultTransformations']['DateFormat'] */ $cfg['DefaultTransformations']['DateFormat'] = array(0, '', 'local'); /** * Default transformations for Inline * * @global array $cfg['DefaultTransformations']['Inline'] */ $cfg['DefaultTransformations']['Inline'] = array('100', 100); $cfg['DefaultTransformations']['Inline']['wrapper_link'] = null; /** * Default transformations for TextImageLink * * @global array $cfg['DefaultTransformations']['TextImageLink'] */ $cfg['DefaultTransformations']['TextImageLink'] = array(null, 100, 50); /** * Default transformations for TextLink * * @global array $cfg['DefaultTransformations']['TextLink'] */ $cfg['DefaultTransformations']['TextLink'] = array(null, null, null); db/login/libraries/tbl_common.inc.php000064400000002346151502156010013630 0ustar00isSystemSchema($db); /** * Set parameters for links * @deprecated */ $url_query = Url::getCommon(array('db' => $db, 'table' => $table)); /** * Set parameters for links */ $url_params = array(); $url_params['db'] = $db; $url_params['table'] = $table; /** * Defines the urls to return to in case of error in a sql statement */ $err_url_0 = PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabDatabase'], 'database' ) . Url::getCommon(array('db' => $db)); $err_url = PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabTable'], 'table' ) . Url::getCommon($url_params); /** * Ensures the database and the table exist (else move to the "parent" script) * Skip test if we are exporting as we can't tell whether a table name is an alias (which would fail the test). */ if (basename($_SERVER['PHP_SELF']) != 'tbl_export.php') { require_once './libraries/db_table_exists.inc.php'; } db/login/libraries/classes/SubPartition.php000064400000007040151502156010015003 0ustar00db = $row['TABLE_SCHEMA']; $this->table = $row['TABLE_NAME']; $this->loadData($row); } /** * Loads data from the fetched row from information_schema.PARTITIONS * * @param array $row fetched row * * @return void */ protected function loadData(array $row) { $this->name = $row['SUBPARTITION_NAME']; $this->ordinal = $row['SUBPARTITION_ORDINAL_POSITION']; $this->method = $row['SUBPARTITION_METHOD']; $this->expression = $row['SUBPARTITION_EXPRESSION']; $this->loadCommonData($row); } /** * Loads some data that is common to both partitions and sub partitions * * @param array $row fetched row * * @return void */ protected function loadCommonData(array $row) { $this->rows = $row['TABLE_ROWS']; $this->dataLength = $row['DATA_LENGTH']; $this->indexLength = $row['INDEX_LENGTH']; $this->comment = $row['PARTITION_COMMENT']; } /** * Return the partition name * * @return string partition name */ public function getName() { return $this->name; } /** * Return the ordinal of the partition * * @return number the ordinal */ public function getOrdinal() { return $this->ordinal; } /** * Returns the partition method * * @return string partition method */ public function getMethod() { return $this->method; } /** * Returns the partition expression * * @return string partition expression */ public function getExpression() { return $this->expression; } /** * Returns the number of data rows * * @return integer number of rows */ public function getRows() { return $this->rows; } /** * Returns the data length * * @return integer data length */ public function getDataLength() { return $this->dataLength; } /** * Returns the index length * * @return integer index length */ public function getIndexLength() { return $this->indexLength; } /** * Returns the partition comment * * @return string partition comment */ public function getComment() { return $this->comment; } } db/login/libraries/classes/TwoFactor.php000064400000016152151502156010014274 0ustar00initRelationParamsCache(); $this->userPreferences = new UserPreferences(); $this->user = $user; $this->_available = $this->getAvailable(); $this->config = $this->readConfig(); $this->_writable = ($this->config['type'] == 'db'); $this->_backend = $this->getBackend(); } /** * Reads the configuration * * @return array */ public function readConfig() { $result = []; $config = $this->userPreferences->load(); if (isset($config['config_data']['2fa'])) { $result = $config['config_data']['2fa']; } $result['type'] = $config['type']; if (! isset($result['backend'])) { $result['backend'] = ''; } if (! isset($result['settings'])) { $result['settings'] = []; } return $result; } /** * Get any property of this class * * @param string $property name of the property * * @return mixed|void if property exist, value of the relevant property */ public function __get($property) { switch ($property) { case 'backend': return $this->_backend; case 'available': return $this->_available; case 'writable': return $this->_writable; case 'showSubmit': $backend = $this->_backend; return $backend::$showSubmit; } } /** * Returns list of available backends * * @return array */ public function getAvailable() { $result = []; if ($GLOBALS['cfg']['DBG']['simple2fa']) { $result[] = 'simple'; } if (class_exists('PragmaRX\Google2FA\Google2FA') && class_exists('BaconQrCode\Renderer\Image\Png')) { $result[] = 'application'; } if (class_exists('Samyoul\U2F\U2FServer\U2FServer')) { $result[] = 'key'; } return $result; } /** * Returns list of missing dependencies * * @return array */ public function getMissingDeps() { $result = []; if (!class_exists('PragmaRX\Google2FA\Google2FA')) { $result[] = [ 'class' => \PhpMyAdmin\Plugins\TwoFactor\Application::getName(), 'dep' => 'pragmarx/google2fa', ]; } if (!class_exists('BaconQrCode\Renderer\Image\Png')) { $result[] = [ 'class' => \PhpMyAdmin\Plugins\TwoFactor\Application::getName(), 'dep' => 'bacon/bacon-qr-code', ]; } if (!class_exists('Samyoul\U2F\U2FServer\U2FServer')) { $result[] = [ 'class' => \PhpMyAdmin\Plugins\TwoFactor\Key::getName(), 'dep' => 'samyoul/u2f-php-server', ]; } return $result; } /** * Returns class name for given name * * @param string $name Backend name * * @return string */ public function getBackendClass($name) { $result = 'PhpMyAdmin\\Plugins\\TwoFactorPlugin'; if (in_array($name, $this->_available)) { $result = 'PhpMyAdmin\\Plugins\\TwoFactor\\' . ucfirst($name); } elseif (! empty($name)) { $result = 'PhpMyAdmin\\Plugins\\TwoFactor\\Invalid'; } return $result; } /** * Returns backend for current user * * @return PhpMyAdmin\Plugins\TwoFactorPlugin */ public function getBackend() { $name = $this->getBackendClass($this->config['backend']); return new $name($this); } /** * Checks authentication, returns true on success * * @param boolean $skip_session Skip session cache * * @return boolean */ public function check($skip_session = false) { if ($skip_session) { return $this->_backend->check(); } if (empty($_SESSION['two_factor_check'])) { $_SESSION['two_factor_check'] = $this->_backend->check(); } return $_SESSION['two_factor_check']; } /** * Renders user interface to enter two-factor authentication * * @return string HTML code */ public function render() { return $this->_backend->getError() . $this->_backend->render(); } /** * Renders user interface to configure two-factor authentication * * @return string HTML code */ public function setup() { return $this->_backend->getError() . $this->_backend->setup(); } /** * Saves current configuration. * * @return true|PhpMyAdmin\Message */ public function save() { return $this->userPreferences->persistOption('2fa', $this->config, null); } /** * Changes two-factor authentication settings * * The object might stay in partialy changed setup * if configuration fails. * * @param string $name Backend name * * @return boolean */ public function configure($name) { $this->config = [ 'backend' => $name ]; if ($name === '') { $cls = $this->getBackendClass($name); $this->config['settings'] = []; $this->_backend = new $cls($this); } else { if (! in_array($name, $this->_available)) { return false; } $cls = $this->getBackendClass($name); $this->config['settings'] = []; $this->_backend = new $cls($this); if (! $this->_backend->configure()) { return false; } } $result = $this->save(); if ($result !== true) { $result->display(); } return true; } /** * Returns array with all available backends * * @return array */ public function getAllBackends() { $all = array_merge([''], $this->available); $backends = []; foreach ($all as $name) { $cls = $this->getBackendClass($name); $backends[] = [ 'id' => $cls::$id, 'name' => $cls::getName(), 'description' => $cls::getDescription(), ]; } return $backends; } } db/login/libraries/classes/Util.php000064400000505764151502156010013315 0ustar00'; if ($include_icon) { $button .= self::getImage($icon, $alternate); } if ($include_icon && $include_text) { $button .= ' '; } if ($include_text) { $button .= $alternate; } $button .= $menu_icon ? '' : ''; return $button; } /** * Returns an HTML IMG tag for a particular image from a theme * * The image name should match CSS class defined in icons.css.php * * @param string $image The name of the file to get * @param string $alternate Used to set 'alt' and 'title' attributes * of the image * @param array $attributes An associative array of other attributes * * @return string an html IMG tag */ public static function getImage($image, $alternate = '', array $attributes = array()) { $alternate = htmlspecialchars($alternate); // Set $url accordingly if (isset($GLOBALS['pmaThemeImage'])) { $url = $GLOBALS['pmaThemeImage'] . $image; } else { $url = './themes/pmahomme/' . $image; } if (isset($attributes['class'])) { $attributes['class'] = "icon ic_$image " . $attributes['class']; } else { $attributes['class'] = "icon ic_$image"; } // set all other attributes $attr_str = ''; foreach ($attributes as $key => $value) { if (! in_array($key, array('alt', 'title'))) { $attr_str .= " $key=\"$value\""; } } // override the alt attribute if (isset($attributes['alt'])) { $alt = $attributes['alt']; } else { $alt = $alternate; } // override the title attribute if (isset($attributes['title'])) { $title = $attributes['title']; } else { $title = $alternate; } // generate the IMG tag $template = '%s'; $retval = sprintf($template, $title, $alt, $attr_str); return $retval; } /** * Returns the formatted maximum size for an upload * * @param integer $max_upload_size the size * * @return string the message * * @access public */ public static function getFormattedMaximumUploadSize($max_upload_size) { // I have to reduce the second parameter (sensitiveness) from 6 to 4 // to avoid weird results like 512 kKib list($max_size, $max_unit) = self::formatByteDown($max_upload_size, 4); return '(' . sprintf(__('Max: %s%s'), $max_size, $max_unit) . ')'; } /** * Generates a hidden field which should indicate to the browser * the maximum size for upload * * @param integer $max_size the size * * @return string the INPUT field * * @access public */ public static function generateHiddenMaxFileSize($max_size) { return ''; } /** * Add slashes before "_" and "%" characters for using them in MySQL * database, table and field names. * Note: This function does not escape backslashes! * * @param string $name the string to escape * * @return string the escaped string * * @access public */ public static function escapeMysqlWildcards($name) { return strtr($name, array('_' => '\\_', '%' => '\\%')); } // end of the 'escapeMysqlWildcards()' function /** * removes slashes before "_" and "%" characters * Note: This function does not unescape backslashes! * * @param string $name the string to escape * * @return string the escaped string * * @access public */ public static function unescapeMysqlWildcards($name) { return strtr($name, array('\\_' => '_', '\\%' => '%')); } // end of the 'unescapeMysqlWildcards()' function /** * removes quotes (',",`) from a quoted string * * checks if the string is quoted and removes this quotes * * @param string $quoted_string string to remove quotes from * @param string $quote type of quote to remove * * @return string unqoted string */ public static function unQuote($quoted_string, $quote = null) { $quotes = array(); if ($quote === null) { $quotes[] = '`'; $quotes[] = '"'; $quotes[] = "'"; } else { $quotes[] = $quote; } foreach ($quotes as $quote) { if (mb_substr($quoted_string, 0, 1) === $quote && mb_substr($quoted_string, -1, 1) === $quote ) { $unquoted_string = mb_substr($quoted_string, 1, -1); // replace escaped quotes $unquoted_string = str_replace( $quote . $quote, $quote, $unquoted_string ); return $unquoted_string; } } return $quoted_string; } /** * format sql strings * * @param string $sqlQuery raw SQL string * @param boolean $truncate truncate the query if it is too long * * @return string the formatted sql * * @global array $cfg the configuration array * * @access public * @todo move into PMA_Sql */ public static function formatSql($sqlQuery, $truncate = false) { global $cfg; if ($truncate && mb_strlen($sqlQuery) > $cfg['MaxCharactersInDisplayedSQL'] ) { $sqlQuery = mb_substr( $sqlQuery, 0, $cfg['MaxCharactersInDisplayedSQL'] ) . '[...]'; } return '
' . "\n"
            . htmlspecialchars($sqlQuery) . "\n"
            . '
'; } // end of the "formatSql()" function /** * Displays a link to the documentation as an icon * * @param string $link documentation link * @param string $target optional link target * @param boolean $bbcode optional flag indicating whether to output bbcode * * @return string the html link * * @access public */ public static function showDocLink($link, $target = 'documentation', $bbcode = false) { if($bbcode){ return "[a@$link@$target][dochelpicon][/a]"; } return '' . self::getImage('b_help', __('Documentation')) . ''; } // end of the 'showDocLink()' function /** * Get a URL link to the official MySQL documentation * * @param string $link contains name of page/anchor that is being linked * @param string $anchor anchor to page part * * @return string the URL link * * @access public */ public static function getMySQLDocuURL($link, $anchor = '') { // Fixup for newly used names: $link = str_replace('_', '-', mb_strtolower($link)); if (empty($link)) { $link = 'index'; } $mysql = '5.5'; $lang = 'en'; if (isset($GLOBALS['dbi'])) { $serverVersion = $GLOBALS['dbi']->getVersion(); if ($serverVersion >= 50700) { $mysql = '5.7'; } elseif ($serverVersion >= 50600) { $mysql = '5.6'; } elseif ($serverVersion >= 50500) { $mysql = '5.5'; } } $url = 'https://dev.mysql.com/doc/refman/' . $mysql . '/' . $lang . '/' . $link . '.html'; if (! empty($anchor)) { $url .= '#' . $anchor; } return Core::linkURL($url); } /** * Displays a link to the official MySQL documentation * * @param string $link contains name of page/anchor that is being linked * @param bool $big_icon whether to use big icon (like in left frame) * @param string $anchor anchor to page part * @param bool $just_open whether only the opening tag should be returned * * @return string the html link * * @access public */ public static function showMySQLDocu( $link, $big_icon = false, $anchor = '', $just_open = false ) { $url = self::getMySQLDocuURL($link, $anchor); $open_link = ''; if ($just_open) { return $open_link; } elseif ($big_icon) { return $open_link . self::getImage('b_sqlhelp', __('Documentation')) . ''; } return self::showDocLink($url, 'mysql_doc'); } // end of the 'showMySQLDocu()' function /** * Returns link to documentation. * * @param string $page Page in documentation * @param string $anchor Optional anchor in page * * @return string URL */ public static function getDocuLink($page, $anchor = '') { /* Construct base URL */ $url = $page . '.html'; if (!empty($anchor)) { $url .= '#' . $anchor; } /* Check if we have built local documentation, however * provide consistent URL for testsuite */ if (! defined('TESTSUITE') && @file_exists('doc/html/index.html')) { if ($GLOBALS['PMA_Config']->get('is_setup')) { return '../doc/html/' . $url; } return './doc/html/' . $url; } return Core::linkURL('https://docs.phpmyadmin.net/en/latest/' . $url); } /** * Displays a link to the phpMyAdmin documentation * * @param string $page Page in documentation * @param string $anchor Optional anchor in page * @param boolean $bbcode Optional flag indicating whether to output bbcode * * @return string the html link * * @access public */ public static function showDocu($page, $anchor = '', $bbcode = false) { return self::showDocLink(self::getDocuLink($page, $anchor), 'documentation', $bbcode); } // end of the 'showDocu()' function /** * Displays a link to the PHP documentation * * @param string $target anchor in documentation * * @return string the html link * * @access public */ public static function showPHPDocu($target) { $url = Core::getPHPDocLink($target); return self::showDocLink($url); } // end of the 'showPHPDocu()' function /** * Returns HTML code for a tooltip * * @param string $message the message for the tooltip * * @return string * * @access public */ public static function showHint($message) { if ($GLOBALS['cfg']['ShowHint']) { $classClause = ' class="pma_hint"'; } else { $classClause = ''; } return '' . self::getImage('b_help') . '' . $message . '' . ''; } /** * Displays a MySQL error message in the main panel when $exit is true. * Returns the error message otherwise. * * @param string|bool $server_msg Server's error message. * @param string $sql_query The SQL query that failed. * @param bool $is_modify_link Whether to show a "modify" link or not. * @param string $back_url URL for the "back" link (full path is * not required). * @param bool $exit Whether execution should be stopped or * the error message should be returned. * * @return string * * @global string $table The current table. * @global string $db The current database. * * @access public */ public static function mysqlDie( $server_msg = '', $sql_query = '', $is_modify_link = true, $back_url = '', $exit = true ) { global $table, $db; /** * Error message to be built. * @var string $error_msg */ $error_msg = ''; // Checking for any server errors. if (empty($server_msg)) { $server_msg = $GLOBALS['dbi']->getError(); } // Finding the query that failed, if not specified. if ((empty($sql_query) && (!empty($GLOBALS['sql_query'])))) { $sql_query = $GLOBALS['sql_query']; } $sql_query = trim($sql_query); /** * The lexer used for analysis. * @var Lexer $lexer */ $lexer = new Lexer($sql_query); /** * The parser used for analysis. * @var Parser $parser */ $parser = new Parser($lexer->list); /** * The errors found by the lexer and the parser. * @var array $errors */ $errors = ParserError::get(array($lexer, $parser)); if (empty($sql_query)) { $formatted_sql = ''; } elseif (count($errors)) { $formatted_sql = htmlspecialchars($sql_query); } else { $formatted_sql = self::formatSql($sql_query, true); } $error_msg .= '

' . __('Error') . '

'; // For security reasons, if the MySQL refuses the connection, the query // is hidden so no details are revealed. if ((!empty($sql_query)) && (!(mb_strstr($sql_query, 'connect')))) { // Static analysis errors. if (!empty($errors)) { $error_msg .= '

' . __('Static analysis:') . '

'; $error_msg .= '

' . sprintf( __('%d errors were found during analysis.'), count($errors) ) . '

'; $error_msg .= '

    '; $error_msg .= implode( ParserError::format( $errors, '
  1. %2$s (near "%4$s" at position %5$d)
  2. ' ) ); $error_msg .= '

'; } // Display the SQL query and link to MySQL documentation. $error_msg .= '

' . __('SQL query:') . '' . "\n"; $formattedSqlToLower = mb_strtolower($formatted_sql); // TODO: Show documentation for all statement types. if (mb_strstr($formattedSqlToLower, 'select')) { // please show me help to the error on select $error_msg .= self::showMySQLDocu('SELECT'); } if ($is_modify_link) { $_url_params = array( 'sql_query' => $sql_query, 'show_query' => 1, ); if (strlen($table) > 0) { $_url_params['db'] = $db; $_url_params['table'] = $table; $doedit_goto = ''; } elseif (strlen($db) > 0) { $_url_params['db'] = $db; $doedit_goto = ''; } else { $doedit_goto = ''; } $error_msg .= $doedit_goto . self::getIcon('b_edit', __('Edit')) . ''; } $error_msg .= '

' . "\n" . '

' . "\n" . $formatted_sql . "\n" . '

' . "\n"; } // Display server's error. if (!empty($server_msg)) { $server_msg = preg_replace( "@((\015\012)|(\015)|(\012)){3,}@", "\n\n", $server_msg ); // Adds a link to MySQL documentation. $error_msg .= '

' . "\n" . ' ' . __('MySQL said: ') . '' . self::showMySQLDocu('Error-messages-server') . "\n" . '

' . "\n"; // The error message will be displayed within a CODE segment. // To preserve original formatting, but allow word-wrapping, // a couple of replacements are done. // All non-single blanks and TAB-characters are replaced with their // HTML-counterpart $server_msg = str_replace( array(' ', "\t"), array('  ', '    '), $server_msg ); // Replace line breaks $server_msg = nl2br($server_msg); $error_msg .= '' . $server_msg . '
'; } $error_msg .= '
'; $_SESSION['Import_message']['message'] = $error_msg; if (!$exit) { return $error_msg; } /** * If this is an AJAX request, there is no "Back" link and * `Response()` is used to send the response. */ $response = Response::getInstance(); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON('message', $error_msg); exit; } if (!empty($back_url)) { if (mb_strstr($back_url, '?')) { $back_url .= '&no_history=true'; } else { $back_url .= '?no_history=true'; } $_SESSION['Import_message']['go_back_url'] = $back_url; $error_msg .= '
' . '[ ' . __('Back') . ' ]' . '
' . "\n\n"; } exit($error_msg); } /** * Check the correct row count * * @param string $db the db name * @param array $table the table infos * * @return int $rowCount the possibly modified row count * */ private static function _checkRowCount($db, array $table) { $rowCount = 0; if ($table['Rows'] === null) { // Do not check exact row count here, // if row count is invalid possibly the table is defect // and this would break the navigation panel; // but we can check row count if this is a view or the // information_schema database // since Table::countRecords() returns a limited row count // in this case. // set this because Table::countRecords() can use it $tbl_is_view = $table['TABLE_TYPE'] == 'VIEW'; if ($tbl_is_view || $GLOBALS['dbi']->isSystemSchema($db)) { $rowCount = $GLOBALS['dbi'] ->getTable($db, $table['Name']) ->countRecords(); } } return $rowCount; } /** * returns array with tables of given db with extended information and grouped * * @param string $db name of db * @param string $tables name of tables * @param integer $limit_offset list offset * @param int|bool $limit_count max tables to return * * @return array (recursive) grouped table list */ public static function getTableList( $db, $tables = null, $limit_offset = 0, $limit_count = false ) { $sep = $GLOBALS['cfg']['NavigationTreeTableSeparator']; if ($tables === null) { $tables = $GLOBALS['dbi']->getTablesFull( $db, '', false, $limit_offset, $limit_count ); if ($GLOBALS['cfg']['NaturalOrder']) { uksort($tables, 'strnatcasecmp'); } } if (count($tables) < 1) { return $tables; } $default = array( 'Name' => '', 'Rows' => 0, 'Comment' => '', 'disp_name' => '', ); $table_groups = array(); foreach ($tables as $table_name => $table) { $table['Rows'] = self::_checkRowCount($db, $table); // in $group we save the reference to the place in $table_groups // where to store the table info if ($GLOBALS['cfg']['NavigationTreeEnableGrouping'] && $sep && mb_strstr($table_name, $sep) ) { $parts = explode($sep, $table_name); $group =& $table_groups; $i = 0; $group_name_full = ''; $parts_cnt = count($parts) - 1; while (($i < $parts_cnt) && ($i < $GLOBALS['cfg']['NavigationTreeTableLevel']) ) { $group_name = $parts[$i] . $sep; $group_name_full .= $group_name; if (! isset($group[$group_name])) { $group[$group_name] = array(); $group[$group_name]['is' . $sep . 'group'] = true; $group[$group_name]['tab' . $sep . 'count'] = 1; $group[$group_name]['tab' . $sep . 'group'] = $group_name_full; } elseif (! isset($group[$group_name]['is' . $sep . 'group'])) { $table = $group[$group_name]; $group[$group_name] = array(); $group[$group_name][$group_name] = $table; $group[$group_name]['is' . $sep . 'group'] = true; $group[$group_name]['tab' . $sep . 'count'] = 1; $group[$group_name]['tab' . $sep . 'group'] = $group_name_full; } else { $group[$group_name]['tab' . $sep . 'count']++; } $group =& $group[$group_name]; $i++; } } else { if (! isset($table_groups[$table_name])) { $table_groups[$table_name] = array(); } $group =& $table_groups; } $table['disp_name'] = $table['Name']; $group[$table_name] = array_merge($default, $table); } return $table_groups; } /* ----------------------- Set of misc functions ----------------------- */ /** * Adds backquotes on both sides of a database, table or field name. * and escapes backquotes inside the name with another backquote * * example: * * echo backquote('owner`s db'); // `owner``s db` * * * * @param mixed $a_name the database, table or field name to "backquote" * or array of it * @param boolean $do_it a flag to bypass this function (used by dump * functions) * * @return mixed the "backquoted" database, table or field name * * @access public */ public static function backquote($a_name, $do_it = true) { if (is_array($a_name)) { foreach ($a_name as &$data) { $data = self::backquote($data, $do_it); } return $a_name; } if (! $do_it) { if (!(Context::isKeyword($a_name) & Token::FLAG_KEYWORD_RESERVED) ) { return $a_name; } } // '0' is also empty for php :-( if (strlen($a_name) > 0 && $a_name !== '*') { return '`' . str_replace('`', '``', $a_name) . '`'; } return $a_name; } // end of the 'backquote()' function /** * Adds backquotes on both sides of a database, table or field name. * in compatibility mode * * example: * * echo backquoteCompat('owner`s db'); // `owner``s db` * * * * @param mixed $a_name the database, table or field name to * "backquote" or array of it * @param string $compatibility string compatibility mode (used by dump * functions) * @param boolean $do_it a flag to bypass this function (used by dump * functions) * * @return mixed the "backquoted" database, table or field name * * @access public */ public static function backquoteCompat( $a_name, $compatibility = 'MSSQL', $do_it = true ) { if (is_array($a_name)) { foreach ($a_name as &$data) { $data = self::backquoteCompat($data, $compatibility, $do_it); } return $a_name; } if (! $do_it) { if (!Context::isKeyword($a_name)) { return $a_name; } } // @todo add more compatibility cases (ORACLE for example) switch ($compatibility) { case 'MSSQL': $quote = '"'; break; default: $quote = "`"; break; } // '0' is also empty for php :-( if (strlen($a_name) > 0 && $a_name !== '*') { return $quote . $a_name . $quote; } return $a_name; } // end of the 'backquoteCompat()' function /** * Prepare the message and the query * usually the message is the result of the query executed * * @param Message|string $message the message to display * @param string $sql_query the query to display * @param string $type the type (level) of the message * * @return string * * @access public */ public static function getMessage( $message, $sql_query = null, $type = 'notice' ) { global $cfg; $retval = ''; if (null === $sql_query) { if (! empty($GLOBALS['display_query'])) { $sql_query = $GLOBALS['display_query']; } elseif (! empty($GLOBALS['unparsed_sql'])) { $sql_query = $GLOBALS['unparsed_sql']; } elseif (! empty($GLOBALS['sql_query'])) { $sql_query = $GLOBALS['sql_query']; } else { $sql_query = ''; } } $render_sql = $cfg['ShowSQL'] == true && ! empty($sql_query) && $sql_query !== ';'; if (isset($GLOBALS['using_bookmark_message'])) { $retval .= $GLOBALS['using_bookmark_message']->getDisplay(); unset($GLOBALS['using_bookmark_message']); } if ($render_sql) { $retval .= '
' . "\n"; } if ($message instanceof Message) { if (isset($GLOBALS['special_message'])) { $message->addText($GLOBALS['special_message']); unset($GLOBALS['special_message']); } $retval .= $message->getDisplay(); } else { $retval .= '
'; $retval .= Sanitize::sanitize($message); if (isset($GLOBALS['special_message'])) { $retval .= Sanitize::sanitize($GLOBALS['special_message']); unset($GLOBALS['special_message']); } $retval .= '
'; } if ($render_sql) { $query_too_big = false; $queryLength = mb_strlen($sql_query); if ($queryLength > $cfg['MaxCharactersInDisplayedSQL']) { // when the query is large (for example an INSERT of binary // data), the parser chokes; so avoid parsing the query $query_too_big = true; $query_base = mb_substr( $sql_query, 0, $cfg['MaxCharactersInDisplayedSQL'] ) . '[...]'; } else { $query_base = $sql_query; } // Html format the query to be displayed // If we want to show some sql code it is easiest to create it here /* SQL-Parser-Analyzer */ if (! empty($GLOBALS['show_as_php'])) { $new_line = '\\n"
' . "\n" . '    . "'; $query_base = htmlspecialchars(addslashes($query_base)); $query_base = preg_replace( '/((\015\012)|(\015)|(\012))/', $new_line, $query_base ); $query_base = '
' . "\n"
                    . '$sql = "' . $query_base . '";' . "\n"
                    . '
'; } elseif ($query_too_big) { $query_base = '
' . "\n" .
                    htmlspecialchars($query_base) .
                    '
'; } else { $query_base = self::formatSql($query_base); } // Prepares links that may be displayed to edit/explain the query // (don't go to default pages, we must go to the page // where the query box is available) // Basic url query part $url_params = array(); if (! isset($GLOBALS['db'])) { $GLOBALS['db'] = ''; } if (strlen($GLOBALS['db']) > 0) { $url_params['db'] = $GLOBALS['db']; if (strlen($GLOBALS['table']) > 0) { $url_params['table'] = $GLOBALS['table']; $edit_link = 'tbl_sql.php'; } else { $edit_link = 'db_sql.php'; } } else { $edit_link = 'server_sql.php'; } // Want to have the query explained // but only explain a SELECT (that has not been explained) /* SQL-Parser-Analyzer */ $explain_link = ''; $is_select = preg_match('@^SELECT[[:space:]]+@i', $sql_query); if (! empty($cfg['SQLQuery']['Explain']) && ! $query_too_big) { $explain_params = $url_params; if ($is_select) { $explain_params['sql_query'] = 'EXPLAIN ' . $sql_query; $explain_link = ' [ ' . self::linkOrButton( 'import.php' . Url::getCommon($explain_params), __('Explain SQL') ) . ' ]'; } elseif (preg_match( '@^EXPLAIN[[:space:]]+SELECT[[:space:]]+@i', $sql_query )) { $explain_params['sql_query'] = mb_substr($sql_query, 8); $explain_link = ' [ ' . self::linkOrButton( 'import.php' . Url::getCommon($explain_params), __('Skip Explain SQL') ) . ']'; $url = 'https://mariadb.org/explain_analyzer/analyze/' . '?client=phpMyAdmin&raw_explain=' . urlencode(self::_generateRowQueryOutput($sql_query)); $explain_link .= ' [' . self::linkOrButton( htmlspecialchars('url.php?url=' . urlencode($url)), sprintf(__('Analyze Explain at %s'), 'mariadb.org'), array(), '_blank' ) . ' ]'; } } //show explain $url_params['sql_query'] = $sql_query; $url_params['show_query'] = 1; // even if the query is big and was truncated, offer the chance // to edit it (unless it's enormous, see linkOrButton() ) if (! empty($cfg['SQLQuery']['Edit']) && empty($GLOBALS['show_as_php']) ) { $edit_link .= Url::getCommon($url_params); $edit_link = ' [ ' . self::linkOrButton($edit_link, __('Edit')) . ' ]'; } else { $edit_link = ''; } // Also we would like to get the SQL formed in some nice // php-code if (! empty($cfg['SQLQuery']['ShowAsPHP']) && ! $query_too_big) { if (! empty($GLOBALS['show_as_php'])) { $php_link = ' [ ' . self::linkOrButton( 'import.php' . Url::getCommon($url_params), __('Without PHP code') ) . ' ]'; $php_link .= ' [ ' . self::linkOrButton( 'import.php' . Url::getCommon($url_params), __('Submit query') ) . ' ]'; } else { $php_params = $url_params; $php_params['show_as_php'] = 1; $php_link = ' [ ' . self::linkOrButton( 'import.php' . Url::getCommon($php_params), __('Create PHP code') ) . ' ]'; } } else { $php_link = ''; } //show as php // Refresh query if (! empty($cfg['SQLQuery']['Refresh']) && ! isset($GLOBALS['show_as_php']) // 'Submit query' does the same && preg_match('@^(SELECT|SHOW)[[:space:]]+@i', $sql_query) ) { $refresh_link = 'import.php' . Url::getCommon($url_params); $refresh_link = ' [ ' . self::linkOrButton($refresh_link, __('Refresh')) . ']'; } else { $refresh_link = ''; } //refresh $retval .= '
'; $retval .= $query_base; $retval .= '
'; $retval .= ''; $retval .= '
'; } return $retval; } // end of the 'getMessage()' function /** * Execute an EXPLAIN query and formats results similar to MySQL command line * utility. * * @param string $sqlQuery EXPLAIN query * * @return string query resuls */ private static function _generateRowQueryOutput($sqlQuery) { $ret = ''; $result = $GLOBALS['dbi']->query($sqlQuery); if ($result) { $devider = '+'; $columnNames = '|'; $fieldsMeta = $GLOBALS['dbi']->getFieldsMeta($result); foreach ($fieldsMeta as $meta) { $devider .= '---+'; $columnNames .= ' ' . $meta->name . ' |'; } $devider .= "\n"; $ret .= $devider . $columnNames . "\n" . $devider; while ($row = $GLOBALS['dbi']->fetchRow($result)) { $values = '|'; foreach ($row as $value) { if (is_null($value)) { $value = 'NULL'; } $values .= ' ' . $value . ' |'; } $ret .= $values . "\n"; } $ret .= $devider; } return $ret; } /** * Verifies if current MySQL server supports profiling * * @access public * * @return boolean whether profiling is supported */ public static function profilingSupported() { if (!self::cacheExists('profiling_supported')) { // 5.0.37 has profiling but for example, 5.1.20 does not // (avoid a trip to the server for MySQL before 5.0.37) // and do not set a constant as we might be switching servers if ($GLOBALS['dbi']->fetchValue("SELECT @@have_profiling") ) { self::cacheSet('profiling_supported', true); } else { self::cacheSet('profiling_supported', false); } } return self::cacheGet('profiling_supported'); } /** * Formats $value to byte view * * @param double|int $value the value to format * @param int $limes the sensitiveness * @param int $comma the number of decimals to retain * * @return array the formatted value and its unit * * @access public */ public static function formatByteDown($value, $limes = 6, $comma = 0) { if ($value === null) { return null; } $byteUnits = array( /* l10n: shortcuts for Byte */ __('B'), /* l10n: shortcuts for Kilobyte */ __('KiB'), /* l10n: shortcuts for Megabyte */ __('MiB'), /* l10n: shortcuts for Gigabyte */ __('GiB'), /* l10n: shortcuts for Terabyte */ __('TiB'), /* l10n: shortcuts for Petabyte */ __('PiB'), /* l10n: shortcuts for Exabyte */ __('EiB') ); $dh = pow(10, $comma); $li = pow(10, $limes); $unit = $byteUnits[0]; for ($d = 6, $ex = 15; $d >= 1; $d--, $ex-=3) { $unitSize = $li * pow(10, $ex); if (isset($byteUnits[$d]) && $value >= $unitSize) { // use 1024.0 to avoid integer overflow on 64-bit machines $value = round($value / (pow(1024, $d) / $dh)) /$dh; $unit = $byteUnits[$d]; break 1; } // end if } // end for if ($unit != $byteUnits[0]) { // if the unit is not bytes (as represented in current language) // reformat with max length of 5 // 4th parameter=true means do not reformat if value < 1 $return_value = self::formatNumber($value, 5, $comma, true, false); } else { // do not reformat, just handle the locale $return_value = self::formatNumber($value, 0); } return array(trim($return_value), $unit); } // end of the 'formatByteDown' function /** * Formats $value to the given length and appends SI prefixes * with a $length of 0 no truncation occurs, number is only formatted * to the current locale * * examples: * * echo formatNumber(123456789, 6); // 123,457 k * echo formatNumber(-123456789, 4, 2); // -123.46 M * echo formatNumber(-0.003, 6); // -3 m * echo formatNumber(0.003, 3, 3); // 0.003 * echo formatNumber(0.00003, 3, 2); // 0.03 m * echo formatNumber(0, 6); // 0 * * * @param double $value the value to format * @param integer $digits_left number of digits left of the comma * @param integer $digits_right number of digits right of the comma * @param boolean $only_down do not reformat numbers below 1 * @param boolean $noTrailingZero removes trailing zeros right of the comma * (default: true) * * @return string the formatted value and its unit * * @access public */ public static function formatNumber( $value, $digits_left = 3, $digits_right = 0, $only_down = false, $noTrailingZero = true ) { if ($value == 0) { return '0'; } $originalValue = $value; //number_format is not multibyte safe, str_replace is safe if ($digits_left === 0) { $value = number_format( $value, $digits_right, /* l10n: Decimal separator */ __('.'), /* l10n: Thousands separator */ __(',') ); if (($originalValue != 0) && (floatval($value) == 0)) { $value = ' <' . (1 / pow(10, $digits_right)); } return $value; } // this units needs no translation, ISO $units = array( -8 => 'y', -7 => 'z', -6 => 'a', -5 => 'f', -4 => 'p', -3 => 'n', -2 => 'µ', -1 => 'm', 0 => ' ', 1 => 'k', 2 => 'M', 3 => 'G', 4 => 'T', 5 => 'P', 6 => 'E', 7 => 'Z', 8 => 'Y' ); /* l10n: Decimal separator */ $decimal_sep = __('.'); /* l10n: Thousands separator */ $thousands_sep = __(','); // check for negative value to retain sign if ($value < 0) { $sign = '-'; $value = abs($value); } else { $sign = ''; } $dh = pow(10, $digits_right); /* * This gives us the right SI prefix already, * but $digits_left parameter not incorporated */ $d = floor(log10($value) / 3); /* * Lowering the SI prefix by 1 gives us an additional 3 zeros * So if we have 3,6,9,12.. free digits ($digits_left - $cur_digits) * to use, then lower the SI prefix */ $cur_digits = floor(log10($value / pow(1000, $d))+1); if ($digits_left > $cur_digits) { $d -= floor(($digits_left - $cur_digits)/3); } if ($d < 0 && $only_down) { $d = 0; } $value = round($value / (pow(1000, $d) / $dh)) /$dh; $unit = $units[$d]; // number_format is not multibyte safe, str_replace is safe $formattedValue = number_format( $value, $digits_right, $decimal_sep, $thousands_sep ); // If we don't want any zeros, remove them now if ($noTrailingZero && strpos($formattedValue, $decimal_sep) !== false) { $formattedValue = preg_replace('/' . preg_quote($decimal_sep) . '?0+$/', '', $formattedValue); } if ($originalValue != 0 && floatval($value) == 0) { return ' <' . number_format( (1 / pow(10, $digits_right)), $digits_right, $decimal_sep, $thousands_sep ) . ' ' . $unit; } return $sign . $formattedValue . ' ' . $unit; } // end of the 'formatNumber' function /** * Returns the number of bytes when a formatted size is given * * @param string $formatted_size the size expression (for example 8MB) * * @return integer The numerical part of the expression (for example 8) */ public static function extractValueFromFormattedSize($formatted_size) { $return_value = -1; if (preg_match('/^[0-9]+GB$/', $formatted_size)) { $return_value = mb_substr($formatted_size, 0, -2) * pow(1024, 3); } elseif (preg_match('/^[0-9]+MB$/', $formatted_size)) { $return_value = mb_substr($formatted_size, 0, -2) * pow(1024, 2); } elseif (preg_match('/^[0-9]+K$/', $formatted_size)) { $return_value = mb_substr($formatted_size, 0, -1) * pow(1024, 1); } return $return_value; }// end of the 'extractValueFromFormattedSize' function /** * Writes localised date * * @param integer $timestamp the current timestamp * @param string $format format * * @return string the formatted date * * @access public */ public static function localisedDate($timestamp = -1, $format = '') { $month = array( /* l10n: Short month name */ __('Jan'), /* l10n: Short month name */ __('Feb'), /* l10n: Short month name */ __('Mar'), /* l10n: Short month name */ __('Apr'), /* l10n: Short month name */ _pgettext('Short month name', 'May'), /* l10n: Short month name */ __('Jun'), /* l10n: Short month name */ __('Jul'), /* l10n: Short month name */ __('Aug'), /* l10n: Short month name */ __('Sep'), /* l10n: Short month name */ __('Oct'), /* l10n: Short month name */ __('Nov'), /* l10n: Short month name */ __('Dec')); $day_of_week = array( /* l10n: Short week day name for Sunday */ _pgettext('Short week day name', 'Sun'), /* l10n: Short week day name for Monday */ __('Mon'), /* l10n: Short week day name for Tuesday */ __('Tue'), /* l10n: Short week day name for Wednesday */ __('Wed'), /* l10n: Short week day name for Thursday */ __('Thu'), /* l10n: Short week day name for Friday */ __('Fri'), /* l10n: Short week day name for Saturday */ __('Sat')); if ($format == '') { /* l10n: See https://www.php.net/manual/en/function.strftime.php */ $format = __('%B %d, %Y at %I:%M %p'); } if ($timestamp == -1) { $timestamp = time(); } $date = preg_replace( '@%[aA]@', $day_of_week[(int)strftime('%w', $timestamp)], $format ); $date = preg_replace( '@%[bB]@', $month[(int)strftime('%m', $timestamp)-1], $date ); /* Fill in AM/PM */ $hours = (int)date('H', $timestamp); if ($hours >= 12) { $am_pm = _pgettext('AM/PM indication in time', 'PM'); } else { $am_pm = _pgettext('AM/PM indication in time', 'AM'); } $date = preg_replace('@%[pP]@', $am_pm, $date); $ret = strftime($date, $timestamp); // Some OSes such as Win8.1 Traditional Chinese version did not produce UTF-8 // output here. See https://github.com/phpmyadmin/phpmyadmin/issues/10598 if (mb_detect_encoding($ret, 'UTF-8', true) != 'UTF-8') { $ret = date('Y-m-d H:i:s', $timestamp); } return $ret; } // end of the 'localisedDate()' function /** * returns a tab for tabbed navigation. * If the variables $link and $args ar left empty, an inactive tab is created * * @param array $tab array with all options * @param array $url_params tab specific URL parameters * * @return string html code for one tab, a link if valid otherwise a span * * @access public */ public static function getHtmlTab(array $tab, array $url_params = array()) { // default values $defaults = array( 'text' => '', 'class' => '', 'active' => null, 'link' => '', 'sep' => '?', 'attr' => '', 'args' => '', 'warning' => '', 'fragment' => '', 'id' => '', ); $tab = array_merge($defaults, $tab); // determine additional style-class if (empty($tab['class'])) { if (! empty($tab['active']) || Core::isValid($GLOBALS['active_page'], 'identical', $tab['link']) ) { $tab['class'] = 'active'; } elseif (is_null($tab['active']) && empty($GLOBALS['active_page']) && (basename($GLOBALS['PMA_PHP_SELF']) == $tab['link']) ) { $tab['class'] = 'active'; } } // build the link if (! empty($tab['link'])) { // If there are any tab specific URL parameters, merge those with // the general URL parameters if (! empty($tab['args']) && is_array($tab['args'])) { $url_params = array_merge($url_params, $tab['args']); } $tab['link'] = htmlentities($tab['link']) . Url::getCommon($url_params); } if (! empty($tab['fragment'])) { $tab['link'] .= $tab['fragment']; } // display icon if (isset($tab['icon'])) { // avoid generating an alt tag, because it only illustrates // the text that follows and if browser does not display // images, the text is duplicated $tab['text'] = self::getIcon( $tab['icon'], $tab['text'], false, true, 'TabsMode' ); } elseif (empty($tab['text'])) { // check to not display an empty link-text $tab['text'] = '?'; trigger_error( 'empty linktext in function ' . __FUNCTION__ . '()', E_USER_NOTICE ); } //Set the id for the tab, if set in the params $tabId = (empty($tab['id']) ? null : $tab['id']); $item = array(); if (!empty($tab['link'])) { $item = array( 'content' => $tab['text'], 'url' => array( 'href' => empty($tab['link']) ? null : $tab['link'], 'id' => $tabId, 'class' => 'tab' . htmlentities($tab['class']), ), ); } else { $item['content'] = '' . $tab['text'] . ''; } $item['class'] = $tab['class'] == 'active' ? 'active' : ''; return Template::get('list/item') ->render($item); } // end of the 'getHtmlTab()' function /** * returns html-code for a tab navigation * * @param array $tabs one element per tab * @param array $url_params additional URL parameters * @param string $menu_id HTML id attribute for the menu container * @param bool $resizable whether to add a "resizable" class * * @return string html-code for tab-navigation */ public static function getHtmlTabs( array $tabs, array $url_params, $menu_id, $resizable = false ) { $class = ''; if ($resizable) { $class = ' class="resizable-menu"'; } $tab_navigation = '' . "\n"; return $tab_navigation; } /** * Displays a link, or a link with code to trigger POST request. * * POST is used in following cases: * * - URL is too long * - URL components are over Suhosin limits * - There is SQL query in the parameters * * @param string $url the URL * @param string $message the link message * @param mixed $tag_params string: js confirmation; array: additional tag * params (f.e. style="") * @param string $target target * * @return string the results to be echoed or saved in an array */ public static function linkOrButton( $url, $message, $tag_params = array(), $target = '' ) { $url_length = strlen($url); if (! is_array($tag_params)) { $tmp = $tag_params; $tag_params = array(); if (! empty($tmp)) { $tag_params['onclick'] = 'return confirmLink(this, \'' . Sanitize::escapeJsString($tmp) . '\')'; } unset($tmp); } if (! empty($target)) { $tag_params['target'] = $target; if ($target === '_blank' && strncmp($url, 'url.php?', 8) == 0) { $tag_params['rel'] = 'noopener noreferrer'; } } // Suhosin: Check that each query parameter is not above maximum $in_suhosin_limits = true; if ($url_length <= $GLOBALS['cfg']['LinkLengthLimit']) { $suhosin_get_MaxValueLength = ini_get('suhosin.get.max_value_length'); if ($suhosin_get_MaxValueLength) { $query_parts = self::splitURLQuery($url); foreach ($query_parts as $query_pair) { if (strpos($query_pair, '=') === false) { continue; } list(, $eachval) = explode('=', $query_pair); if (strlen($eachval) > $suhosin_get_MaxValueLength ) { $in_suhosin_limits = false; break; } } } } $tag_params_strings = array(); if (($url_length > $GLOBALS['cfg']['LinkLengthLimit']) || ! $in_suhosin_limits // Has as sql_query without a signature || ( strpos($url, 'sql_query=') !== false && strpos($url, 'sql_signature=') === false) || strpos($url, 'view[as]=') !== false ) { $parts = explode('?', $url, 2); /* * The data-post indicates that client should do POST * this is handled in js/ajax.js */ $tag_params_strings[] = 'data-post="' . (isset($parts[1]) ? $parts[1] : '') . '"'; $url = $parts[0]; if(array_key_exists('class', $tag_params) && strpos($tag_params['class'], 'create_view') !== false ) { $url .= '?' . explode('&', $parts[1], 2)[0]; } } foreach ($tag_params as $par_name => $par_value) { $tag_params_strings[] = $par_name . '="' . htmlspecialchars($par_value) . '"'; } // no whitespace within an else Safari will make it part of the link return '' . $message . ''; } // end of the 'linkOrButton()' function /** * Splits a URL string by parameter * * @param string $url the URL * * @return array the parameter/value pairs, for example [0] db=sakila */ public static function splitURLQuery($url) { // decode encoded url separators $separator = Url::getArgSeparator(); // on most places separator is still hard coded ... if ($separator !== '&') { // ... so always replace & with $separator $url = str_replace(htmlentities('&'), $separator, $url); $url = str_replace('&', $separator, $url); } $url = str_replace(htmlentities($separator), $separator, $url); // end decode $url_parts = parse_url($url); if (! empty($url_parts['query'])) { return explode($separator, $url_parts['query']); } return array(); } /** * Returns a given timespan value in a readable format. * * @param int $seconds the timespan * * @return string the formatted value */ public static function timespanFormat($seconds) { $days = floor($seconds / 86400); if ($days > 0) { $seconds -= $days * 86400; } $hours = floor($seconds / 3600); if ($days > 0 || $hours > 0) { $seconds -= $hours * 3600; } $minutes = floor($seconds / 60); if ($days > 0 || $hours > 0 || $minutes > 0) { $seconds -= $minutes * 60; } return sprintf( __('%s days, %s hours, %s minutes and %s seconds'), (string)$days, (string)$hours, (string)$minutes, (string)$seconds ); } /** * Function added to avoid path disclosures. * Called by each script that needs parameters, it displays * an error message and, by default, stops the execution. * * @param string[] $params The names of the parameters needed by the calling * script * @param boolean $request Check parameters in request * * @return void * * @access public */ public static function checkParameters($params, $request=false) { $reported_script_name = basename($GLOBALS['PMA_PHP_SELF']); $found_error = false; $error_message = ''; if ($request) { $array = $_REQUEST; } else { $array = $GLOBALS; } foreach ($params as $param) { if (! isset($array[$param])) { $error_message .= $reported_script_name . ': ' . __('Missing parameter:') . ' ' . $param . self::showDocu('faq', 'faqmissingparameters',true) . '[br]'; $found_error = true; } } if ($found_error) { Core::fatalError($error_message); } } // end function /** * Function to generate unique condition for specified row. * * @param resource $handle current query result * @param integer $fields_cnt number of fields * @param array $fields_meta meta information about fields * @param array $row current row * @param boolean $force_unique generate condition only on pk * or unique * @param string|boolean $restrict_to_table restrict the unique condition * to this table or false if * none * @param array|null $analyzed_sql_results the analyzed query * * @access public * * @return array the calculated condition and whether condition is unique */ public static function getUniqueCondition( $handle, $fields_cnt, array $fields_meta, array $row, $force_unique = false, $restrict_to_table = false, $analyzed_sql_results = null ) { $primary_key = ''; $unique_key = ''; $nonprimary_condition = ''; $preferred_condition = ''; $primary_key_array = array(); $unique_key_array = array(); $nonprimary_condition_array = array(); $condition_array = array(); for ($i = 0; $i < $fields_cnt; ++$i) { $con_val = ''; $field_flags = $GLOBALS['dbi']->fieldFlags($handle, $i); $meta = $fields_meta[$i]; // do not use a column alias in a condition if (! isset($meta->orgname) || strlen($meta->orgname) === 0) { $meta->orgname = $meta->name; if (!empty($analyzed_sql_results['statement']->expr)) { foreach ($analyzed_sql_results['statement']->expr as $expr) { if ((empty($expr->alias)) || (empty($expr->column))) { continue; } if (strcasecmp($meta->name, $expr->alias) == 0) { $meta->orgname = $expr->column; break; } } } } // Do not use a table alias in a condition. // Test case is: // select * from galerie x WHERE //(select count(*) from galerie y where y.datum=x.datum)>1 // // But orgtable is present only with mysqli extension so the // fix is only for mysqli. // Also, do not use the original table name if we are dealing with // a view because this view might be updatable. // (The isView() verification should not be costly in most cases // because there is some caching in the function). if (isset($meta->orgtable) && ($meta->table != $meta->orgtable) && ! $GLOBALS['dbi']->getTable($GLOBALS['db'], $meta->table)->isView() ) { $meta->table = $meta->orgtable; } // If this field is not from the table which the unique clause needs // to be restricted to. if ($restrict_to_table && $restrict_to_table != $meta->table) { continue; } // to fix the bug where float fields (primary or not) // can't be matched because of the imprecision of // floating comparison, use CONCAT // (also, the syntax "CONCAT(field) IS NULL" // that we need on the next "if" will work) if ($meta->type == 'real') { $con_key = 'CONCAT(' . self::backquote($meta->table) . '.' . self::backquote($meta->orgname) . ')'; } else { $con_key = self::backquote($meta->table) . '.' . self::backquote($meta->orgname); } // end if... else... $condition = ' ' . $con_key . ' '; if (! isset($row[$i]) || is_null($row[$i])) { $con_val = 'IS NULL'; } else { // timestamp is numeric on some MySQL 4.1 // for real we use CONCAT above and it should compare to string if ($meta->numeric && ($meta->type != 'timestamp') && ($meta->type != 'real') ) { $con_val = '= ' . $row[$i]; } elseif ((($meta->type == 'blob') || ($meta->type == 'string')) && stristr($field_flags, 'BINARY') && ! empty($row[$i]) ) { // hexify only if this is a true not empty BLOB or a BINARY // do not waste memory building a too big condition if (mb_strlen($row[$i]) < 1000) { // use a CAST if possible, to avoid problems // if the field contains wildcard characters % or _ $con_val = '= CAST(0x' . bin2hex($row[$i]) . ' AS BINARY)'; } elseif ($fields_cnt == 1) { // when this blob is the only field present // try settling with length comparison $condition = ' CHAR_LENGTH(' . $con_key . ') '; $con_val = ' = ' . mb_strlen($row[$i]); } else { // this blob won't be part of the final condition $con_val = null; } } elseif (in_array($meta->type, self::getGISDatatypes()) && ! empty($row[$i]) ) { // do not build a too big condition if (mb_strlen($row[$i]) < 5000) { $condition .= '=0x' . bin2hex($row[$i]) . ' AND'; } else { $condition = ''; } } elseif ($meta->type == 'bit') { $con_val = "= b'" . self::printableBitValue($row[$i], $meta->length) . "'"; } else { $con_val = '= \'' . $GLOBALS['dbi']->escapeString($row[$i]) . '\''; } } if ($con_val != null) { $condition .= $con_val . ' AND'; if ($meta->primary_key > 0) { $primary_key .= $condition; $primary_key_array[$con_key] = $con_val; } elseif ($meta->unique_key > 0) { $unique_key .= $condition; $unique_key_array[$con_key] = $con_val; } $nonprimary_condition .= $condition; $nonprimary_condition_array[$con_key] = $con_val; } } // end for // Correction University of Virginia 19991216: // prefer primary or unique keys for condition, // but use conjunction of all values if no primary key $clause_is_unique = true; if ($primary_key) { $preferred_condition = $primary_key; $condition_array = $primary_key_array; } elseif ($unique_key) { $preferred_condition = $unique_key; $condition_array = $unique_key_array; } elseif (! $force_unique) { $preferred_condition = $nonprimary_condition; $condition_array = $nonprimary_condition_array; $clause_is_unique = false; } $where_clause = trim(preg_replace('|\s?AND$|', '', $preferred_condition)); return(array($where_clause, $clause_is_unique, $condition_array)); } // end function /** * Generate the charset query part * * @param string $collation Collation * @param boolean optional $override force 'CHARACTER SET' keyword * * @return string */ static function getCharsetQueryPart($collation, $override = false) { list($charset) = explode('_', $collation); $keyword = ' CHARSET='; if ($override) { $keyword = ' CHARACTER SET '; } return $keyword . $charset . ($charset == $collation ? '' : ' COLLATE ' . $collation); } /** * Generate a button or image tag * * @param string $button_name name of button element * @param string $button_class class of button or image element * @param string $text text to display * @param string $image image to display * @param string $value value * * @return string html content * * @access public */ public static function getButtonOrImage( $button_name, $button_class, $text, $image, $value = '' ) { if ($value == '') { $value = $text; } if ($GLOBALS['cfg']['ActionLinksMode'] == 'text') { return ' ' . "\n"; } return '' . "\n"; } // end function /** * Generate a pagination selector for browsing resultsets * * @param string $name The name for the request parameter * @param int $rows Number of rows in the pagination set * @param int $pageNow current page number * @param int $nbTotalPage number of total pages * @param int $showAll If the number of pages is lower than this * variable, no pages will be omitted in pagination * @param int $sliceStart How many rows at the beginning should always * be shown? * @param int $sliceEnd How many rows at the end should always be shown? * @param int $percent Percentage of calculation page offsets to hop to a * next page * @param int $range Near the current page, how many pages should * be considered "nearby" and displayed as well? * @param string $prompt The prompt to display (sometimes empty) * * @return string * * @access public */ public static function pageselector( $name, $rows, $pageNow = 1, $nbTotalPage = 1, $showAll = 200, $sliceStart = 5, $sliceEnd = 5, $percent = 20, $range = 10, $prompt = '' ) { $increment = floor($nbTotalPage / $percent); $pageNowMinusRange = ($pageNow - $range); $pageNowPlusRange = ($pageNow + $range); $gotopage = $prompt . ' '; return $gotopage; } // end function /** * Calculate page number through position * @param int $pos position of first item * @param int $max_count number of items per page * @return int $page_num * @access public */ public static function getPageFromPosition($pos, $max_count) { return floor($pos / $max_count) + 1; } /** * Prepare navigation for a list * * @param int $count number of elements in the list * @param int $pos current position in the list * @param array $_url_params url parameters * @param string $script script name for form target * @param string $frame target frame * @param int $max_count maximum number of elements to display from * the list * @param string $name the name for the request parameter * @param string[] $classes additional classes for the container * * @return string $list_navigator_html the html content * * @access public * * @todo use $pos from $_url_params */ public static function getListNavigator( $count, $pos, array $_url_params, $script, $frame, $max_count, $name = 'pos', $classes = array() ) { // This is often coming from $cfg['MaxTableList'] and // people sometimes set it to empty string $max_count = intval($max_count); if ($max_count <= 0) { $max_count = 250; } $class = $frame == 'frame_navigation' ? ' class="ajax"' : ''; $list_navigator_html = ''; if ($max_count < $count) { $classes[] = 'pageselector'; $list_navigator_html .= '
'; if ($frame != 'frame_navigation') { $list_navigator_html .= __('Page number:'); } // Move to the beginning or to the previous page if ($pos > 0) { $caption1 = ''; $caption2 = ''; if (self::showIcons('TableNavigationLinksMode')) { $caption1 .= '<< '; $caption2 .= '< '; } if (self::showText('TableNavigationLinksMode')) { $caption1 .= _pgettext('First page', 'Begin'); $caption2 .= _pgettext('Previous page', 'Previous'); } $title1 = ' title="' . _pgettext('First page', 'Begin') . '"'; $title2 = ' title="' . _pgettext('Previous page', 'Previous') . '"'; $_url_params[$name] = 0; $list_navigator_html .= '' . $caption1 . ''; $_url_params[$name] = $pos - $max_count; $list_navigator_html .= ' ' . $caption2 . ''; } $list_navigator_html .= '
'; $list_navigator_html .= Url::getHiddenInputs($_url_params); $list_navigator_html .= self::pageselector( $name, $max_count, self::getPageFromPosition($pos, $max_count), ceil($count / $max_count) ); $list_navigator_html .= '
'; if ($pos + $max_count < $count) { $caption3 = ''; $caption4 = ''; if (self::showText('TableNavigationLinksMode')) { $caption3 .= _pgettext('Next page', 'Next'); $caption4 .= _pgettext('Last page', 'End'); } if (self::showIcons('TableNavigationLinksMode')) { $caption3 .= ' >'; $caption4 .= ' >>'; if (! self::showText('TableNavigationLinksMode')) { } } $title3 = ' title="' . _pgettext('Next page', 'Next') . '"'; $title4 = ' title="' . _pgettext('Last page', 'End') . '"'; $_url_params[$name] = $pos + $max_count; $list_navigator_html .= '' . $caption3 . ''; $_url_params[$name] = floor($count / $max_count) * $max_count; if ($_url_params[$name] == $count) { $_url_params[$name] = $count - $max_count; } $list_navigator_html .= ' ' . $caption4 . ''; } $list_navigator_html .= '
' . "\n"; } return $list_navigator_html; } /** * replaces %u in given path with current user name * * example: * * $user_dir = userDir('/var/pma_tmp/%u/'); // '/var/pma_tmp/root/' * * * * @param string $dir with wildcard for user * * @return string per user directory */ public static function userDir($dir) { // add trailing slash if (mb_substr($dir, -1) != '/') { $dir .= '/'; } return str_replace('%u', Core::securePath($GLOBALS['cfg']['Server']['user']), $dir); } /** * returns html code for db link to default db page * * @param string $database database * * @return string html link to default db page */ public static function getDbLink($database = null) { if (strlen($database) === 0) { if (strlen($GLOBALS['db']) === 0) { return ''; } $database = $GLOBALS['db']; } else { $database = self::unescapeMysqlWildcards($database); } return '' . htmlspecialchars($database) . ''; } /** * Prepare a lightbulb hint explaining a known external bug * that affects a functionality * * @param string $functionality localized message explaining the func. * @param string $component 'mysql' (eventually, 'php') * @param string $minimum_version of this component * @param string $bugref bug reference for this component * * @return String */ public static function getExternalBug( $functionality, $component, $minimum_version, $bugref ) { $ext_but_html = ''; if (($component == 'mysql') && ($GLOBALS['dbi']->getVersion() < $minimum_version)) { $ext_but_html .= self::showHint( sprintf( __('The %s functionality is affected by a known bug, see %s'), $functionality, Core::linkURL('https://bugs.mysql.com/') . $bugref ) ); } return $ext_but_html; } /** * Generates a set of radio HTML fields * * @param string $html_field_name the radio HTML field * @param array $choices the choices values and labels * @param string $checked_choice the choice to check by default * @param boolean $line_break whether to add HTML line break after a choice * @param boolean $escape_label whether to use htmlspecialchars() on label * @param string $class enclose each choice with a div of this class * @param string $id_prefix prefix for the id attribute, name will be * used if this is not supplied * * @return string set of html radio fiels */ public static function getRadioFields( $html_field_name, array $choices, $checked_choice = '', $line_break = true, $escape_label = true, $class = '', $id_prefix = '' ) { $radio_html = ''; foreach ($choices as $choice_value => $choice_label) { if (! $id_prefix) { $id_prefix = $html_field_name; } $html_field_id = $id_prefix . '_' . $choice_value; if ($choice_value == $checked_choice){ $checked = 1; } else{ $checked = 0; } $radio_html .= Template::get('radio_fields')->render([ 'class' => $class, 'html_field_name' => $html_field_name, 'html_field_id' => $html_field_id, 'choice_value' => $choice_value, 'is_line_break' => $line_break, 'choice_label' => $choice_label, 'escape_label' => $escape_label, 'checked' => $checked ]); } return $radio_html; } /** * Generates and returns an HTML dropdown * * @param string $select_name name for the select element * @param array $choices choices values * @param string $active_choice the choice to select by default * @param string $id id of the select element; can be different in * case the dropdown is present more than once * on the page * @param string $class class for the select element * @param string $placeholder Placeholder for dropdown if nothing else * is selected * * @return string html content * * @todo support titles */ public static function getDropdown( $select_name, array $choices, $active_choice, $id, $class = '', $placeholder = null ) { $resultOptions = []; $selected = false; foreach ($choices as $one_choice_value => $one_choice_label) { $resultOptions[$one_choice_value]['value'] = $one_choice_value; $resultOptions[$one_choice_value]['selected'] = false; if ($one_choice_value == $active_choice) { $resultOptions[$one_choice_value]['selected'] = true; $selected = true; } $resultOptions[$one_choice_value]['label'] = $one_choice_label; } return Template::get('dropdown')->render([ 'select_name' => $select_name, 'id' => $id, 'class' => $class, 'placeholder' => $placeholder, 'selected' => $selected, 'result_options' => $resultOptions, ]); } /** * Generates a slider effect (jQjuery) * Takes care of generating the initial
and the link * controlling the slider; you have to generate the
yourself * after the sliding section. * * @param string $id the id of the
on which to apply the effect * @param string $message the message to show as a link * @param string|null $overrideDefault override InitialSlidersState config * * @return string html div element * */ public static function getDivForSliderEffect($id = '', $message = '', $overrideDefault = null) { return Template::get('div_for_slider_effect')->render([ 'id' => $id, 'initial_sliders_state' => ($overrideDefault != null) ? $overrideDefault : $GLOBALS['cfg']['InitialSlidersState'], 'message' => $message, ]); } /** * Creates an AJAX sliding toggle button * (or and equivalent form when AJAX is disabled) * * @param string $action The URL for the request to be executed * @param string $select_name The name for the dropdown box * @param array $options An array of options (see PhpMyAdmin\Rte\Footer) * @param string $callback A JS snippet to execute when the request is * successfully processed * * @return string HTML code for the toggle button */ public static function toggleButton($action, $select_name, array $options, $callback) { // Do the logic first $link = "$action&" . urlencode($select_name) . "="; $link_on = $link . urlencode($options[1]['value']); $link_off = $link . urlencode($options[0]['value']); if ($options[1]['selected'] == true) { $state = 'on'; } elseif ($options[0]['selected'] == true) { $state = 'off'; } else { $state = 'on'; } return Template::get('toggle_button')->render( [ 'pma_theme_image' => $GLOBALS['pmaThemeImage'], 'text_dir' => $GLOBALS['text_dir'], 'link_on' => $link_on, 'link_off' => $link_off, 'toggle_on' => $options[1]['label'], 'toggle_off' => $options[0]['label'], 'callback' => $callback, 'state' => $state ]); } // end toggleButton() /** * Clears cache content which needs to be refreshed on user change. * * @return void */ public static function clearUserCache() { self::cacheUnset('is_superuser'); self::cacheUnset('is_createuser'); self::cacheUnset('is_grantuser'); } /** * Calculates session cache key * * @return string */ public static function cacheKey() { if (isset($GLOBALS['cfg']['Server']['user'])) { return 'server_' . $GLOBALS['server'] . '_' . $GLOBALS['cfg']['Server']['user']; } return 'server_' . $GLOBALS['server']; } /** * Verifies if something is cached in the session * * @param string $var variable name * * @return boolean */ public static function cacheExists($var) { return isset($_SESSION['cache'][self::cacheKey()][$var]); } /** * Gets cached information from the session * * @param string $var variable name * @param \Closure $callback callback to fetch the value * * @return mixed */ public static function cacheGet($var, $callback = null) { if (self::cacheExists($var)) { return $_SESSION['cache'][self::cacheKey()][$var]; } if ($callback) { $val = $callback(); self::cacheSet($var, $val); return $val; } return null; } /** * Caches information in the session * * @param string $var variable name * @param mixed $val value * * @return mixed */ public static function cacheSet($var, $val = null) { $_SESSION['cache'][self::cacheKey()][$var] = $val; } /** * Removes cached information from the session * * @param string $var variable name * * @return void */ public static function cacheUnset($var) { unset($_SESSION['cache'][self::cacheKey()][$var]); } /** * Converts a bit value to printable format; * in MySQL a BIT field can be from 1 to 64 bits so we need this * function because in PHP, decbin() supports only 32 bits * on 32-bit servers * * @param integer $value coming from a BIT field * @param integer $length length * * @return string the printable value */ public static function printableBitValue($value, $length) { // if running on a 64-bit server or the length is safe for decbin() if (PHP_INT_SIZE == 8 || $length < 33) { $printable = decbin($value); } else { // FIXME: does not work for the leftmost bit of a 64-bit value $i = 0; $printable = ''; while ($value >= pow(2, $i)) { ++$i; } if ($i != 0) { --$i; } while ($i >= 0) { if ($value - pow(2, $i) < 0) { $printable = '0' . $printable; } else { $printable = '1' . $printable; $value = $value - pow(2, $i); } --$i; } $printable = strrev($printable); } $printable = str_pad($printable, $length, '0', STR_PAD_LEFT); return $printable; } /** * Verifies whether the value contains a non-printable character * * @param string $value value * * @return integer */ public static function containsNonPrintableAscii($value) { return preg_match('@[^[:print:]]@', $value); } /** * Converts a BIT type default value * for example, b'010' becomes 010 * * @param string $bit_default_value value * * @return string the converted value */ public static function convertBitDefaultValue($bit_default_value) { return rtrim(ltrim(htmlspecialchars_decode($bit_default_value, ENT_QUOTES), "b'"), "'"); } /** * Extracts the various parts from a column spec * * @param string $columnspec Column specification * * @return array associative array containing type, spec_in_brackets * and possibly enum_set_values (another array) */ public static function extractColumnSpec($columnspec) { $first_bracket_pos = mb_strpos($columnspec, '('); if ($first_bracket_pos) { $spec_in_brackets = chop( mb_substr( $columnspec, $first_bracket_pos + 1, mb_strrpos($columnspec, ')') - $first_bracket_pos - 1 ) ); // convert to lowercase just to be sure $type = mb_strtolower( chop(mb_substr($columnspec, 0, $first_bracket_pos)) ); } else { // Split trailing attributes such as unsigned, // binary, zerofill and get data type name $type_parts = explode(' ', $columnspec); $type = mb_strtolower($type_parts[0]); $spec_in_brackets = ''; } if ('enum' == $type || 'set' == $type) { // Define our working vars $enum_set_values = self::parseEnumSetValues($columnspec, false); $printtype = $type . '(' . str_replace("','", "', '", $spec_in_brackets) . ')'; $binary = false; $unsigned = false; $zerofill = false; } else { $enum_set_values = array(); /* Create printable type name */ $printtype = mb_strtolower($columnspec); // Strip the "BINARY" attribute, except if we find "BINARY(" because // this would be a BINARY or VARBINARY column type; // by the way, a BLOB should not show the BINARY attribute // because this is not accepted in MySQL syntax. if (preg_match('@binary@', $printtype) && ! preg_match('@binary[\(]@', $printtype) ) { $printtype = preg_replace('@binary@', '', $printtype); $binary = true; } else { $binary = false; } $printtype = preg_replace( '@zerofill@', '', $printtype, -1, $zerofill_cnt ); $zerofill = ($zerofill_cnt > 0); $printtype = preg_replace( '@unsigned@', '', $printtype, -1, $unsigned_cnt ); $unsigned = ($unsigned_cnt > 0); $printtype = trim($printtype); } $attribute = ' '; if ($binary) { $attribute = 'BINARY'; } if ($unsigned) { $attribute = 'UNSIGNED'; } if ($zerofill) { $attribute = 'UNSIGNED ZEROFILL'; } $can_contain_collation = false; if (! $binary && preg_match( "@^(char|varchar|text|tinytext|mediumtext|longtext|set|enum)@", $type ) ) { $can_contain_collation = true; } // for the case ENUM('–','“') $displayed_type = htmlspecialchars($printtype); if (mb_strlen($printtype) > $GLOBALS['cfg']['LimitChars']) { $displayed_type = ''; $displayed_type .= htmlspecialchars( mb_substr( $printtype, 0, $GLOBALS['cfg']['LimitChars'] ) . '...' ); $displayed_type .= ''; } return array( 'type' => $type, 'spec_in_brackets' => $spec_in_brackets, 'enum_set_values' => $enum_set_values, 'print_type' => $printtype, 'binary' => $binary, 'unsigned' => $unsigned, 'zerofill' => $zerofill, 'attribute' => $attribute, 'can_contain_collation' => $can_contain_collation, 'displayed_type' => $displayed_type ); } /** * Verifies if this table's engine supports foreign keys * * @param string $engine engine * * @return boolean */ public static function isForeignKeySupported($engine) { $engine = strtoupper($engine); if (($engine == 'INNODB') || ($engine == 'PBXT')) { return true; } elseif ($engine == 'NDBCLUSTER' || $engine == 'NDB') { $ndbver = strtolower( $GLOBALS['dbi']->fetchValue("SELECT @@ndb_version_string") ); if (substr($ndbver, 0, 4) == 'ndb-') { $ndbver = substr($ndbver, 4); } return version_compare($ndbver, 7.3, '>='); } return false; } /** * Is Foreign key check enabled? * * @return bool */ public static function isForeignKeyCheck() { if ($GLOBALS['cfg']['DefaultForeignKeyChecks'] === 'enable') { return true; } elseif ($GLOBALS['cfg']['DefaultForeignKeyChecks'] === 'disable') { return false; } return ($GLOBALS['dbi']->getVariable('FOREIGN_KEY_CHECKS') == 'ON'); } /** * Get HTML for Foreign key check checkbox * * @return string HTML for checkbox */ public static function getFKCheckbox() { return Template::get('fk_checkbox')->render([ 'checked' => self::isForeignKeyCheck(), ]); } /** * Handle foreign key check request * * @return bool Default foreign key checks value */ public static function handleDisableFKCheckInit() { $default_fk_check_value = $GLOBALS['dbi']->getVariable('FOREIGN_KEY_CHECKS') == 'ON'; if (isset($_REQUEST['fk_checks'])) { if (empty($_REQUEST['fk_checks'])) { // Disable foreign key checks $GLOBALS['dbi']->setVariable('FOREIGN_KEY_CHECKS', 'OFF'); } else { // Enable foreign key checks $GLOBALS['dbi']->setVariable('FOREIGN_KEY_CHECKS', 'ON'); } } // else do nothing, go with default return $default_fk_check_value; } /** * Cleanup changes done for foreign key check * * @param bool $default_fk_check_value original value for 'FOREIGN_KEY_CHECKS' * * @return void */ public static function handleDisableFKCheckCleanup($default_fk_check_value) { $GLOBALS['dbi']->setVariable( 'FOREIGN_KEY_CHECKS', $default_fk_check_value ? 'ON' : 'OFF' ); } /** * Converts GIS data to Well Known Text format * * @param string $data GIS data * @param bool $includeSRID Add SRID to the WKT * * @return string GIS data in Well Know Text format */ public static function asWKT($data, $includeSRID = false) { // Convert to WKT format $hex = bin2hex($data); $spatialAsText = 'ASTEXT'; $spatialSrid = 'SRID'; if ($GLOBALS['dbi']->getVersion() >= 50600) { $spatialAsText = 'ST_ASTEXT'; $spatialSrid = 'ST_SRID'; } $wktsql = "SELECT $spatialAsText(x'" . $hex . "')"; if ($includeSRID) { $wktsql .= ", $spatialSrid(x'" . $hex . "')"; } $wktresult = $GLOBALS['dbi']->tryQuery( $wktsql ); $wktarr = $GLOBALS['dbi']->fetchRow($wktresult, 0); $wktval = isset($wktarr[0]) ? $wktarr[0] : null; if ($includeSRID) { $srid = isset($wktarr[1]) ? $wktarr[1] : null; $wktval = "'" . $wktval . "'," . $srid; } @$GLOBALS['dbi']->freeResult($wktresult); return $wktval; } /** * If the string starts with a \r\n pair (0x0d0a) add an extra \n * * @param string $string string * * @return string with the chars replaced */ public static function duplicateFirstNewline($string) { $first_occurence = mb_strpos($string, "\r\n"); if ($first_occurence === 0) { $string = "\n" . $string; } return $string; } /** * Get the action word corresponding to a script name * in order to display it as a title in navigation panel * * @param string $target a valid value for $cfg['NavigationTreeDefaultTabTable'], * $cfg['NavigationTreeDefaultTabTable2'], * $cfg['DefaultTabTable'] or $cfg['DefaultTabDatabase'] * * @return string Title for the $cfg value */ public static function getTitleForTarget($target) { $mapping = array( 'structure' => __('Structure'), 'sql' => __('SQL'), 'search' =>__('Search'), 'insert' =>__('Insert'), 'browse' => __('Browse'), 'operations' => __('Operations'), // For backward compatiblity // Values for $cfg['DefaultTabTable'] 'tbl_structure.php' => __('Structure'), 'tbl_sql.php' => __('SQL'), 'tbl_select.php' =>__('Search'), 'tbl_change.php' =>__('Insert'), 'sql.php' => __('Browse'), // Values for $cfg['DefaultTabDatabase'] 'db_structure.php' => __('Structure'), 'db_sql.php' => __('SQL'), 'db_search.php' => __('Search'), 'db_operations.php' => __('Operations'), ); return isset($mapping[$target]) ? $mapping[$target] : false; } /** * Get the script name corresponding to a plain English config word * in order to append in links on navigation and main panel * * @param string $target a valid value for * $cfg['NavigationTreeDefaultTabTable'], * $cfg['NavigationTreeDefaultTabTable2'], * $cfg['DefaultTabTable'], $cfg['DefaultTabDatabase'] or * $cfg['DefaultTabServer'] * @param string $location one out of 'server', 'table', 'database' * * @return string script name corresponding to the config word */ public static function getScriptNameForOption($target, $location) { if ($location == 'server') { // Values for $cfg['DefaultTabServer'] switch ($target) { case 'welcome': return 'index.php'; case 'databases': return 'server_databases.php'; case 'status': return 'server_status.php'; case 'variables': return 'server_variables.php'; case 'privileges': return 'server_privileges.php'; } } elseif ($location == 'database') { // Values for $cfg['DefaultTabDatabase'] switch ($target) { case 'structure': return 'db_structure.php'; case 'sql': return 'db_sql.php'; case 'search': return 'db_search.php'; case 'operations': return 'db_operations.php'; } } elseif ($location == 'table') { // Values for $cfg['DefaultTabTable'], // $cfg['NavigationTreeDefaultTabTable'] and // $cfg['NavigationTreeDefaultTabTable2'] switch ($target) { case 'structure': return 'tbl_structure.php'; case 'sql': return 'tbl_sql.php'; case 'search': return 'tbl_select.php'; case 'insert': return 'tbl_change.php'; case 'browse': return 'sql.php'; } } return $target; } /** * Formats user string, expanding @VARIABLES@, accepting strftime format * string. * * @param string $string Text where to do expansion. * @param array|string $escape Function to call for escaping variable values. * Can also be an array of: * - the escape method name * - the class that contains the method * - location of the class (for inclusion) * @param array $updates Array with overrides for default parameters * (obtained from GLOBALS). * * @return string */ public static function expandUserString( $string, $escape = null, array $updates = array() ) { /* Content */ $vars = array(); $vars['http_host'] = Core::getenv('HTTP_HOST'); $vars['server_name'] = $GLOBALS['cfg']['Server']['host']; $vars['server_verbose'] = $GLOBALS['cfg']['Server']['verbose']; if (empty($GLOBALS['cfg']['Server']['verbose'])) { $vars['server_verbose_or_name'] = $GLOBALS['cfg']['Server']['host']; } else { $vars['server_verbose_or_name'] = $GLOBALS['cfg']['Server']['verbose']; } $vars['database'] = $GLOBALS['db']; $vars['table'] = $GLOBALS['table']; $vars['phpmyadmin_version'] = 'phpMyAdmin ' . PMA_VERSION; /* Update forced variables */ foreach ($updates as $key => $val) { $vars[$key] = $val; } /* Replacement mapping */ /* * The __VAR__ ones are for backward compatibility, because user * might still have it in cookies. */ $replace = array( '@HTTP_HOST@' => $vars['http_host'], '@SERVER@' => $vars['server_name'], '__SERVER__' => $vars['server_name'], '@VERBOSE@' => $vars['server_verbose'], '@VSERVER@' => $vars['server_verbose_or_name'], '@DATABASE@' => $vars['database'], '__DB__' => $vars['database'], '@TABLE@' => $vars['table'], '__TABLE__' => $vars['table'], '@PHPMYADMIN@' => $vars['phpmyadmin_version'], ); /* Optional escaping */ if (! is_null($escape)) { if (is_array($escape)) { $escape_class = new $escape[1]; $escape_method = $escape[0]; } foreach ($replace as $key => $val) { if (is_array($escape)) { $replace[$key] = $escape_class->$escape_method($val); } else { $replace[$key] = ($escape == 'backquote') ? self::$escape($val) : $escape($val); } } } /* Backward compatibility in 3.5.x */ if (mb_strpos($string, '@FIELDS@') !== false) { $string = strtr($string, array('@FIELDS@' => '@COLUMNS@')); } /* Fetch columns list if required */ if (mb_strpos($string, '@COLUMNS@') !== false) { $columns_list = $GLOBALS['dbi']->getColumns( $GLOBALS['db'], $GLOBALS['table'] ); // sometimes the table no longer exists at this point if (! is_null($columns_list)) { $column_names = array(); foreach ($columns_list as $column) { if (! is_null($escape)) { $column_names[] = self::$escape($column['Field']); } else { $column_names[] = $column['Field']; } } $replace['@COLUMNS@'] = implode(',', $column_names); } else { $replace['@COLUMNS@'] = '*'; } } /* Do the replacement */ return strtr(strftime($string), $replace); } /** * Prepare the form used to browse anywhere on the local server for a file to * import * * @param string $max_upload_size maximum upload size * * @return String */ public static function getBrowseUploadFileBlock($max_upload_size) { $block_html = ''; if ($GLOBALS['is_upload'] && ! empty($GLOBALS['cfg']['UploadDir'])) { $block_html .= '
' . "\n"; $html .= '
' . "\n"; $html .= '
' . "\n"; $html .= '
' . "\n"; $html .= '
'; $html .= '' . "\n"; $html .= ' ]'; $html .= '
'; $html .= '
'; $html .= '' . ''; $html .= '
'; $html .= '
'; $html .= '' . ''; $html .= '
'; $html .= '
'; $html .= '' . ''; $html .= '
'; // Disable/Enable foreign key checks $html .= '
'; $html .= Util::getFKCheckbox(); $html .= '
'; $html .= '' . "\n"; $html .= '
' . "\n"; $html .= '
' . "\n"; return $html; } /** * return HTML for sql Query Form Bookmark * * @return string|null * * @usedby self::getHtml() */ public static function getHtmlForBookmark() { $bookmark_list = Bookmark::getList( $GLOBALS['dbi'], $GLOBALS['cfg']['Server']['user'], $GLOBALS['db'] ); if (empty($bookmark_list) || count($bookmark_list) < 1) { return null; } $html = '
'; $html .= ''; $html .= __('Bookmarked SQL query') . '' . "\n"; $html .= '
'; $html .= ' ' . "\n"; $html .= '
' . "\n"; $html .= '
' . "\n"; $html .= '' . '' . "\n"; $html .= '' . '' . "\n"; $html .= '' . '' . "\n"; $html .= '
' . "\n"; $html .= '
' . "\n"; $html .= '
' . "\n"; $html .= __('Variables'); $html .= Util::showDocu('faq', 'faqbookmark'); $html .= '
'; $html .= '
' . "\n"; $html .= '
' . "\n"; $html .= '
'; $html .= ''; $html .= '
' . "\n"; $html .= '
' . "\n"; return $html; } } db/login/libraries/classes/Rte/Events.php000064400000063046151502156010014366 0ustar00 array('ENABLE', 'DISABLE', 'DISABLE ON SLAVE'), 'display' => array('ENABLED', 'DISABLED', 'SLAVESIDE_DISABLED') ); $event_type = array('RECURRING', 'ONE TIME'); $event_interval = array('YEAR', 'QUARTER', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'WEEK', 'SECOND', 'YEAR_MONTH', 'DAY_HOUR', 'DAY_MINUTE', 'DAY_SECOND', 'HOUR_MINUTE', 'HOUR_SECOND', 'MINUTE_SECOND'); } /** * Main function for the events functionality * * @return void */ public static function main() { global $db; self::setGlobals(); /** * Process all requests */ self::handleEditor(); Export::events(); /** * Display a list of available events */ $items = $GLOBALS['dbi']->getEvents($db); echo RteList::get('event', $items); /** * Display a link for adding a new event, if * the user has the privileges and a link to * toggle the state of the event scheduler. */ echo Footer::events(); } // end self::main() /** * Handles editor requests for adding or editing an item * * @return void */ public static function handleEditor() { global $_REQUEST, $_POST, $errors, $db; if (! empty($_POST['editor_process_add']) || ! empty($_POST['editor_process_edit']) ) { $sql_query = ''; $item_query = self::getQueryFromRequest(); if (! count($errors)) { // set by PhpMyAdmin\Rte\Routines::getQueryFromRequest() // Execute the created query if (! empty($_POST['editor_process_edit'])) { // Backup the old trigger, in case something goes wrong $create_item = $GLOBALS['dbi']->getDefinition( $db, 'EVENT', $_POST['item_original_name'] ); $drop_item = "DROP EVENT " . Util::backquote($_POST['item_original_name']) . ";\n"; $result = $GLOBALS['dbi']->tryQuery($drop_item); if (! $result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($drop_item) ) . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); } else { $result = $GLOBALS['dbi']->tryQuery($item_query); if (! $result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($item_query) ) . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); // We dropped the old item, but were unable to create // the new one. Try to restore the backup query $result = $GLOBALS['dbi']->tryQuery($create_item); $errors = General::checkResult( $result, __( 'Sorry, we failed to restore the dropped event.' ), $create_item, $errors ); } else { $message = Message::success( __('Event %1$s has been modified.') ); $message->addParam( Util::backquote($_POST['item_name']) ); $sql_query = $drop_item . $item_query; } } } else { // 'Add a new item' mode $result = $GLOBALS['dbi']->tryQuery($item_query); if (! $result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($item_query) ) . '

' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); } else { $message = Message::success( __('Event %1$s has been created.') ); $message->addParam( Util::backquote($_POST['item_name']) ); $sql_query = $item_query; } } } if (count($errors)) { $message = Message::error( '' . __( 'One or more errors have occurred while processing your request:' ) . '' ); $message->addHtml(''); } $output = Util::getMessage($message, $sql_query); $response = Response::getInstance(); if ($response->isAjax()) { if ($message->isSuccess()) { $events = $GLOBALS['dbi']->getEvents($db, $_POST['item_name']); $event = $events[0]; $response->addJSON( 'name', htmlspecialchars( mb_strtoupper($_POST['item_name']) ) ); if (! empty($event)) { $response->addJSON('new_row', RteList::getEventRow($event)); } $response->addJSON('insert', ! empty($event)); $response->addJSON('message', $output); } else { $response->setRequestStatus(false); $response->addJSON('message', $message); } exit; } } /** * Display a form used to add/edit a trigger, if necessary */ if (count($errors) || (empty($_POST['editor_process_add']) && empty($_POST['editor_process_edit']) && (! empty($_REQUEST['add_item']) || ! empty($_REQUEST['edit_item']) || ! empty($_POST['item_changetype']))) ) { // FIXME: this must be simpler than that $operation = ''; if (! empty($_POST['item_changetype'])) { $operation = 'change'; } // Get the data for the form (if any) if (! empty($_REQUEST['add_item'])) { $title = Words::get('add'); $item = self::getDataFromRequest(); $mode = 'add'; } elseif (! empty($_REQUEST['edit_item'])) { $title = __("Edit event"); if (! empty($_REQUEST['item_name']) && empty($_POST['editor_process_edit']) && empty($_POST['item_changetype']) ) { $item = self::getDataFromName($_REQUEST['item_name']); if ($item !== false) { $item['item_original_name'] = $item['item_name']; } } else { $item = self::getDataFromRequest(); } $mode = 'edit'; } General::sendEditor('EVN', $mode, $item, $title, $db, $operation); } } // end self::handleEditor() /** * This function will generate the values that are required to for the editor * * @return array Data necessary to create the editor. */ public static function getDataFromRequest() { $retval = array(); $indices = array('item_name', 'item_original_name', 'item_status', 'item_execute_at', 'item_interval_value', 'item_interval_field', 'item_starts', 'item_ends', 'item_definition', 'item_preserve', 'item_comment', 'item_definer'); foreach ($indices as $index) { $retval[$index] = isset($_POST[$index]) ? $_POST[$index] : ''; } $retval['item_type'] = 'ONE TIME'; $retval['item_type_toggle'] = 'RECURRING'; if (isset($_POST['item_type']) && $_POST['item_type'] == 'RECURRING') { $retval['item_type'] = 'RECURRING'; $retval['item_type_toggle'] = 'ONE TIME'; } return $retval; } // end self::getDataFromRequest() /** * This function will generate the values that are required to complete * the "Edit event" form given the name of a event. * * @param string $name The name of the event. * * @return array Data necessary to create the editor. */ public static function getDataFromName($name) { global $db; $retval = array(); $columns = "`EVENT_NAME`, `STATUS`, `EVENT_TYPE`, `EXECUTE_AT`, " . "`INTERVAL_VALUE`, `INTERVAL_FIELD`, `STARTS`, `ENDS`, " . "`EVENT_DEFINITION`, `ON_COMPLETION`, `DEFINER`, `EVENT_COMMENT`"; $where = "EVENT_SCHEMA " . Util::getCollateForIS() . "=" . "'" . $GLOBALS['dbi']->escapeString($db) . "' " . "AND EVENT_NAME='" . $GLOBALS['dbi']->escapeString($name) . "'"; $query = "SELECT $columns FROM `INFORMATION_SCHEMA`.`EVENTS` WHERE $where;"; $item = $GLOBALS['dbi']->fetchSingleRow($query); if (! $item) { return false; } $retval['item_name'] = $item['EVENT_NAME']; $retval['item_status'] = $item['STATUS']; $retval['item_type'] = $item['EVENT_TYPE']; if ($retval['item_type'] == 'RECURRING') { $retval['item_type_toggle'] = 'ONE TIME'; } else { $retval['item_type_toggle'] = 'RECURRING'; } $retval['item_execute_at'] = $item['EXECUTE_AT']; $retval['item_interval_value'] = $item['INTERVAL_VALUE']; $retval['item_interval_field'] = $item['INTERVAL_FIELD']; $retval['item_starts'] = $item['STARTS']; $retval['item_ends'] = $item['ENDS']; $retval['item_preserve'] = ''; if ($item['ON_COMPLETION'] == 'PRESERVE') { $retval['item_preserve'] = " checked='checked'"; } $retval['item_definition'] = $item['EVENT_DEFINITION']; $retval['item_definer'] = $item['DEFINER']; $retval['item_comment'] = $item['EVENT_COMMENT']; return $retval; } // end self::getDataFromName() /** * Displays a form used to add/edit an event * * @param string $mode If the editor will be used to edit an event * or add a new one: 'edit' or 'add'. * @param string $operation If the editor was previously invoked with * JS turned off, this will hold the name of * the current operation * @param array $item Data for the event returned by * self::getDataFromRequest() or * self::getDataFromName() * * @return string HTML code for the editor. */ public static function getEditorForm($mode, $operation, array $item) { global $db, $table, $event_status, $event_type, $event_interval; $modeToUpper = mb_strtoupper($mode); $response = Response::getInstance(); // Escape special characters $need_escape = array( 'item_original_name', 'item_name', 'item_type', 'item_execute_at', 'item_interval_value', 'item_starts', 'item_ends', 'item_definition', 'item_definer', 'item_comment' ); foreach ($need_escape as $index) { $item[$index] = htmlentities($item[$index], ENT_QUOTES); } $original_data = ''; if ($mode == 'edit') { $original_data = "\n"; } // Handle some logic first if ($operation == 'change') { if ($item['item_type'] == 'RECURRING') { $item['item_type'] = 'ONE TIME'; $item['item_type_toggle'] = 'RECURRING'; } else { $item['item_type'] = 'RECURRING'; $item['item_type_toggle'] = 'ONE TIME'; } } if ($item['item_type'] == 'ONE TIME') { $isrecurring_class = ' hide'; $isonetime_class = ''; } else { $isrecurring_class = ''; $isonetime_class = ' hide'; } // Create the output $retval = ""; $retval .= "\n\n"; $retval .= "\n"; $retval .= "\n"; $retval .= $original_data; $retval .= Url::getHiddenInputs($db, $table) . "\n"; $retval .= "
\n"; $retval .= "" . __('Details') . "\n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; return $retval; } // end self::getParameterRow() /** * Displays a form used to add/edit a routine * * @param string $mode If the editor will be used to edit a routine * or add a new one: 'edit' or 'add'. * @param string $operation If the editor was previously invoked with * JS turned off, this will hold the name of * the current operation * @param array $routine Data for the routine returned by * self::getDataFromRequest() or * self::getDataFromName() * * @return string HTML code for the editor. */ public static function getEditorForm($mode, $operation, array $routine) { global $db, $errors, $param_sqldataaccess, $param_opts_num; $response = Response::getInstance(); // Escape special characters $need_escape = array( 'item_original_name', 'item_name', 'item_returnlength', 'item_definition', 'item_definer', 'item_comment' ); foreach ($need_escape as $key => $index) { $routine[$index] = htmlentities($routine[$index], ENT_QUOTES, 'UTF-8'); } for ($i = 0; $i < $routine['item_num_params']; $i++) { $routine['item_param_name'][$i] = htmlentities( $routine['item_param_name'][$i], ENT_QUOTES ); $routine['item_param_length'][$i] = htmlentities( $routine['item_param_length'][$i], ENT_QUOTES ); } // Handle some logic first if ($operation == 'change') { if ($routine['item_type'] == 'PROCEDURE') { $routine['item_type'] = 'FUNCTION'; $routine['item_type_toggle'] = 'PROCEDURE'; } else { $routine['item_type'] = 'PROCEDURE'; $routine['item_type_toggle'] = 'FUNCTION'; } } elseif ($operation == 'add' || ($routine['item_num_params'] == 0 && $mode == 'add' && ! $errors) ) { $routine['item_param_dir'][] = ''; $routine['item_param_name'][] = ''; $routine['item_param_type'][] = ''; $routine['item_param_length'][] = ''; $routine['item_param_opts_num'][] = ''; $routine['item_param_opts_text'][] = ''; $routine['item_num_params']++; } elseif ($operation == 'remove') { unset($routine['item_param_dir'][$routine['item_num_params'] - 1]); unset($routine['item_param_name'][$routine['item_num_params'] - 1]); unset($routine['item_param_type'][$routine['item_num_params'] - 1]); unset($routine['item_param_length'][$routine['item_num_params'] - 1]); unset($routine['item_param_opts_num'][$routine['item_num_params'] - 1]); unset($routine['item_param_opts_text'][$routine['item_num_params'] - 1]); $routine['item_num_params']--; } $disableRemoveParam = ''; if (! $routine['item_num_params']) { $disableRemoveParam = " color: gray;' disabled='disabled"; } $original_routine = ''; if ($mode == 'edit') { $original_routine = "\n" . "\n"; } $isfunction_class = ''; $isprocedure_class = ''; $isfunction_select = ''; $isprocedure_select = ''; if ($routine['item_type'] == 'PROCEDURE') { $isfunction_class = ' hide'; $isprocedure_select = " selected='selected'"; } else { $isprocedure_class = ' hide'; $isfunction_select = " selected='selected'"; } // Create the output $retval = ""; $retval .= "\n\n"; $retval .= "\n"; $retval .= "\n"; $retval .= $original_routine; $retval .= Url::getHiddenInputs($db) . "\n"; $retval .= "
\n"; $retval .= "" . __('Details') . "\n"; $retval .= "
" . __('Event name') . "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "
" . __('Event type') . "\n"; if ($response->isAjax()) { $retval .= " \n"; } else { $retval .= " \n"; $retval .= " {$item['item_type']}\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " $value) { $selected = ""; if (! empty($item['item_interval_field']) && $item['item_interval_field'] == $value ) { $selected = " selected='selected'"; } $retval .= "$value"; } $retval .= " \n"; $retval .= "
" . _pgettext('Start of recurring event', 'Start'); $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= "
" . __('On completion preserve') . "\n"; $retval .= " \n"; $retval .= " isAjax()) { $retval .= "\n"; $retval .= "\n"; } $retval .= "\n\n"; $retval .= "\n\n"; return $retval; } // end self::getEditorForm() /** * Composes the query necessary to create an event from an HTTP request. * * @return string The CREATE EVENT query. */ public static function getQueryFromRequest() { global $_REQUEST, $errors, $event_status, $event_type, $event_interval; $query = 'CREATE '; if (! empty($_POST['item_definer'])) { if (mb_strpos($_POST['item_definer'], '@') !== false ) { $arr = explode('@', $_POST['item_definer']); $query .= 'DEFINER=' . Util::backquote($arr[0]); $query .= '@' . Util::backquote($arr[1]) . ' '; } else { $errors[] = __('The definer must be in the "username@hostname" format!'); } } $query .= 'EVENT '; if (! empty($_POST['item_name'])) { $query .= Util::backquote($_POST['item_name']) . ' '; } else { $errors[] = __('You must provide an event name!'); } $query .= 'ON SCHEDULE '; if (! empty($_POST['item_type']) && in_array($_POST['item_type'], $event_type) ) { if ($_POST['item_type'] == 'RECURRING') { if (! empty($_POST['item_interval_value']) && !empty($_POST['item_interval_field']) && in_array($_POST['item_interval_field'], $event_interval) ) { $query .= 'EVERY ' . intval($_POST['item_interval_value']) . ' '; $query .= $_POST['item_interval_field'] . ' '; } else { $errors[] = __('You must provide a valid interval value for the event.'); } if (! empty($_POST['item_starts'])) { $query .= "STARTS '" . $GLOBALS['dbi']->escapeString($_POST['item_starts']) . "' "; } if (! empty($_POST['item_ends'])) { $query .= "ENDS '" . $GLOBALS['dbi']->escapeString($_POST['item_ends']) . "' "; } } else { if (! empty($_POST['item_execute_at'])) { $query .= "AT '" . $GLOBALS['dbi']->escapeString($_POST['item_execute_at']) . "' "; } else { $errors[] = __('You must provide a valid execution time for the event.'); } } } else { $errors[] = __('You must provide a valid type for the event.'); } $query .= 'ON COMPLETION '; if (empty($_POST['item_preserve'])) { $query .= 'NOT '; } $query .= 'PRESERVE '; if (! empty($_POST['item_status'])) { foreach ($event_status['display'] as $key => $value) { if ($value == $_POST['item_status']) { $query .= $event_status['query'][$key] . ' '; break; } } } if (! empty($_POST['item_comment'])) { $query .= "COMMENT '" . $GLOBALS['dbi']->escapeString( $_POST['item_comment'] ) . "' "; } $query .= 'DO '; if (! empty($_POST['item_definition'])) { $query .= $_POST['item_definition']; } else { $errors[] = __('You must provide an event definition.'); } return $query; } // end self::getQueryFromRequest() } db/login/libraries/classes/Rte/Routines.php000064400000207737151502156010014741 0ustar00getRoutines($db, $type); echo RteList::get('routine', $items); /** * Display the form for adding a new routine, if the user has the privileges. */ echo Footer::routines(); /** * Display a warning for users with PHP's old "mysql" extension. */ if (! DatabaseInterface::checkDbExtension('mysqli')) { trigger_error( __( 'You are using PHP\'s deprecated \'mysql\' extension, ' . 'which is not capable of handling multi queries. ' . '[strong]The execution of some stored routines may fail![/strong] ' . 'Please use the improved \'mysqli\' extension to ' . 'avoid any problems.' ), E_USER_WARNING ); } } // end self::main() /** * Handles editor requests for adding or editing an item * * @return void */ public static function handleEditor() { global $_GET, $_POST, $_REQUEST, $GLOBALS, $db, $errors; $errors = self::handleRequestCreateOrEdit($errors, $db); $response = Response::getInstance(); /** * Display a form used to add/edit a routine, if necessary */ // FIXME: this must be simpler than that if (count($errors) || ( empty($_POST['editor_process_add']) && empty($_POST['editor_process_edit']) && (! empty($_REQUEST['add_item']) || ! empty($_REQUEST['edit_item']) || ! empty($_POST['routine_addparameter']) || ! empty($_POST['routine_removeparameter']) || ! empty($_POST['routine_changetype']))) ) { // Handle requests to add/remove parameters and changing routine type // This is necessary when JS is disabled $operation = ''; if (! empty($_POST['routine_addparameter'])) { $operation = 'add'; } elseif (! empty($_POST['routine_removeparameter'])) { $operation = 'remove'; } elseif (! empty($_POST['routine_changetype'])) { $operation = 'change'; } // Get the data for the form (if any) if (! empty($_REQUEST['add_item'])) { $title = Words::get('add'); $routine = self::getDataFromRequest(); $mode = 'add'; } elseif (! empty($_REQUEST['edit_item'])) { $title = __("Edit routine"); if (! $operation && ! empty($_GET['item_name']) && empty($_POST['editor_process_edit']) ) { $routine = self::getDataFromName( $_GET['item_name'], $_GET['item_type'] ); if ($routine !== false) { $routine['item_original_name'] = $routine['item_name']; $routine['item_original_type'] = $routine['item_type']; } } else { $routine = self::getDataFromRequest(); } $mode = 'edit'; } if ($routine !== false) { // Show form $editor = self::getEditorForm($mode, $operation, $routine); if ($response->isAjax()) { $response->addJSON('message', $editor); $response->addJSON('title', $title); $response->addJSON('param_template', self::getParameterRow()); $response->addJSON('type', $routine['item_type']); } else { echo "\n\n

$title

\n\n$editor"; } exit; } else { $message = __('Error in processing request:') . ' '; $message .= sprintf( Words::get('no_edit'), htmlspecialchars( Util::backquote($_REQUEST['item_name']) ), htmlspecialchars(Util::backquote($db)) ); $message = Message::error($message); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON('message', $message); exit; } else { $message->display(); } } } } /** * Handle request to create or edit a routine * * @param array $errors Errors * @param string $db DB name * * @return array */ public static function handleRequestCreateOrEdit(array $errors, $db) { if (empty($_POST['editor_process_add']) && empty($_POST['editor_process_edit']) ) { return $errors; } $sql_query = ''; $routine_query = self::getQueryFromRequest(); if (!count($errors)) { // set by self::getQueryFromRequest() // Execute the created query if (!empty($_POST['editor_process_edit'])) { $isProcOrFunc = in_array( $_POST['item_original_type'], array('PROCEDURE', 'FUNCTION') ); if (!$isProcOrFunc) { $errors[] = sprintf( __('Invalid routine type: "%s"'), htmlspecialchars($_POST['item_original_type']) ); } else { // Backup the old routine, in case something goes wrong $create_routine = $GLOBALS['dbi']->getDefinition( $db, $_POST['item_original_type'], $_POST['item_original_name'] ); $privilegesBackup = self::backupPrivileges(); $drop_routine = "DROP {$_POST['item_original_type']} " . Util::backquote($_POST['item_original_name']) . ";\n"; $result = $GLOBALS['dbi']->tryQuery($drop_routine); if (!$result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($drop_routine) ) . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); } else { list($newErrors, $message) = self::create( $routine_query, $create_routine, $privilegesBackup ); if (empty($newErrors)) { $sql_query = $drop_routine . $routine_query; } else { $errors = array_merge($errors, $newErrors); } unset($newErrors); if (null === $message) { unset($message); } } } } else { // 'Add a new routine' mode $result = $GLOBALS['dbi']->tryQuery($routine_query); if (!$result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($routine_query) ) . '

' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); } else { $message = Message::success( __('Routine %1$s has been created.') ); $message->addParam( Util::backquote($_POST['item_name']) ); $sql_query = $routine_query; } } } if (count($errors)) { $message = Message::error( __( 'One or more errors have occurred while' . ' processing your request:' ) ); $message->addHtml('
    '); foreach ($errors as $string) { $message->addHtml('
  • ' . $string . '
  • '); } $message->addHtml('
'); } $output = Util::getMessage($message, $sql_query); $response = Response::getInstance(); if (!$response->isAjax()) { return $errors; } if (!$message->isSuccess()) { $response->setRequestStatus(false); $response->addJSON('message', $output); exit; } $routines = $GLOBALS['dbi']->getRoutines( $db, $_POST['item_type'], $_POST['item_name'] ); $routine = $routines[0]; $response->addJSON( 'name', htmlspecialchars( mb_strtoupper($_POST['item_name']) ) ); $response->addJSON('new_row', RteList::getRoutineRow($routine)); $response->addJSON('insert', !empty($routine)); $response->addJSON('message', $output); exit; } /** * Backup the privileges * * @return array */ public static function backupPrivileges() { if (! $GLOBALS['proc_priv'] || ! $GLOBALS['is_reload_priv']) { return array(); } // Backup the Old Privileges before dropping // if $_POST['item_adjust_privileges'] set if (! isset($_POST['item_adjust_privileges']) || empty($_POST['item_adjust_privileges']) ) { return array(); } $privilegesBackupQuery = 'SELECT * FROM ' . Util::backquote( 'mysql' ) . '.' . Util::backquote('procs_priv') . ' where Routine_name = "' . $_POST['item_original_name'] . '" AND Routine_type = "' . $_POST['item_original_type'] . '";'; $privilegesBackup = $GLOBALS['dbi']->fetchResult( $privilegesBackupQuery, 0 ); return $privilegesBackup; } /** * Create the routine * * @param string $routine_query Query to create routine * @param string $create_routine Query to restore routine * @param array $privilegesBackup Privileges backup * * @return array */ public static function create( $routine_query, $create_routine, array $privilegesBackup ) { $result = $GLOBALS['dbi']->tryQuery($routine_query); if (!$result) { $errors = array(); $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($routine_query) ) . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); // We dropped the old routine, // but were unable to create the new one // Try to restore the backup query $result = $GLOBALS['dbi']->tryQuery($create_routine); $errors = General::checkResult( $result, __( 'Sorry, we failed to restore' . ' the dropped routine.' ), $create_routine, $errors ); return array($errors, null); } // Default value $resultAdjust = false; if ($GLOBALS['proc_priv'] && $GLOBALS['is_reload_priv'] ) { // Insert all the previous privileges // but with the new name and the new type foreach ($privilegesBackup as $priv) { $adjustProcPrivilege = 'INSERT INTO ' . Util::backquote('mysql') . '.' . Util::backquote('procs_priv') . ' VALUES("' . $priv[0] . '", "' . $priv[1] . '", "' . $priv[2] . '", "' . $_POST['item_name'] . '", "' . $_POST['item_type'] . '", "' . $priv[5] . '", "' . $priv[6] . '", "' . $priv[7] . '");'; $resultAdjust = $GLOBALS['dbi']->query( $adjustProcPrivilege ); } } $message = self::flushPrivileges($resultAdjust); return array(array(), $message); } /** * Flush privileges and get message * * @param bool $flushPrivileges Flush privileges * * @return Message */ public static function flushPrivileges($flushPrivileges) { if ($flushPrivileges) { // Flush the Privileges $flushPrivQuery = 'FLUSH PRIVILEGES;'; $GLOBALS['dbi']->query($flushPrivQuery); $message = Message::success( __( 'Routine %1$s has been modified. Privileges have been adjusted.' ) ); } else { $message = Message::success( __('Routine %1$s has been modified.') ); } $message->addParam( Util::backquote($_POST['item_name']) ); return $message; } // end self::handleEditor() /** * This function will generate the values that are required to * complete the editor form. It is especially necessary to handle * the 'Add another parameter', 'Remove last parameter' and * 'Change routine type' functionalities when JS is disabled. * * @return array Data necessary to create the routine editor. */ public static function getDataFromRequest() { global $_REQUEST, $param_directions, $param_sqldataaccess; $retval = array(); $indices = array('item_name', 'item_original_name', 'item_returnlength', 'item_returnopts_num', 'item_returnopts_text', 'item_definition', 'item_comment', 'item_definer'); foreach ($indices as $index) { $retval[$index] = isset($_POST[$index]) ? $_POST[$index] : ''; } $retval['item_type'] = 'PROCEDURE'; $retval['item_type_toggle'] = 'FUNCTION'; if (isset($_REQUEST['item_type']) && $_REQUEST['item_type'] == 'FUNCTION') { $retval['item_type'] = 'FUNCTION'; $retval['item_type_toggle'] = 'PROCEDURE'; } $retval['item_original_type'] = 'PROCEDURE'; if (isset($_POST['item_original_type']) && $_POST['item_original_type'] == 'FUNCTION' ) { $retval['item_original_type'] = 'FUNCTION'; } $retval['item_num_params'] = 0; $retval['item_param_dir'] = array(); $retval['item_param_name'] = array(); $retval['item_param_type'] = array(); $retval['item_param_length'] = array(); $retval['item_param_opts_num'] = array(); $retval['item_param_opts_text'] = array(); if (isset($_POST['item_param_name']) && isset($_POST['item_param_type']) && isset($_POST['item_param_length']) && isset($_POST['item_param_opts_num']) && isset($_POST['item_param_opts_text']) && is_array($_POST['item_param_name']) && is_array($_POST['item_param_type']) && is_array($_POST['item_param_length']) && is_array($_POST['item_param_opts_num']) && is_array($_POST['item_param_opts_text']) ) { if ($_POST['item_type'] == 'PROCEDURE') { $retval['item_param_dir'] = $_POST['item_param_dir']; foreach ($retval['item_param_dir'] as $key => $value) { if (! in_array($value, $param_directions, true)) { $retval['item_param_dir'][$key] = ''; } } } $retval['item_param_name'] = $_POST['item_param_name']; $retval['item_param_type'] = $_POST['item_param_type']; foreach ($retval['item_param_type'] as $key => $value) { if (! in_array($value, Util::getSupportedDatatypes(), true)) { $retval['item_param_type'][$key] = ''; } } $retval['item_param_length'] = $_POST['item_param_length']; $retval['item_param_opts_num'] = $_POST['item_param_opts_num']; $retval['item_param_opts_text'] = $_POST['item_param_opts_text']; $retval['item_num_params'] = max( count($retval['item_param_name']), count($retval['item_param_type']), count($retval['item_param_length']), count($retval['item_param_opts_num']), count($retval['item_param_opts_text']) ); } $retval['item_returntype'] = ''; if (isset($_POST['item_returntype']) && in_array($_POST['item_returntype'], Util::getSupportedDatatypes()) ) { $retval['item_returntype'] = $_POST['item_returntype']; } $retval['item_isdeterministic'] = ''; if (isset($_POST['item_isdeterministic']) && mb_strtolower($_POST['item_isdeterministic']) == 'on' ) { $retval['item_isdeterministic'] = " checked='checked'"; } $retval['item_securitytype_definer'] = ''; $retval['item_securitytype_invoker'] = ''; if (isset($_POST['item_securitytype'])) { if ($_POST['item_securitytype'] === 'DEFINER') { $retval['item_securitytype_definer'] = " selected='selected'"; } elseif ($_POST['item_securitytype'] === 'INVOKER') { $retval['item_securitytype_invoker'] = " selected='selected'"; } } $retval['item_sqldataaccess'] = ''; if (isset($_POST['item_sqldataaccess']) && in_array($_POST['item_sqldataaccess'], $param_sqldataaccess, true) ) { $retval['item_sqldataaccess'] = $_POST['item_sqldataaccess']; } return $retval; } // end self::getDataFromRequest() /** * This function will generate the values that are required to complete * the "Edit routine" form given the name of a routine. * * @param string $name The name of the routine. * @param string $type Type of routine (ROUTINE|PROCEDURE) * @param bool $all Whether to return all data or just the info about parameters. * * @return array Data necessary to create the routine editor. */ public static function getDataFromName($name, $type, $all = true) { global $db; $retval = array(); // Build and execute the query $fields = "SPECIFIC_NAME, ROUTINE_TYPE, DTD_IDENTIFIER, " . "ROUTINE_DEFINITION, IS_DETERMINISTIC, SQL_DATA_ACCESS, " . "ROUTINE_COMMENT, SECURITY_TYPE"; $where = "ROUTINE_SCHEMA " . Util::getCollateForIS() . "=" . "'" . $GLOBALS['dbi']->escapeString($db) . "' " . "AND SPECIFIC_NAME='" . $GLOBALS['dbi']->escapeString($name) . "'" . "AND ROUTINE_TYPE='" . $GLOBALS['dbi']->escapeString($type) . "'"; $query = "SELECT $fields FROM INFORMATION_SCHEMA.ROUTINES WHERE $where;"; $routine = $GLOBALS['dbi']->fetchSingleRow($query, 'ASSOC'); if (! $routine) { return false; } // Get required data $retval['item_name'] = $routine['SPECIFIC_NAME']; $retval['item_type'] = $routine['ROUTINE_TYPE']; $definition = $GLOBALS['dbi']->getDefinition( $db, $routine['ROUTINE_TYPE'], $routine['SPECIFIC_NAME'] ); if ($definition == null) { return false; } $parser = new Parser($definition); /** * @var CreateStatement $stmt */ $stmt = $parser->statements[0]; $params = Routine::getParameters($stmt); $retval['item_num_params'] = $params['num']; $retval['item_param_dir'] = $params['dir']; $retval['item_param_name'] = $params['name']; $retval['item_param_type'] = $params['type']; $retval['item_param_length'] = $params['length']; $retval['item_param_length_arr'] = $params['length_arr']; $retval['item_param_opts_num'] = $params['opts']; $retval['item_param_opts_text'] = $params['opts']; // Get extra data if (!$all) { return $retval; } if ($retval['item_type'] == 'FUNCTION') { $retval['item_type_toggle'] = 'PROCEDURE'; } else { $retval['item_type_toggle'] = 'FUNCTION'; } $retval['item_returntype'] = ''; $retval['item_returnlength'] = ''; $retval['item_returnopts_num'] = ''; $retval['item_returnopts_text'] = ''; if (! empty($routine['DTD_IDENTIFIER'])) { $options = array(); foreach ($stmt->return->options->options as $opt) { $options[] = is_string($opt) ? $opt : $opt['value']; } $retval['item_returntype'] = $stmt->return->name; $retval['item_returnlength'] = implode(',', $stmt->return->parameters); $retval['item_returnopts_num'] = implode(' ', $options); $retval['item_returnopts_text'] = implode(' ', $options); } $retval['item_definer'] = $stmt->options->has('DEFINER'); $retval['item_definition'] = $routine['ROUTINE_DEFINITION']; $retval['item_isdeterministic'] = ''; if ($routine['IS_DETERMINISTIC'] == 'YES') { $retval['item_isdeterministic'] = " checked='checked'"; } $retval['item_securitytype_definer'] = ''; $retval['item_securitytype_invoker'] = ''; if ($routine['SECURITY_TYPE'] == 'DEFINER') { $retval['item_securitytype_definer'] = " selected='selected'"; } elseif ($routine['SECURITY_TYPE'] == 'INVOKER') { $retval['item_securitytype_invoker'] = " selected='selected'"; } $retval['item_sqldataaccess'] = $routine['SQL_DATA_ACCESS']; $retval['item_comment'] = $routine['ROUTINE_COMMENT']; return $retval; } // self::getDataFromName() /** * Creates one row for the parameter table used in the routine editor. * * @param array $routine Data for the routine returned by * self::getDataFromRequest() or * self::getDataFromName() * @param mixed $index Either a numeric index of the row being processed * or NULL to create a template row for AJAX request * @param string $class Class used to hide the direction column, if the * row is for a stored function. * * @return string HTML code of one row of parameter table for the editor. */ public static function getParameterRow(array $routine = array(), $index = null, $class = '') { $titles = Util::buildActionTitles(); global $param_directions, $param_opts_num; if ($index === null) { // template row for AJAX request $i = 0; $index = '%s'; $drop_class = ''; $routine = array( 'item_param_dir' => array(0 => ''), 'item_param_name' => array(0 => ''), 'item_param_type' => array(0 => ''), 'item_param_length' => array(0 => ''), 'item_param_opts_num' => array(0 => ''), 'item_param_opts_text' => array(0 => '') ); } elseif (! empty($routine)) { // regular row for routine editor $drop_class = ' hide'; $i = $index; } else { // No input data. This shouldn't happen, // but better be safe than sorry. return ''; } // Create the output $retval = ""; $retval .= "
" . "" . "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " ---\n"; $retval .= Charsets::getCharsetDropdownBox( $GLOBALS['dbi'], $GLOBALS['cfg']['Server']['DisableIS'], "item_param_opts_text[$index]", null, $routine['item_param_opts_text'][$i] ); $retval .= " ---\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " {$titles['Drop']}\n"; $retval .= " \n"; $retval .= "
\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; // parameter handling end $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; if (isset($_REQUEST['edit_item']) && ! empty($_REQUEST['edit_item']) ) { $retval .= ""; $retval .= " "; if ($GLOBALS['proc_priv'] && $GLOBALS['is_reload_priv'] ) { $retval .= " "; } else { $retval .= " "; } $retval .= ""; } $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= ""; $retval .= " "; $retval .= " "; $retval .= ""; $retval .= "
" . __('Routine name') . "\n"; $retval .= " \n"; if ($response->isAjax()) { $retval .= " \n"; } else { $retval .= "\n" . "
\n" . $routine['item_type'] . "\n" . "
\n" . "\n"; } $retval .= "
" . __('Parameters') . "\n"; // parameter handling start $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " "; $retval .= " \n"; $retval .= " \n"; for ($i = 0; $i < $routine['item_num_params']; $i++) { // each parameter $retval .= self::getParameterRow($routine, $i, $isprocedure_class); } $retval .= " \n"; $retval .= "
" . __('Direction') . "" . __('Name') . "" . __('Type') . "" . __('Length/Values') . "" . __('Options') . " 
"; $retval .= "
 "; $retval .= " "; $retval .= " "; $retval .= "
" . __('Return type') . "
" . __('Return length/values') . "---
" . __('Return options') . "
"; $retval .= Charsets::getCharsetDropdownBox( $GLOBALS['dbi'], $GLOBALS['cfg']['Server']['DisableIS'], "item_returnopts_text", null, $routine['item_returnopts_text'] ); $retval .= "
"; $retval .= "
"; $retval .= "
---
"; $retval .= "
" . __('Definition') . "
" . __('Is deterministic') . "
" . __('Adjust privileges'); $retval .= Util::showDocu('faq', 'faq6-39'); $retval .= "
" . __('Definer') . "
" . __('Security type') . "
" . __('SQL data access') . "
" . __('Comment') . "
"; $retval .= "
"; if ($response->isAjax()) { $retval .= ""; $retval .= ""; } $retval .= ""; $retval .= ""; return $retval; } // end self::getEditorForm() /** * Composes the query necessary to create a routine from an HTTP request. * * @return string The CREATE [ROUTINE | PROCEDURE] query. */ public static function getQueryFromRequest() { global $_REQUEST, $errors, $param_sqldataaccess, $param_directions, $dbi; $_POST['item_type'] = isset($_POST['item_type']) ? $_POST['item_type'] : ''; $query = 'CREATE '; if (! empty($_POST['item_definer'])) { if (mb_strpos($_POST['item_definer'], '@') !== false) { $arr = explode('@', $_POST['item_definer']); $do_backquote = true; if (substr($arr[0], 0, 1) === "`" && substr($arr[0], -1) === "`" ) { $do_backquote = false; } $query .= 'DEFINER=' . Util::backquote($arr[0], $do_backquote); $do_backquote = true; if (substr($arr[1], 0, 1) === "`" && substr($arr[1], -1) === "`" ) { $do_backquote = false; } $query .= '@' . Util::backquote($arr[1], $do_backquote) . ' '; } else { $errors[] = __('The definer must be in the "username@hostname" format!'); } } if ($_POST['item_type'] == 'FUNCTION' || $_POST['item_type'] == 'PROCEDURE' ) { $query .= $_POST['item_type'] . ' '; } else { $errors[] = sprintf( __('Invalid routine type: "%s"'), htmlspecialchars($_POST['item_type']) ); } if (! empty($_POST['item_name'])) { $query .= Util::backquote($_POST['item_name']); } else { $errors[] = __('You must provide a routine name!'); } $params = ''; $warned_about_dir = false; $warned_about_length = false; if (! empty($_POST['item_param_name']) && ! empty($_POST['item_param_type']) && ! empty($_POST['item_param_length']) && is_array($_POST['item_param_name']) && is_array($_POST['item_param_type']) && is_array($_POST['item_param_length']) ) { $item_param_name = $_POST['item_param_name']; $item_param_type = $_POST['item_param_type']; $item_param_length = $_POST['item_param_length']; for ($i=0, $nb = count($item_param_name); $i < $nb; $i++) { if (! empty($item_param_name[$i]) && ! empty($item_param_type[$i]) ) { if ($_POST['item_type'] == 'PROCEDURE' && ! empty($_POST['item_param_dir'][$i]) && in_array($_POST['item_param_dir'][$i], $param_directions) ) { $params .= $_POST['item_param_dir'][$i] . " " . Util::backquote($item_param_name[$i]) . " " . $item_param_type[$i]; } elseif ($_POST['item_type'] == 'FUNCTION') { $params .= Util::backquote($item_param_name[$i]) . " " . $item_param_type[$i]; } elseif (! $warned_about_dir) { $warned_about_dir = true; $errors[] = sprintf( __('Invalid direction "%s" given for parameter.'), htmlspecialchars($_POST['item_param_dir'][$i]) ); } if ($item_param_length[$i] != '' && !preg_match( '@^(DATE|TINYBLOB|TINYTEXT|BLOB|TEXT|' . 'MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|' . 'SERIAL|BOOLEAN)$@i', $item_param_type[$i] ) ) { $params .= "(" . $item_param_length[$i] . ")"; } elseif ($item_param_length[$i] == '' && preg_match( '@^(ENUM|SET|VARCHAR|VARBINARY)$@i', $item_param_type[$i] ) ) { if (! $warned_about_length) { $warned_about_length = true; $errors[] = __( 'You must provide length/values for routine parameters' . ' of type ENUM, SET, VARCHAR and VARBINARY.' ); } } if (! empty($_POST['item_param_opts_text'][$i])) { if ($dbi->types->getTypeClass($item_param_type[$i]) == 'CHAR') { if(! in_array($item_param_type[$i], array('VARBINARY', 'BINARY'))) { $params .= ' CHARSET ' . mb_strtolower( $_POST['item_param_opts_text'][$i] ); } } } if (! empty($_POST['item_param_opts_num'][$i])) { if ($dbi->types->getTypeClass($item_param_type[$i]) == 'NUMBER') { $params .= ' ' . mb_strtoupper( $_POST['item_param_opts_num'][$i] ); } } if ($i != (count($item_param_name) - 1)) { $params .= ", "; } } else { $errors[] = __( 'You must provide a name and a type for each routine parameter.' ); break; } } } $query .= "(" . $params . ") "; if ($_POST['item_type'] == 'FUNCTION') { $item_returntype = isset($_POST['item_returntype']) ? $_POST['item_returntype'] : null; if (! empty($item_returntype) && in_array( $item_returntype, Util::getSupportedDatatypes() ) ) { $query .= "RETURNS " . $item_returntype; } else { $errors[] = __('You must provide a valid return type for the routine.'); } if (! empty($_POST['item_returnlength']) && !preg_match( '@^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|' . 'MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|SERIAL|BOOLEAN)$@i', $item_returntype ) ) { $query .= "(" . $_POST['item_returnlength'] . ")"; } elseif (empty($_POST['item_returnlength']) && preg_match( '@^(ENUM|SET|VARCHAR|VARBINARY)$@i', $item_returntype ) ) { if (! $warned_about_length) { $errors[] = __( 'You must provide length/values for routine parameters' . ' of type ENUM, SET, VARCHAR and VARBINARY.' ); } } if (! empty($_POST['item_returnopts_text'])) { if ($dbi->types->getTypeClass($item_returntype) == 'CHAR') { $query .= ' CHARSET ' . mb_strtolower($_POST['item_returnopts_text']); } } if (! empty($_POST['item_returnopts_num'])) { if ($dbi->types->getTypeClass($item_returntype) == 'NUMBER') { $query .= ' ' . mb_strtoupper($_POST['item_returnopts_num']); } } $query .= ' '; } if (! empty($_POST['item_comment'])) { $query .= "COMMENT '" . $GLOBALS['dbi']->escapeString($_POST['item_comment']) . "' "; } if (isset($_POST['item_isdeterministic'])) { $query .= 'DETERMINISTIC '; } else { $query .= 'NOT DETERMINISTIC '; } if (! empty($_POST['item_sqldataaccess']) && in_array($_POST['item_sqldataaccess'], $param_sqldataaccess) ) { $query .= $_POST['item_sqldataaccess'] . ' '; } if (! empty($_POST['item_securitytype'])) { if ($_POST['item_securitytype'] == 'DEFINER' || $_POST['item_securitytype'] == 'INVOKER' ) { $query .= 'SQL SECURITY ' . $_POST['item_securitytype'] . ' '; } } if (! empty($_POST['item_definition'])) { $query .= $_POST['item_definition']; } else { $errors[] = __('You must provide a routine definition.'); } return $query; } // end self::getQueryFromRequest() /** * Handles requests for executing a routine * * @return void */ public static function handleExecute() { global $_GET, $_POST, $_REQUEST, $GLOBALS, $db; $response = Response::getInstance(); /** * Handle all user requests other than the default of listing routines */ if (! empty($_POST['execute_routine']) && ! empty($_POST['item_name'])) { // Build the queries $routine = self::getDataFromName( $_POST['item_name'], $_POST['item_type'], false ); if ($routine === false) { $message = __('Error in processing request:') . ' '; $message .= sprintf( Words::get('not_found'), htmlspecialchars(Util::backquote($_POST['item_name'])), htmlspecialchars(Util::backquote($db)) ); $message = Message::error($message); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON('message', $message); exit; } else { echo $message->getDisplay(); unset($_POST); } } $queries = array(); $end_query = array(); $args = array(); $all_functions = $GLOBALS['dbi']->types->getAllFunctions(); for ($i = 0; $i < $routine['item_num_params']; $i++) { if (isset($_POST['params'][$routine['item_param_name'][$i]])) { $value = $_POST['params'][$routine['item_param_name'][$i]]; if (is_array($value)) { // is SET type $value = implode(',', $value); } $value = $GLOBALS['dbi']->escapeString($value); if (! empty($_POST['funcs'][$routine['item_param_name'][$i]]) && in_array( $_POST['funcs'][$routine['item_param_name'][$i]], $all_functions ) ) { $queries[] = "SET @p$i=" . $_POST['funcs'][$routine['item_param_name'][$i]] . "('$value');\n"; } else { $queries[] = "SET @p$i='$value';\n"; } $args[] = "@p$i"; } else { $args[] = "@p$i"; } if ($routine['item_type'] == 'PROCEDURE') { if ($routine['item_param_dir'][$i] == 'OUT' || $routine['item_param_dir'][$i] == 'INOUT' ) { $end_query[] = "@p$i AS " . Util::backquote($routine['item_param_name'][$i]); } } } if ($routine['item_type'] == 'PROCEDURE') { $queries[] = "CALL " . Util::backquote($routine['item_name']) . "(" . implode(', ', $args) . ");\n"; if (count($end_query)) { $queries[] = "SELECT " . implode(', ', $end_query) . ";\n"; } } else { $queries[] = "SELECT " . Util::backquote($routine['item_name']) . "(" . implode(', ', $args) . ") " . "AS " . Util::backquote($routine['item_name']) . ";\n"; } // Get all the queries as one SQL statement $multiple_query = implode("", $queries); $outcome = true; $affected = 0; // Execute query if (! $GLOBALS['dbi']->tryMultiQuery($multiple_query)) { $outcome = false; } // Generate output if ($outcome) { // Pass the SQL queries through the "pretty printer" $output = Util::formatSql(implode($queries, "\n")); // Display results $output .= "
"; $output .= sprintf( __('Execution results of routine %s'), Util::backquote(htmlspecialchars($routine['item_name'])) ); $output .= ""; $nbResultsetToDisplay = 0; do { $result = $GLOBALS['dbi']->storeResult(); $num_rows = $GLOBALS['dbi']->numRows($result); if (($result !== false) && ($num_rows > 0)) { $output .= ""; foreach ($GLOBALS['dbi']->getFieldsMeta($result) as $field) { $output .= ""; } $output .= ""; while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { $output .= "" . self::browseRow($row) . ""; } $output .= "
"; $output .= htmlspecialchars($field->name); $output .= "
"; $nbResultsetToDisplay++; $affected = $num_rows; } if (! $GLOBALS['dbi']->moreResults()) { break; } $output .= "
"; $GLOBALS['dbi']->freeResult($result); } while ($outcome = $GLOBALS['dbi']->nextResult()); } if ($outcome) { $output .= "
"; $message = __('Your SQL query has been executed successfully.'); if ($routine['item_type'] == 'PROCEDURE') { $message .= '
'; // TODO : message need to be modified according to the // output from the routine $message .= sprintf( _ngettext( '%d row affected by the last statement inside the ' . 'procedure.', '%d rows affected by the last statement inside the ' . 'procedure.', $affected ), $affected ); } $message = Message::success($message); if ($nbResultsetToDisplay == 0) { $notice = __( 'MySQL returned an empty result set (i.e. zero rows).' ); $output .= Message::notice($notice)->getDisplay(); } } else { $output = ''; $message = Message::error( sprintf( __('The following query has failed: "%s"'), htmlspecialchars($multiple_query) ) . '

' . __('MySQL said: ') . $GLOBALS['dbi']->getError() ); } // Print/send output if ($response->isAjax()) { $response->setRequestStatus($message->isSuccess()); $response->addJSON('message', $message->getDisplay() . $output); $response->addJSON('dialog', false); exit; } else { echo $message->getDisplay() , $output; if ($message->isError()) { // At least one query has failed, so shouldn't // execute any more queries, so we quit. exit; } unset($_POST); // Now deliberately fall through to displaying the routines list } return; } elseif (! empty($_GET['execute_dialog']) && ! empty($_GET['item_name'])) { /** * Display the execute form for a routine. */ $routine = self::getDataFromName( $_GET['item_name'], $_GET['item_type'], true ); if ($routine !== false) { $form = self::getExecuteForm($routine); if ($response->isAjax()) { $title = __("Execute routine") . " " . Util::backquote( htmlentities($_GET['item_name'], ENT_QUOTES) ); $response->addJSON('message', $form); $response->addJSON('title', $title); $response->addJSON('dialog', true); } else { echo "\n\n

" . __("Execute routine") . "

\n\n"; echo $form; } exit; } elseif (($response->isAjax())) { $message = __('Error in processing request:') . ' '; $message .= sprintf( Words::get('not_found'), htmlspecialchars(Util::backquote($_GET['item_name'])), htmlspecialchars(Util::backquote($db)) ); $message = Message::error($message); $response->setRequestStatus(false); $response->addJSON('message', $message); exit; } } } /** * Browse row array * * @param array $row Columns * * @return string */ private static function browseRow(array $row) { $output = null; foreach ($row as $value) { if ($value === null) { $value = 'NULL'; } else { $value = htmlspecialchars($value); } $output .= "" . $value . ""; } return $output; } /** * Creates the HTML code that shows the routine execution dialog. * * @param array $routine Data for the routine returned by * self::getDataFromName() * * @return string HTML code for the routine execution dialog. */ public static function getExecuteForm(array $routine) { global $db, $cfg; $response = Response::getInstance(); // Escape special characters $routine['item_name'] = htmlentities($routine['item_name'], ENT_QUOTES); for ($i = 0; $i < $routine['item_num_params']; $i++) { $routine['item_param_name'][$i] = htmlentities( $routine['item_param_name'][$i], ENT_QUOTES ); } // Create the output $retval = ""; $retval .= "\n\n"; $retval .= "
isAjax()) { $retval .= "{$routine['item_name']}\n"; $retval .= "\n"; $retval .= "\n"; } else { $retval .= "" . __('Routine parameters') . "\n"; $retval .= "
\n"; $retval .= __('Routine parameters'); $retval .= "
\n"; } $retval .= "\n"; $retval .= "\n"; $retval .= "\n"; if ($cfg['ShowFunctionFields']) { $retval .= "\n"; } $retval .= "\n"; $retval .= "\n"; // Get a list of data types that are not yet supported. $no_support_types = Util::unsupportedDatatypes(); for ($i = 0; $i < $routine['item_num_params']; $i++) { // Each parameter if ($routine['item_type'] == 'PROCEDURE' && $routine['item_param_dir'][$i] == 'OUT' ) { continue; } $retval .= "\n\n"; $retval .= "\n"; $retval .= "\n"; if ($cfg['ShowFunctionFields']) { $retval .= "\n"; } // Append a class to date/time fields so that // jQuery can attach a datepicker to them $class = ''; if ($routine['item_param_type'][$i] == 'DATETIME' || $routine['item_param_type'][$i] == 'TIMESTAMP' ) { $class = 'datetimefield'; } elseif ($routine['item_param_type'][$i] == 'DATE') { $class = 'datefield'; } $retval .= "\n"; $retval .= "\n"; } $retval .= "\n
" . __('Name') . "" . __('Type') . "" . __('Function') . "" . __('Value') . "
{$routine['item_param_name'][$i]}{$routine['item_param_type'][$i]}\n"; if (stristr($routine['item_param_type'][$i], 'enum') || stristr($routine['item_param_type'][$i], 'set') || in_array( mb_strtolower($routine['item_param_type'][$i]), $no_support_types ) ) { $retval .= "--\n"; } else { $field = array( 'True_Type' => mb_strtolower( $routine['item_param_type'][$i] ), 'Type' => '', 'Key' => '', 'Field' => '', 'Default' => '', 'first_timestamp' => false ); $retval .= ""; } $retval .= "\n"; if (in_array($routine['item_param_type'][$i], array('ENUM', 'SET'))) { if ($routine['item_param_type'][$i] == 'ENUM') { $input_type = 'radio'; } else { $input_type = 'checkbox'; } foreach ($routine['item_param_length_arr'][$i] as $value) { $value = htmlentities(Util::unquote($value), ENT_QUOTES); $retval .= "" . $value . "
\n"; } } elseif (in_array( mb_strtolower($routine['item_param_type'][$i]), $no_support_types )) { $retval .= "\n"; } else { $retval .= "\n"; } $retval .= "
\n"; if (! $response->isAjax()) { $retval .= "\n\n"; $retval .= "
\n"; $retval .= " \n"; $retval .= "
\n"; } else { $retval .= ""; $retval .= ""; } $retval .= "
\n\n"; $retval .= "\n\n"; return $retval; } // end self::getExecuteForm() } db/login/libraries/classes/Rte/Triggers.php000064400000044166151502156010014712 0ustar00getTriggers($db, $table); echo RteList::get('trigger', $items); /** * Display a link for adding a new trigger, * if the user has the necessary privileges */ echo Footer::triggers(); } // end self::main() /** * Handles editor requests for adding or editing an item * * @return void */ public static function handleEditor() { global $_REQUEST, $_POST, $errors, $db, $table; if (! empty($_POST['editor_process_add']) || ! empty($_POST['editor_process_edit']) ) { $sql_query = ''; $item_query = self::getQueryFromRequest(); if (! count($errors)) { // set by PhpMyAdmin\Rte\Routines::getQueryFromRequest() // Execute the created query if (! empty($_POST['editor_process_edit'])) { // Backup the old trigger, in case something goes wrong $trigger = self::getDataFromName($_POST['item_original_name']); $create_item = $trigger['create']; $drop_item = $trigger['drop'] . ';'; $result = $GLOBALS['dbi']->tryQuery($drop_item); if (! $result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($drop_item) ) . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); } else { $result = $GLOBALS['dbi']->tryQuery($item_query); if (! $result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($item_query) ) . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); // We dropped the old item, but were unable to create the // new one. Try to restore the backup query. $result = $GLOBALS['dbi']->tryQuery($create_item); $errors = General::checkResult( $result, __( 'Sorry, we failed to restore the dropped trigger.' ), $create_item, $errors ); } else { $message = Message::success( __('Trigger %1$s has been modified.') ); $message->addParam( Util::backquote($_POST['item_name']) ); $sql_query = $drop_item . $item_query; } } } else { // 'Add a new item' mode $result = $GLOBALS['dbi']->tryQuery($item_query); if (! $result) { $errors[] = sprintf( __('The following query has failed: "%s"'), htmlspecialchars($item_query) ) . '

' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); } else { $message = Message::success( __('Trigger %1$s has been created.') ); $message->addParam( Util::backquote($_POST['item_name']) ); $sql_query = $item_query; } } } if (count($errors)) { $message = Message::error( '' . __( 'One or more errors have occurred while processing your request:' ) . '' ); $message->addHtml(''); } $output = Util::getMessage($message, $sql_query); $response = Response::getInstance(); if ($response->isAjax()) { if ($message->isSuccess()) { $items = $GLOBALS['dbi']->getTriggers($db, $table, ''); $trigger = false; foreach ($items as $value) { if ($value['name'] == $_POST['item_name']) { $trigger = $value; } } $insert = false; if (empty($table) || ($trigger !== false && $table == $trigger['table']) ) { $insert = true; $response->addJSON('new_row', RteList::getTriggerRow($trigger)); $response->addJSON( 'name', htmlspecialchars( mb_strtoupper( $_POST['item_name'] ) ) ); } $response->addJSON('insert', $insert); $response->addJSON('message', $output); } else { $response->addJSON('message', $message); $response->setRequestStatus(false); } exit; } } /** * Display a form used to add/edit a trigger, if necessary */ if (count($errors) || (empty($_POST['editor_process_add']) && empty($_POST['editor_process_edit']) && (! empty($_REQUEST['add_item']) || ! empty($_REQUEST['edit_item']))) // FIXME: this must be simpler than that ) { // Get the data for the form (if any) if (! empty($_REQUEST['add_item'])) { $title = Words::get('add'); $item = self::getDataFromRequest(); $mode = 'add'; } elseif (! empty($_REQUEST['edit_item'])) { $title = __("Edit trigger"); if (! empty($_REQUEST['item_name']) && empty($_POST['editor_process_edit']) ) { $item = self::getDataFromName($_REQUEST['item_name']); if ($item !== false) { $item['item_original_name'] = $item['item_name']; } } else { $item = self::getDataFromRequest(); } $mode = 'edit'; } General::sendEditor('TRI', $mode, $item, $title, $db); } } // end self::handleEditor() /** * This function will generate the values that are required to for the editor * * @return array Data necessary to create the editor. */ public static function getDataFromRequest() { $retval = array(); $indices = array('item_name', 'item_table', 'item_original_name', 'item_action_timing', 'item_event_manipulation', 'item_definition', 'item_definer'); foreach ($indices as $index) { $retval[$index] = isset($_POST[$index]) ? $_POST[$index] : ''; } return $retval; } // end self::getDataFromRequest() /** * This function will generate the values that are required to complete * the "Edit trigger" form given the name of a trigger. * * @param string $name The name of the trigger. * * @return array Data necessary to create the editor. */ public static function getDataFromName($name) { global $db, $table, $_REQUEST; $temp = array(); $items = $GLOBALS['dbi']->getTriggers($db, $table, ''); foreach ($items as $value) { if ($value['name'] == $name) { $temp = $value; } } if (empty($temp)) { return false; } else { $retval = array(); $retval['create'] = $temp['create']; $retval['drop'] = $temp['drop']; $retval['item_name'] = $temp['name']; $retval['item_table'] = $temp['table']; $retval['item_action_timing'] = $temp['action_timing']; $retval['item_event_manipulation'] = $temp['event_manipulation']; $retval['item_definition'] = $temp['definition']; $retval['item_definer'] = $temp['definer']; return $retval; } } // end self::getDataFromName() /** * Displays a form used to add/edit a trigger * * @param string $mode If the editor will be used to edit a trigger * or add a new one: 'edit' or 'add'. * @param array $item Data for the trigger returned by self::getDataFromRequest() * or self::getDataFromName() * * @return string HTML code for the editor. */ public static function getEditorForm($mode, array $item) { global $db, $table, $event_manipulations, $action_timings; $modeToUpper = mb_strtoupper($mode); $response = Response::getInstance(); // Escape special characters $need_escape = array( 'item_original_name', 'item_name', 'item_definition', 'item_definer' ); foreach ($need_escape as $key => $index) { $item[$index] = htmlentities($item[$index], ENT_QUOTES, 'UTF-8'); } $original_data = ''; if ($mode == 'edit') { $original_data = "\n"; } $query = "SELECT `TABLE_NAME` FROM `INFORMATION_SCHEMA`.`TABLES` "; $query .= "WHERE `TABLE_SCHEMA`='" . $GLOBALS['dbi']->escapeString($db) . "' "; $query .= "AND `TABLE_TYPE` IN ('BASE TABLE', 'SYSTEM VERSIONED')"; $tables = $GLOBALS['dbi']->fetchResult($query); // Create the output $retval = ""; $retval .= "\n\n"; $retval .= "
\n"; $retval .= "\n"; $retval .= $original_data; $retval .= Url::getHiddenInputs($db, $table) . "\n"; $retval .= "
\n"; $retval .= "" . __('Details') . "\n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "\n"; $retval .= "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; return $retval; } // end self::getRoutineRow() /** * Creates the contents for a row in the list of triggers * * @param array $trigger An array of routine data * @param string $rowclass Additional class * * @return string HTML code of a cell for the list of triggers */ public static function getTriggerRow(array $trigger, $rowclass = '') { global $url_query, $db, $table, $titles; $retval = " \n"; $retval .= " \n"; $retval .= " \n"; if (empty($table)) { $retval .= " \n"; } $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; return $retval; } // end self::getTriggerRow() /** * Creates the contents for a row in the list of events * * @param array $event An array of routine data * @param string $rowclass Additional class * * @return string HTML code of a cell for the list of events */ public static function getEventRow(array $event, $rowclass = '') { global $url_query, $db, $titles; $sql_drop = sprintf( 'DROP EVENT IF EXISTS %s', Util::backquote($event['name']) ); $retval = " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; return $retval; } // end self::getEventRow() } db/login/libraries/classes/Rte/Export.php000064400000010545151502156010014377 0ustar00isAjax()) { $response->addJSON('message', $export_data); $response->addJSON('title', $title); exit; } else { $export_data = ''; echo "
\n" , "$title\n" , $export_data , "
\n"; } } else { $_db = htmlspecialchars(Util::backquote($db)); $message = __('Error in processing request:') . ' ' . sprintf(Words::get('no_view'), $item_name, $_db); $message = Message::error($message); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON('message', $message); exit; } else { $message->display(); } } } // end self::handle() /** * If necessary, prepares event information and passes * it to self::handle() for the actual export. * * @return void */ public static function events() { global $_GET, $db; if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) { $item_name = $_GET['item_name']; $export_data = $GLOBALS['dbi']->getDefinition($db, 'EVENT', $item_name); if (! $export_data) { $export_data = false; } self::handle($export_data); } } // end self::events() /** * If necessary, prepares routine information and passes * it to self::handle() for the actual export. * * @return void */ public static function routines() { global $_GET, $db; if (! empty($_GET['export_item']) && ! empty($_GET['item_name']) && ! empty($_GET['item_type']) ) { if ($_GET['item_type'] == 'FUNCTION' || $_GET['item_type'] == 'PROCEDURE') { $rtn_definition = $GLOBALS['dbi']->getDefinition( $db, $_GET['item_type'], $_GET['item_name'] ); if (! $rtn_definition) { $export_data = false; } else { $export_data = "DELIMITER $$\n" . $rtn_definition . "$$\nDELIMITER ;\n"; } self::handle($export_data); } } } // end self::routines() /** * If necessary, prepares trigger information and passes * it to self::handle() for the actual export. * * @return void */ public static function triggers() { global $_GET, $db, $table; if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) { $item_name = $_GET['item_name']; $triggers = $GLOBALS['dbi']->getTriggers($db, $table, ''); $export_data = false; foreach ($triggers as $trigger) { if ($trigger['name'] === $item_name) { $export_data = $trigger['create']; break; } } self::handle($export_data); } } // end self::triggers() } db/login/libraries/classes/Rte/Footer.php000064400000011437151502156010014355 0ustar00\n"; $retval .= "
\n"; $retval .= "" . _pgettext('Create new procedure', 'New') . "\n"; $retval .= " \n"; $retval .= "
\n"; $retval .= "\n\n"; return $retval; } // end self::getLinks() /** * Creates a fieldset for adding a new routine, if the user has the privileges. * * @return string HTML code with containing the footer fieldset */ public static function routines() { return self::getLinks('CREATE_PROCEDURE', 'CREATE ROUTINE', 'ROUTINE'); }// end self::routines() /** * Creates a fieldset for adding a new trigger, if the user has the privileges. * * @return string HTML code with containing the footer fieldset */ public static function triggers() { return self::getLinks('CREATE_TRIGGER', 'TRIGGER', 'TRIGGER'); } // end self::triggers() /** * Creates a fieldset for adding a new event, if the user has the privileges. * * @return string HTML code with containing the footer fieldset */ public static function events() { global $db, $url_query; /** * For events, we show the usual 'Add event' form and also * a form for toggling the state of the event scheduler */ // Init options for the event scheduler toggle functionality $es_state = $GLOBALS['dbi']->fetchValue( "SHOW GLOBAL VARIABLES LIKE 'event_scheduler'", 0, 1 ); $es_state = mb_strtolower($es_state); $options = array( 0 => array( 'label' => __('OFF'), 'value' => "SET GLOBAL event_scheduler=\"OFF\"", 'selected' => ($es_state != 'on') ), 1 => array( 'label' => __('ON'), 'value' => "SET GLOBAL event_scheduler=\"ON\"", 'selected' => ($es_state == 'on') ) ); // Generate output $retval = "\n"; $retval .= "
\n"; // show the usual footer $retval .= self::getLinks('CREATE_EVENT', 'EVENT', 'EVENT'); $retval .= "
\n"; $retval .= " \n"; $retval .= " " . __('Event scheduler status') . "\n"; $retval .= " \n"; $retval .= "
\n"; // show the toggle button $retval .= Util::toggleButton( "sql.php$url_query&goto=db_events.php" . urlencode("?db=$db"), 'sql_query', $options, 'PMA_slidingMessage(data.sql_query);' ); $retval .= "
\n"; $retval .= "
\n"; $retval .= "
\n"; $retval .= "
"; $retval .= "\n"; return $retval; } // end self::events() } db/login/libraries/classes/Rte/General.php000064400000005752151502156010014477 0ustar00' . __('The backed up query was:') . "\"" . htmlspecialchars($createStatement) . "\"" . '
' . __('MySQL said: ') . $GLOBALS['dbi']->getError(); return $errors; } /** * Send TRI or EVN editor via ajax or by echoing. * * @param string $type TRI or EVN * @param string $mode Editor mode 'add' or 'edit' * @param array $item Data necessary to create the editor * @param string $title Title of the editor * @param string $db Database * @param string $operation Operation 'change' or '' * * @return void */ public static function sendEditor($type, $mode, array $item, $title, $db, $operation = null) { $response = Response::getInstance(); if ($item !== false) { // Show form if ($type == 'TRI') { $editor = Triggers::getEditorForm($mode, $item); } else { // EVN $editor = Events::getEditorForm($mode, $operation, $item); } if ($response->isAjax()) { $response->addJSON('message', $editor); $response->addJSON('title', $title); } else { echo "\n\n

$title

\n\n$editor"; unset($_POST); } exit; } else { $message = __('Error in processing request:') . ' '; $message .= sprintf( Words::get('not_found'), htmlspecialchars(Util::backquote($_REQUEST['item_name'])), htmlspecialchars(Util::backquote($db)) ); $message = Message::error($message); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON('message', $message); exit; } else { $message->display(); } } } } db/login/libraries/classes/Rte/Words.php000064400000006043151502156010014212 0ustar00 __('Add routine'), 'docu' => 'STORED_ROUTINES', 'export' => __('Export of routine %s'), 'human' => __('routine'), 'no_create' => __( 'You do not have the necessary privileges to create a routine.' ), 'no_edit' => __( 'No routine with name %1$s found in database %2$s. ' . 'You might be lacking the necessary privileges to edit this routine.' ), 'no_view' => __( 'No routine with name %1$s found in database %2$s. ' . 'You might be lacking the necessary privileges to view/export this routine.' ), 'not_found' => __('No routine with name %1$s found in database %2$s.'), 'nothing' => __('There are no routines to display.'), 'title' => __('Routines'), ); break; case 'TRI': $words = array( 'add' => __('Add trigger'), 'docu' => 'TRIGGERS', 'export' => __('Export of trigger %s'), 'human' => __('trigger'), 'no_create' => __( 'You do not have the necessary privileges to create a trigger.' ), 'not_found' => __('No trigger with name %1$s found in database %2$s.'), 'nothing' => __('There are no triggers to display.'), 'title' => __('Triggers'), ); break; case 'EVN': $words = array( 'add' => __('Add event'), 'docu' => 'EVENTS', 'export' => __('Export of event %s'), 'human' => __('event'), 'no_create' => __( 'You do not have the necessary privileges to create an event.' ), 'not_found' => __('No event with name %1$s found in database %2$s.'), 'nothing' => __('There are no events to display.'), 'title' => __('Events'), ); break; default: $words = array(); break; } return isset($words[$index]) ? $words[$index] : ''; } // end self::get() } db/login/libraries/classes/Error.php000064400000032060151502156010013451 0ustar00 'Internal error', E_ERROR => 'Error', E_WARNING => 'Warning', E_PARSE => 'Parsing Error', E_NOTICE => 'Notice', E_CORE_ERROR => 'Core Error', E_CORE_WARNING => 'Core Warning', E_COMPILE_ERROR => 'Compile Error', E_COMPILE_WARNING => 'Compile Warning', E_USER_ERROR => 'User Error', E_USER_WARNING => 'User Warning', E_USER_NOTICE => 'User Notice', E_STRICT => 'Runtime Notice', E_DEPRECATED => 'Deprecation Notice', E_USER_DEPRECATED => 'Deprecation Notice', E_RECOVERABLE_ERROR => 'Catchable Fatal Error', ); /** * Error levels * * @var array */ static public $errorlevel = array ( 0 => 'error', E_ERROR => 'error', E_WARNING => 'error', E_PARSE => 'error', E_NOTICE => 'notice', E_CORE_ERROR => 'error', E_CORE_WARNING => 'error', E_COMPILE_ERROR => 'error', E_COMPILE_WARNING => 'error', E_USER_ERROR => 'error', E_USER_WARNING => 'error', E_USER_NOTICE => 'notice', E_STRICT => 'notice', E_DEPRECATED => 'notice', E_USER_DEPRECATED => 'notice', E_RECOVERABLE_ERROR => 'error', ); /** * The file in which the error occurred * * @var string */ protected $file = ''; /** * The line in which the error occurred * * @var integer */ protected $line = 0; /** * Holds the backtrace for this error * * @var array */ protected $backtrace = array(); /** * Hide location of errors */ protected $hide_location = false; /** * Constructor * * @param integer $errno error number * @param string $errstr error message * @param string $errfile file * @param integer $errline line */ public function __construct($errno, $errstr, $errfile, $errline) { $this->setNumber($errno); $this->setMessage($errstr, false); $this->setFile($errfile); $this->setLine($errline); // This function can be disabled in php.ini if (function_exists('debug_backtrace')) { $backtrace = @debug_backtrace(); // remove last three calls: // debug_backtrace(), handleError() and addError() $backtrace = array_slice($backtrace, 3); } else { $backtrace = array(); } $this->setBacktrace($backtrace); } /** * Process backtrace to avoid path disclossures, objects and so on * * @param array $backtrace backtrace * * @return array */ public static function processBacktrace(array $backtrace) { $result = array(); $members = array('line', 'function', 'class', 'type'); foreach ($backtrace as $idx => $step) { /* Create new backtrace entry */ $result[$idx] = array(); /* Make path relative */ if (isset($step['file'])) { $result[$idx]['file'] = self::relPath($step['file']); } /* Store members we want */ foreach ($members as $name) { if (isset($step[$name])) { $result[$idx][$name] = $step[$name]; } } /* Store simplified args */ if (isset($step['args'])) { foreach ($step['args'] as $key => $arg) { $result[$idx]['args'][$key] = self::getArg($arg, $step['function']); } } } return $result; } /** * Toggles location hiding * * @param boolean $hide Whether to hide * * @return void */ public function setHideLocation($hide) { $this->hide_location = $hide; } /** * sets PhpMyAdmin\Error::$_backtrace * * We don't store full arguments to avoid wakeup or memory problems. * * @param array $backtrace backtrace * * @return void */ public function setBacktrace(array $backtrace) { $this->backtrace = self::processBacktrace($backtrace); } /** * sets PhpMyAdmin\Error::$_line * * @param integer $line the line * * @return void */ public function setLine($line) { $this->line = $line; } /** * sets PhpMyAdmin\Error::$_file * * @param string $file the file * * @return void */ public function setFile($file) { $this->file = self::relPath($file); } /** * returns unique PhpMyAdmin\Error::$hash, if not exists it will be created * * @return string PhpMyAdmin\Error::$hash */ public function getHash() { try { $backtrace = serialize($this->getBacktrace()); } catch(Exception $e) { $backtrace = ''; } if ($this->hash === null) { $this->hash = md5( $this->getNumber() . $this->getMessage() . $this->getFile() . $this->getLine() . $backtrace ); } return $this->hash; } /** * returns PhpMyAdmin\Error::$_backtrace for first $count frames * pass $count = -1 to get full backtrace. * The same can be done by not passing $count at all. * * @param integer $count Number of stack frames. * * @return array PhpMyAdmin\Error::$_backtrace */ public function getBacktrace($count = -1) { if ($count != -1) { return array_slice($this->backtrace, 0, $count); } return $this->backtrace; } /** * returns PhpMyAdmin\Error::$file * * @return string PhpMyAdmin\Error::$file */ public function getFile() { return $this->file; } /** * returns PhpMyAdmin\Error::$line * * @return integer PhpMyAdmin\Error::$line */ public function getLine() { return $this->line; } /** * returns type of error * * @return string type of error */ public function getType() { return self::$errortype[$this->getNumber()]; } /** * returns level of error * * @return string level of error */ public function getLevel() { return self::$errorlevel[$this->getNumber()]; } /** * returns title prepared for HTML Title-Tag * * @return string HTML escaped and truncated title */ public function getHtmlTitle() { return htmlspecialchars( mb_substr($this->getTitle(), 0, 100) ); } /** * returns title for error * * @return string */ public function getTitle() { return $this->getType() . ': ' . $this->getMessage(); } /** * Get HTML backtrace * * @return string */ public function getBacktraceDisplay() { return self::formatBacktrace( $this->getBacktrace(), "
\n", "
\n" ); } /** * return formatted backtrace field * * @param array $backtrace Backtrace data * @param string $separator Arguments separator to use * @param string $lines Lines separator to use * * @return string formatted backtrace */ public static function formatBacktrace(array $backtrace, $separator, $lines) { $retval = ''; foreach ($backtrace as $step) { if (isset($step['file']) && isset($step['line'])) { $retval .= self::relPath($step['file']) . '#' . $step['line'] . ': '; } if (isset($step['class'])) { $retval .= $step['class'] . $step['type']; } $retval .= self::getFunctionCall($step, $separator); $retval .= $lines; } return $retval; } /** * Formats function call in a backtrace * * @param array $step backtrace step * @param string $separator Arguments separator to use * * @return string */ public static function getFunctionCall(array $step, $separator) { $retval = $step['function'] . '('; if (isset($step['args'])) { if (count($step['args']) > 1) { $retval .= $separator; foreach ($step['args'] as $arg) { $retval .= "\t"; $retval .= $arg; $retval .= ',' . $separator; } } elseif (count($step['args']) > 0) { foreach ($step['args'] as $arg) { $retval .= $arg; } } } $retval .= ')'; return $retval; } /** * Get a single function argument * * if $function is one of include/require * the $arg is converted to a relative path * * @param string $arg argument to process * @param string $function function name * * @return string */ public static function getArg($arg, $function) { $retval = ''; $include_functions = array( 'include', 'include_once', 'require', 'require_once', ); $connect_functions = array( 'mysql_connect', 'mysql_pconnect', 'mysqli_connect', 'mysqli_real_connect', 'connect', '_realConnect' ); if (in_array($function, $include_functions)) { $retval .= self::relPath($arg); } elseif (in_array($function, $connect_functions) && getType($arg) === 'string' ) { $retval .= getType($arg) . ' ********'; } elseif (is_scalar($arg)) { $retval .= getType($arg) . ' ' . htmlspecialchars(var_export($arg, true)); } elseif (is_object($arg)) { $retval .= ''; } else { $retval .= getType($arg); } return $retval; } /** * Gets the error as string of HTML * * @return string */ public function getDisplay() { $this->isDisplayed(true); $retval = '
'; if (! $this->isUserError()) { $retval .= '' . $this->getType() . ''; $retval .= ' in ' . $this->getFile() . '#' . $this->getLine(); $retval .= "
\n"; } $retval .= $this->getMessage(); if (! $this->isUserError()) { $retval .= "
\n"; $retval .= "
\n"; $retval .= "Backtrace
\n"; $retval .= "
\n"; $retval .= $this->getBacktraceDisplay(); } $retval .= '
'; return $retval; } /** * whether this error is a user error * * @return boolean */ public function isUserError() { return $this->hide_location || ($this->getNumber() & (E_USER_WARNING | E_USER_ERROR | E_USER_NOTICE | E_USER_DEPRECATED)); } /** * return short relative path to phpMyAdmin basedir * * prevent path disclosure in error message, * and make users feel safe to submit error reports * * @param string $path path to be shorten * * @return string shortened path */ public static function relPath($path) { $dest = @realpath($path); /* Probably affected by open_basedir */ if ($dest === false) { return basename($path); } $Ahere = explode( DIRECTORY_SEPARATOR, realpath(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..') ); $Adest = explode(DIRECTORY_SEPARATOR, $dest); $result = '.'; // && count ($Adest)>0 && count($Ahere)>0 ) while (implode(DIRECTORY_SEPARATOR, $Adest) != implode(DIRECTORY_SEPARATOR, $Ahere)) { if (count($Ahere) > count($Adest)) { array_pop($Ahere); $result .= DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..'; } else { array_pop($Adest); } } $path = $result . str_replace(implode(DIRECTORY_SEPARATOR, $Adest), '', $dest); return str_replace( DIRECTORY_SEPARATOR . PATH_SEPARATOR, DIRECTORY_SEPARATOR, $path ); } } db/login/libraries/classes/Template.php000064400000007650151502156010014142 0ustar00name = $name; if (is_null($this::$twig)) { $loader = new FilesystemLoader(static::BASE_PATH); $cache_dir = $GLOBALS['PMA_Config']->getTempDir('twig'); /* Twig expects false when cache is not configured */ if (is_null($cache_dir)) { $cache_dir = false; } $twig = new Environment($loader, array( 'auto_reload' => true, 'cache' => $cache_dir, 'debug' => false, )); $twig->addExtension(new CharsetsExtension()); $twig->addExtension(new CoreExtension()); $twig->addExtension(new I18nExtension()); $twig->addExtension(new IndexExtension()); $twig->addExtension(new MessageExtension()); $twig->addExtension(new PartitionExtension()); $twig->addExtension(new PhpFunctionsExtension()); $twig->addExtension(new PluginsExtension()); $twig->addExtension(new RelationExtension()); $twig->addExtension(new SanitizeExtension()); $twig->addExtension(new ServerPrivilegesExtension()); $twig->addExtension(new StorageEngineExtension()); $twig->addExtension(new TrackerExtension()); $twig->addExtension(new TableExtension()); $twig->addExtension(new TransformationsExtension()); $twig->addExtension(new UrlExtension()); $twig->addExtension(new UtilExtension()); $this::$twig = $twig; } } /** * Template getter * * @param string $name Template name * * @return Template */ public static function get($name) { return new Template($name); } /** * Render template * * @param array $data Variables to be provided to the template * * @return string */ public function render(array $data = array()) { try { $template = $this::$twig->load($this->name . '.twig'); } catch (\RuntimeException $e) { /* Retry with disabled cache */ $this::$twig->setCache(false); $template = $this::$twig->load($this->name . '.twig'); /* * The trigger error is intentionally after second load * to avoid triggering error when disabling cache does not * solve it. */ trigger_error( sprintf( __('Error while working with template cache: %s'), $e->getMessage() ), E_USER_WARNING ); } return $template->render($data); } } db/login/libraries/classes/Plugins/TransformationsInterface.php000064400000001533151502156010021014 0ustar00error; } /** * Returns the success status * * @return bool */ public function isSuccess() { return $this->success; } /** * Resets the object properties * * @return void */ public function reset() { $this->success = true; $this->error = ''; } } db/login/libraries/classes/Plugins/TransformationsPlugin.php000064400000003277151502156010020361 0ustar00 $value) { if (isset($options[$key]) && $options[$key] !== '') { $result[$key] = $options[$key]; } else { $result[$key] = $value; } } return $result; } } db/login/libraries/classes/Plugins/SchemaPlugin.php000064400000004440151502156010016361 0ustar00properties; } /** * Sets the export plugins properties and is implemented by * each schema export plugin * * @return void */ protected abstract function setProperties(); /** * Exports the schema into the specified format. * * @param string $db database name * * @return bool Whether it succeeded */ public abstract function exportSchema($db); /** * Adds export options common to all plugins. * * @param \PhpMyAdmin\Properties\Options\Groups\OptionsPropertyMainGroup $propertyGroup property group * * @return void */ protected function addCommonOptions(OptionsPropertyMainGroup $propertyGroup) { $leaf = new BoolPropertyItem('show_color', __('Show color')); $propertyGroup->addProperty($leaf); $leaf = new BoolPropertyItem('show_keys', __('Only show keys')); $propertyGroup->addProperty($leaf); } /** * Returns the array of paper sizes * * @return array array of paper sizes */ protected function getPaperSizeArray() { $ret = array(); foreach ($GLOBALS['cfg']['PDFPageSizes'] as $val) { $ret[$val] = $val; } return $ret; } } db/login/libraries/classes/Plugins/ExportPlugin.php000064400000025301151502156010016441 0ustar00relation = new Relation(); } /** * Outputs export header * * @return bool Whether it succeeded */ abstract public function exportHeader(); /** * Outputs export footer * * @return bool Whether it succeeded */ abstract public function exportFooter(); /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ abstract public function exportDBHeader($db, $db_alias = ''); /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ abstract public function exportDBFooter($db); /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ abstract public function exportDBCreate($db, $export_type, $db_alias = ''); /** * Outputs the content of a table * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ abstract public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ); /** * The following methods are used in export.php or in db_operations.php, * but they are not implemented by all export plugins */ /** * Exports routines (procedures and functions) * * @param string $db Database * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportRoutines($db, array $aliases = array()) { ; } /** * Exports events * * @param string $db Database * * @return bool Whether it succeeded */ public function exportEvents($db) { ; } /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table','triggers','create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $relation whether to include relation comments * @param bool $comments whether to include the pmadb-style column comments * as comments in the structure; this is deprecated * but the parameter is left here because export.php * calls exportStructure() also for other export * types which use this parameter * @param bool $mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $relation = false, $comments = false, $mime = false, $dates = false, array $aliases = array() ) { ; } /** * Exports metadata from Configuration Storage * * @param string $db database being exported * @param string|array $tables table(s) being exported * @param array $metadataTypes types of metadata to export * * @return bool Whether it succeeded */ public function exportMetadata( $db, $tables, array $metadataTypes ) { ; } /** * Returns a stand-in CREATE definition to resolve view dependencies * * @param string $db the database name * @param string $view the view name * @param string $crlf the end of line sequence * @param array $aliases Aliases of db/table/columns * * @return string resulting definition */ public function getTableDefStandIn($db, $view, $crlf, $aliases = array()) { ; } /** * Outputs triggers * * @param string $db database name * @param string $table table name * * @return string Formatted triggers list */ protected function getTriggers($db, $table) { ; } /** * Initialize the specific variables for each export plugin * * @return void */ protected function initSpecificVariables() { ; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the export specific format plugin properties * * @return ExportPluginProperties */ public function getProperties() { return $this->properties; } /** * Sets the export plugins properties and is implemented by each export * plugin * * @return void */ abstract protected function setProperties(); /** * The following methods are implemented here so that they * can be used by all export plugin without overriding it. * Note: If you are creating a export plugin then don't include * below methods unless you want to override them. */ /** * Initialize aliases * * @param array $aliases Alias information for db/table/column * @param string &$db the database * @param string &$table the table * * @return void */ public function initAlias($aliases, &$db, &$table = null) { if (!empty($aliases[$db]['tables'][$table]['alias'])) { $table = $aliases[$db]['tables'][$table]['alias']; } if (!empty($aliases[$db]['alias'])) { $db = $aliases[$db]['alias']; } } /** * Search for alias of a identifier. * * @param array $aliases Alias information for db/table/column * @param string $id the identifier to be searched * @param string $type db/tbl/col or any combination of them * representing what to be searched * @param string $db the database in which search is to be done * @param string $tbl the table in which search is to be done * * @return string alias of the identifier if found or '' */ public function getAlias(array $aliases, $id, $type = 'dbtblcol', $db = '', $tbl = '') { if (!empty($db) && isset($aliases[$db])) { $aliases = array( $db => $aliases[$db], ); } // search each database foreach ($aliases as $db_key => $db) { // check if id is database and has alias if (stristr($type, 'db') !== false && $db_key === $id && !empty($db['alias']) ) { return $db['alias']; } if (empty($db['tables'])) { continue; } if (!empty($tbl) && isset($db['tables'][$tbl])) { $db['tables'] = array( $tbl => $db['tables'][$tbl], ); } // search each of its tables foreach ($db['tables'] as $table_key => $table) { // check if id is table and has alias if (stristr($type, 'tbl') !== false && $table_key === $id && !empty($table['alias']) ) { return $table['alias']; } if (empty($table['columns'])) { continue; } // search each of its columns foreach ($table['columns'] as $col_key => $col) { // check if id is column if (stristr($type, 'col') !== false && $col_key === $id && !empty($col) ) { return $col; } } } } return ''; } /** * Gives the relation string and * also substitutes with alias if required * in this format: * [Foreign Table] ([Foreign Field]) * * @param array $res_rel the foreigners array * @param string $field_name the field name * @param string $db the field name * @param array $aliases Alias information for db/table/column * * @return string the Relation string */ public function getRelationString( array $res_rel, $field_name, $db, array $aliases = array() ) { $relation = ''; $foreigner = $this->relation->searchColumnInForeigners($res_rel, $field_name); if ($foreigner) { $ftable = $foreigner['foreign_table']; $ffield = $foreigner['foreign_field']; if (!empty($aliases[$db]['tables'][$ftable]['columns'][$ffield])) { $ffield = $aliases[$db]['tables'][$ftable]['columns'][$ffield]; } if (!empty($aliases[$db]['tables'][$ftable]['alias'])) { $ftable = $aliases[$db]['tables'][$ftable]['alias']; } $relation = $ftable . ' (' . $ffield . ')'; } return $relation; } } db/login/libraries/classes/Plugins/Transformations/Text_Plain_Link.php000064400000001505151502156010022216 0ustar00 db/login/libraries/classes/Plugins/Transformations/Input/Text_Plain_XmlEditor.php000064400000003576151502156010024341 0ustar00'; } $class = 'transform_IPToBin'; $html .= ''; return $html; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the plugin * * @return string */ public static function getName() { return "IPv4/IPv6 To Binary"; } /** * Gets the plugin`s MIME type * * @return string */ public static function getMIMEType() { return "Text"; } /** * Gets the plugin`s MIME subtype * * @return string */ public static function getMIMESubtype() { return "Plain"; } } db/login/libraries/classes/Plugins/Transformations/Text_Plain_Substring.php000064400000001540151502156010023300 0ustar00'; $html .= ''; } $html .= ''; return $html; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Text file upload"; } } db/login/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php000064400000012166151502156010025757 0ustar00getOptions( $options, $cfg['DefaultTransformations']['External'] ); if (isset($allowed_programs[$options[0]])) { $program = $allowed_programs[$options[0]]; } else { $program = $allowed_programs[0]; } if (isset($options[1]) && strlen((string) $options[1]) > 0) { trigger_error(sprintf( __( 'You are using the external transformation command line options field, which has been deprecated for security reasons. ' . 'Add all command line options directly to the definition in %s.' ), '[code]libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php[/code]' ), E_USER_DEPRECATED); } // needs PHP >= 4.3.0 $newstring = ''; $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), ); $process = proc_open($program . ' ' . $options[1], $descriptorspec, $pipes); if (is_resource($process)) { fwrite($pipes[0], $buffer); fclose($pipes[0]); while (!feof($pipes[1])) { $newstring .= fgets($pipes[1], 1024); } fclose($pipes[1]); // we don't currently use the return value proc_close($process); } if ($options[2] == 1 || $options[2] == '2') { $retstring = htmlspecialchars($newstring); } else { $retstring = $newstring; } return $retstring; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "External"; } } db/login/libraries/classes/Plugins/Transformations/Abs/LongToIPv4TransformationsPlugin.php000064400000003157151502156010026102 0ustar00 4294967295) { return htmlspecialchars($buffer); } return long2ip((int) $buffer); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Long To IPv4"; } } db/login/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php000064400000004407151502156010025412 0ustar00getOptions($options, $cfg['DefaultTransformations']['Inline']); if (PMA_IS_GD2) { return '
[' . htmlspecialchars($buffer) . ']'; } else { return '[' . htmlspecialchars($buffer) . ']'; } } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Inline"; } } db/login/libraries/classes/Plugins/Transformations/Abs/CodeMirrorEditorTransformationPlugin.php000064400000004507151502156010027226 0ustar00'; } $class = 'transform_' . strtolower(static::getName()) . '_editor'; $html .= ''; return $html; } } db/login/libraries/classes/Plugins/Transformations/Abs/SubstringTransformationsPlugin.php000064400000005051151502156010026150 0ustar00getOptions($options, $cfg['DefaultTransformations']['Substring']); if ($options[1] != 'all') { $newtext = mb_substr( $buffer, $options[0], $options[1] ); } else { $newtext = mb_substr($buffer, $options[0]); } $length = mb_strlen($newtext); $baselength = mb_strlen($buffer); if ($length != $baselength) { if ($options[0] != 0) { $newtext = $options[2] . $newtext; } if (($length + $options[0]) != $baselength) { $newtext .= $options[2]; } } return htmlspecialchars($newtext); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Substring"; } } db/login/libraries/classes/Plugins/Transformations/Abs/FormattedTransformationsPlugin.php000064400000003101151502156010026107 0ustar00'; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Formatted"; } } db/login/libraries/classes/Plugins/Transformations/Abs/RegexValidationTransformationsPlugin.php000064400000003631151502156010027257 0ustar00reset(); if (!empty($options[0]) && !preg_match($options[0], $buffer)) { $this->success = false; $this->error = sprintf( __('Validation failed for the input string %s.'), htmlspecialchars($buffer) ); } return $buffer; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Regex Validation"; } } db/login/libraries/classes/Plugins/Transformations/Abs/ImageUploadTransformationsPlugin.php000064400000007155151502156010026366 0ustar00'; $html .= ''; $src = 'transformation_wrapper.php' . $options['wrapper_link']; } $html .= ''
            . __('Image preview here') . ''; $html .= '
'; return $html; } /** * Returns the array of scripts (filename) required for plugin * initialization and handling * * @return array javascripts to be included */ public function getScripts() { return array( 'transformations/image_upload.js', ); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Image upload"; } } db/login/libraries/classes/Plugins/Transformations/Abs/TextImageLinkTransformationsPlugin.php000064400000004313151502156010026675 0ustar00getOptions($options, $cfg['DefaultTransformations']['TextImageLink']); $url = $options[0] . $buffer; /* Do not allow javascript links */ if (! Sanitize::checkLink($url, true, true)) { return htmlspecialchars($url); } return '' . htmlspecialchars($buffer) . ''; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Image Link"; } } db/login/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php000064400000013020151502156010026211 0ustar00getOptions($options, $cfg['DefaultTransformations']['DateFormat']); // further operations on $buffer using the $options[] array. $options[2] = mb_strtolower($options[2]); if (empty($options[1])) { if ($options[2] == 'local') { $options[1] = __('%B %d, %Y at %I:%M %p'); } else { $options[1] = 'Y-m-d H:i:s'; } } $timestamp = -1; // INT columns will be treated as UNIX timestamps // and need to be detected before the verification for // MySQL TIMESTAMP if ($meta->type == 'int') { $timestamp = $buffer; // Detect TIMESTAMP(6 | 8 | 10 | 12 | 14) // TIMESTAMP (2 | 4) not supported here. // (Note: prior to MySQL 4.1, TIMESTAMP has a display size // for example TIMESTAMP(8) means YYYYMMDD) } else { if (preg_match('/^(\d{2}){3,7}$/', $buffer)) { if (mb_strlen($buffer) == 14 || mb_strlen($buffer) == 8) { $offset = 4; } else { $offset = 2; } $aDate = array(); $aDate['year'] = (int) mb_substr($buffer, 0, $offset); $aDate['month'] = (int) mb_substr($buffer, $offset, 2); $aDate['day'] = (int) mb_substr($buffer, $offset + 2, 2); $aDate['hour'] = (int) mb_substr($buffer, $offset + 4, 2); $aDate['minute'] = (int) mb_substr($buffer, $offset + 6, 2); $aDate['second'] = (int) mb_substr($buffer, $offset + 8, 2); if (checkdate($aDate['month'], $aDate['day'], $aDate['year'])) { $timestamp = mktime( $aDate['hour'], $aDate['minute'], $aDate['second'], $aDate['month'], $aDate['day'], $aDate['year'] ); } // If all fails, assume one of the dozens of valid strtime() syntaxes // (https://www.gnu.org/manual/tar-1.12/html_chapter/tar_7.html) } else { if (preg_match('/^[0-9]\d{1,9}$/', $buffer)) { $timestamp = (int)$buffer; } else { $timestamp = strtotime($buffer); } } } // If all above failed, maybe it's a Unix timestamp already? if ($timestamp < 0 && preg_match('/^[1-9]\d{1,9}$/', $buffer)) { $timestamp = $buffer; } // Reformat a valid timestamp if ($timestamp >= 0) { $timestamp -= $options[0] * 60 * 60; $source = $buffer; if ($options[2] == 'local') { $text = Util::localisedDate( $timestamp, $options[1] ); } elseif ($options[2] == 'utc') { $text = gmdate($options[1], $timestamp); } else { $text = 'INVALID DATE TYPE'; } return '' . htmlspecialchars($text) . ''; } return htmlspecialchars($buffer); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Date Format"; } } db/login/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php000064400000003471151502156010024720 0ustar00getOptions($options, $cfg['DefaultTransformations']['Hex']); $options[0] = intval($options[0]); if ($options[0] < 1) { return bin2hex($buffer); } else { return chunk_split(bin2hex($buffer), $options[0], ' '); } } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Hex"; } } db/login/libraries/classes/Plugins/Transformations/Abs/ImageLinkTransformationsPlugin.php000064400000003264151502156010026034 0ustar00[BLOB]'; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "ImageLink"; } } db/login/libraries/classes/Plugins/Transformations/Abs/PreApPendTransformationsPlugin.php000064400000003504151502156010026007 0ustar00getOptions($options, $cfg['DefaultTransformations']['PreApPend']); //just prepend and/or append the options to the original text return htmlspecialchars($options[0]) . htmlspecialchars($buffer) . htmlspecialchars($options[1]); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "PreApPend"; } } db/login/libraries/classes/Plugins/Transformations/Abs/SQLTransformationsPlugin.php000064400000002657151502156010024640 0ustar00 $val) { if ($val->name == $options[1]) { $pos = $key; break; } } if (isset($pos)) { $cn = $row[$pos]; } } if (empty($cn)) { $cn = 'binary_file.dat'; } } return sprintf( '%s', $options['wrapper_link'], htmlspecialchars(urlencode($cn)), htmlspecialchars($cn), htmlspecialchars($cn) ); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Download"; } } db/login/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php000064400000004323151502156010025733 0ustar00getOptions($options, $cfg['DefaultTransformations']['TextLink']); $url = (isset($options[0]) ? $options[0] : '') . ((isset($options[2]) && $options[2]) ? '' : $buffer); /* Do not allow javascript links */ if (! Sanitize::checkLink($url, true, true)) { return htmlspecialchars($url); } return '' . htmlspecialchars(isset($options[1]) ? $options[1] : $buffer) . ''; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "TextLink"; } } db/login/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php000064400000003351151502156010026013 0ustar00getOptions($options, $cfg['DefaultTransformations']['Bool2Text']); if ($buffer == '0') { return $options[1]; // return false label } return $options[0]; // or true one if nonzero } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "Bool2Text"; } } db/login/libraries/classes/Plugins/Transformations/Text_Plain_PreApPend.php000064400000001701151502156010023135 0ustar00getHeader() ->getScripts(); $scripts->addFile('vendor/codemirror/lib/codemirror.js'); $scripts->addFile('vendor/codemirror/mode/javascript/javascript.js'); $scripts->addFile('vendor/codemirror/addon/runmode/runmode.js'); $scripts->addFile('transformations/json.js'); } } /** * Gets the transformation description of the specific plugin * * @return string */ public static function getInfo() { return __( 'Formats text as JSON with syntax highlighting.' ); } /** * Does the actual work of each specific transformations plugin. * * @param string $buffer text to be transformed * @param array $options transformation options * @param string $meta meta information * * @return string */ public function applyTransformation($buffer, array $options = array(), $meta = '') { return '
' . "\n"
        . htmlspecialchars($buffer) . "\n"
        . '
'; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the plugin`s MIME type * * @return string */ public static function getMIMEType() { return "Text"; } /** * Gets the plugin`s MIME subtype * * @return string */ public static function getMIMESubtype() { return "Plain"; } /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "JSON"; } } db/login/libraries/classes/Plugins/Transformations/Output/Text_Octetstream_Sql.php000064400000001502151502156010024604 0ustar00getHeader() ->getScripts(); $scripts->addFile('vendor/codemirror/lib/codemirror.js'); $scripts->addFile('vendor/codemirror/mode/sql/sql.js'); $scripts->addFile('vendor/codemirror/addon/runmode/runmode.js'); $scripts->addFile('functions.js'); } } /** * Gets the plugin`s MIME type * * @return string */ public static function getMIMEType() { return "Text"; } /** * Gets the plugin`s MIME subtype * * @return string */ public static function getMIMESubtype() { return "Plain"; } } db/login/libraries/classes/Plugins/Transformations/Output/Application_Octetstream_Download.php000064400000001624151502156010027140 0ustar00getHeader() ->getScripts(); $scripts->addFile('vendor/codemirror/lib/codemirror.js'); $scripts->addFile('vendor/codemirror/mode/xml/xml.js'); $scripts->addFile('vendor/codemirror/addon/runmode/runmode.js'); $scripts->addFile('transformations/xml.js'); } } /** * Gets the transformation description of the specific plugin * * @return string */ public static function getInfo() { return __( 'Formats text as XML with syntax highlighting.' ); } /** * Does the actual work of each specific transformations plugin. * * @param string $buffer text to be transformed * @param array $options transformation options * @param string $meta meta information * * @return string */ public function applyTransformation($buffer, array $options = array(), $meta = '') { return '
' . "\n"
        . htmlspecialchars($buffer) . "\n"
        . '
'; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the plugin`s MIME type * * @return string */ public static function getMIMEType() { return "Text"; } /** * Gets the plugin`s MIME subtype * * @return string */ public static function getMIMESubtype() { return "Plain"; } /** * Gets the transformation name of the specific plugin * * @return string */ public static function getName() { return "XML"; } } db/login/libraries/classes/Plugins/Transformations/Output/Text_Plain_Binarytoip.php000064400000004266151502156010024750 0ustar00mimetype contains the original MimeType of the field (i.e. 'text/plain', 'image/jpeg' etc.) return $buffer; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the TransformationName of the specific plugin * * @return string */ public static function getName() { return "[TransformationName]"; } } ?> db/login/libraries/classes/Plugins/Transformations/README000064400000000245151502156010017341 0ustar00TRANSFORMATION USAGE (Garvin Hicking, ) ==================== See the documentation for complete instructions on how to use transformation plugins. db/login/libraries/classes/Plugins/Transformations/Text_Plain_Longtoipv4.php000064400000001553151502156010023371 0ustar00initSpecificVariables(); $this->setProperties(); } /** * Initialize the local variables that are used for export PDF * * @return void */ protected function initSpecificVariables() { if (!empty($_POST['pdf_report_title'])) { $this->_setPdfReportTitle($_POST['pdf_report_title']); } $this->_setPdf(new Pdf('L', 'pt', 'A3')); } /** * Sets the export PDF properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('PDF'); $exportPluginProperties->setExtension('pdf'); $exportPluginProperties->setMimeType('application/pdf'); $exportPluginProperties->setForceFile(true); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new TextPropertyItem( "report_title", __('Report title:') ); $generalOptions->addProperty($leaf); // add the group to the root group $exportSpecificOptions->addProperty($generalOptions); // what to dump (structure/data/both) main group $dumpWhat = new OptionsPropertyMainGroup( "dump_what", __('Dump table') ); $leaf = new RadioPropertyItem("structure_or_data"); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $dumpWhat->addProperty($leaf); // add the group to the root group $exportSpecificOptions->addProperty($dumpWhat); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { $pdf_report_title = $this->_getPdfReportTitle(); $pdf = $this->_getPdf(); $pdf->Open(); $attr = array('titleFontSize' => 18, 'titleText' => $pdf_report_title); $pdf->setAttributes($attr); $pdf->setTopMargin(30); return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { $pdf = $this->_getPdf(); // instead of $pdf->Output(): return Export::outputHandler($pdf->getPDFData()); } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in NHibernate format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $pdf = $this->_getPdf(); $attr = array( 'currentDb' => $db, 'currentTable' => $table, 'dbAlias' => $db_alias, 'tableAlias' => $table_alias, 'aliases' => $aliases, ); $pdf->setAttributes($attr); $pdf->purpose = __('Dumping data'); $pdf->mysqlReport($sql_query); return true; } // end of the 'PMA_exportData()' function /** * Outputs table structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table', 'triggers', 'create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * PMA_exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases aliases for db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $pdf = $this->_getPdf(); // getting purpose to show at top switch ($export_mode) { case 'create_table': $purpose = __('Table structure'); break; case 'triggers': $purpose = __('Triggers'); break; case 'create_view': $purpose = __('View structure'); break; case 'stand_in': $purpose = __('Stand in'); } // end switch $attr = array( 'currentDb' => $db, 'currentTable' => $table, 'dbAlias' => $db_alias, 'tableAlias' => $table_alias, 'aliases' => $aliases, 'purpose' => $purpose, ); $pdf->setAttributes($attr); /** * comment display set true as presently in pdf * format, no option is present to take user input. */ $do_comments = true; switch ($export_mode) { case 'create_table': $pdf->getTableDef( $db, $table, $do_relation, $do_comments, $do_mime, false, $aliases ); break; case 'triggers': $pdf->getTriggers($db, $table); break; case 'create_view': $pdf->getTableDef( $db, $table, $do_relation, $do_comments, $do_mime, false, $aliases ); break; case 'stand_in': /* export a stand-in definition to resolve view dependencies * Yet to develop this function * $pdf->getTableDefStandIn($db, $table, $crlf); */ } // end switch return true; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the PhpMyAdmin\Plugins\Export\Helpers\Pdf instance * * @return Pdf */ private function _getPdf() { return $this->_pdf; } /** * Instantiates the PhpMyAdmin\Plugins\Export\Helpers\Pdf class * * @param Pdf $pdf The instance * * @return void */ private function _setPdf($pdf) { $this->_pdf = $pdf; } /** * Gets the PDF report title * * @return string */ private function _getPdfReportTitle() { return $this->_pdfReportTitle; } /** * Sets the PDF report title * * @param string $pdfReportTitle PDF report title * * @return void */ private function _setPdfReportTitle($pdfReportTitle) { $this->_pdfReportTitle = $pdfReportTitle; } } db/login/libraries/classes/Plugins/Export/ExportMediawiki.php000064400000030111151502156010020362 0ustar00setProperties(); } /** * Sets the export MediaWiki properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('MediaWiki Table'); $exportPluginProperties->setExtension('mediawiki'); $exportPluginProperties->setMimeType('text/plain'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup( "general_opts", __('Dump table') ); // what to dump (structure/data/both) $subgroup = new OptionsPropertySubgroup( "dump_table", __("Dump table") ); $leaf = new RadioPropertyItem('structure_or_data'); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $subgroup->setSubgroupHeader($leaf); $generalOptions->addProperty($subgroup); // export table name $leaf = new BoolPropertyItem( "caption", __('Export table names') ); $generalOptions->addProperty($leaf); // export table headers $leaf = new BoolPropertyItem( "headers", __('Export table headers') ); $generalOptions->addProperty($leaf); //add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Alias of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table','triggers','create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; this is * deprecated but the parameter is left here * because export.php calls exportStructure() * also for other export types which use this * parameter * @param bool $do_mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $output = ''; switch ($export_mode) { case 'create_table': $columns = $GLOBALS['dbi']->getColumns($db, $table); $columns = array_values($columns); $row_cnt = count($columns); // Print structure comment $output = $this->_exportComment( "Table structure for " . Util::backquote($table_alias) ); // Begin the table construction $output .= "{| class=\"wikitable\" style=\"text-align:center;\"" . $this->_exportCRLF(); // Add the table name if (isset($GLOBALS['mediawiki_caption'])) { $output .= "|+'''" . $table_alias . "'''" . $this->_exportCRLF(); } // Add the table headers if (isset($GLOBALS['mediawiki_headers'])) { $output .= "|- style=\"background:#ffdead;\"" . $this->_exportCRLF(); $output .= "! style=\"background:#ffffff\" | " . $this->_exportCRLF(); for ($i = 0; $i < $row_cnt; ++$i) { $col_as = $columns[$i]['Field']; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as]) ) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $output .= " | " . $col_as . $this->_exportCRLF(); } } // Add the table structure $output .= "|-" . $this->_exportCRLF(); $output .= "! Type" . $this->_exportCRLF(); for ($i = 0; $i < $row_cnt; ++$i) { $output .= " | " . $columns[$i]['Type'] . $this->_exportCRLF(); } $output .= "|-" . $this->_exportCRLF(); $output .= "! Null" . $this->_exportCRLF(); for ($i = 0; $i < $row_cnt; ++$i) { $output .= " | " . $columns[$i]['Null'] . $this->_exportCRLF(); } $output .= "|-" . $this->_exportCRLF(); $output .= "! Default" . $this->_exportCRLF(); for ($i = 0; $i < $row_cnt; ++$i) { $output .= " | " . $columns[$i]['Default'] . $this->_exportCRLF(); } $output .= "|-" . $this->_exportCRLF(); $output .= "! Extra" . $this->_exportCRLF(); for ($i = 0; $i < $row_cnt; ++$i) { $output .= " | " . $columns[$i]['Extra'] . $this->_exportCRLF(); } $output .= "|}" . str_repeat($this->_exportCRLF(), 2); break; } // end switch return Export::outputHandler($output); } /** * Outputs the content of a table in MediaWiki format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); // Print data comment $output = $this->_exportComment( "Table data for " . Util::backquote($table_alias) ); // Begin the table construction // Use the "wikitable" class for style // Use the "sortable" class for allowing tables to be sorted by column $output .= "{| class=\"wikitable sortable\" style=\"text-align:center;\"" . $this->_exportCRLF(); // Add the table name if (isset($GLOBALS['mediawiki_caption'])) { $output .= "|+'''" . $table_alias . "'''" . $this->_exportCRLF(); } // Add the table headers if (isset($GLOBALS['mediawiki_headers'])) { // Get column names $column_names = $GLOBALS['dbi']->getColumnNames($db, $table); // Add column names as table headers if (!is_null($column_names)) { // Use '|-' for separating rows $output .= "|-" . $this->_exportCRLF(); // Use '!' for separating table headers foreach ($column_names as $column) { if (!empty($aliases[$db]['tables'][$table]['columns'][$column]) ) { $column = $aliases[$db]['tables'][$table]['columns'][$column]; } $output .= " ! " . $column . "" . $this->_exportCRLF(); } } } // Get the table data from the database $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $fields_cnt = $GLOBALS['dbi']->numFields($result); while ($row = $GLOBALS['dbi']->fetchRow($result)) { $output .= "|-" . $this->_exportCRLF(); // Use '|' for separating table columns for ($i = 0; $i < $fields_cnt; ++$i) { $output .= " | " . $row[$i] . "" . $this->_exportCRLF(); } } // End table construction $output .= "|}" . str_repeat($this->_exportCRLF(), 2); return Export::outputHandler($output); } /** * Outputs comments containing info about the exported tables * * @param string $text Text of comment * * @return string The formatted comment */ private function _exportComment($text = '') { // see https://www.mediawiki.org/wiki/Help:Formatting $comment = $this->_exportCRLF(); $comment .= '' . str_repeat($this->_exportCRLF(), 2); return $comment; } /** * Outputs CRLF * * @return string CRLF */ private function _exportCRLF() { // The CRLF expected by the mediawiki format is "\n" return "\n"; } } db/login/libraries/classes/Plugins/Export/ExportExcel.php000064400000005730151502156010017530 0ustar00setText('CSV for MS Excel'); $exportPluginProperties->setExtension('csv'); $exportPluginProperties->setMimeType('text/comma-separated-values'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new TextPropertyItem( 'null', __('Replace NULL with:') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'removeCRLF', __('Remove carriage return/line feed characters within columns') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'columns', __('Put columns names in the first row') ); $generalOptions->addProperty($leaf); $leaf = new SelectPropertyItem( 'edition', __('Excel edition:') ); $leaf->setValues( array( 'win' => 'Windows', 'mac_excel2003' => 'Excel 2003 / Macintosh', 'mac_excel2008' => 'Excel 2008 / Macintosh', ) ); $generalOptions->addProperty($leaf); $leaf = new HiddenPropertyItem( 'structure_or_data' ); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } } db/login/libraries/classes/Plugins/Export/ExportOds.php000064400000030550151502156010017213 0ustar00setProperties(); } /** * Sets the export ODS properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('OpenDocument Spreadsheet'); $exportPluginProperties->setExtension('ods'); $exportPluginProperties->setMimeType( 'application/vnd.oasis.opendocument.spreadsheet' ); $exportPluginProperties->setForceFile(true); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new TextPropertyItem( "null", __('Replace NULL with:') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "columns", __('Put columns names in the first row') ); $generalOptions->addProperty($leaf); $leaf = new HiddenPropertyItem("structure_or_data"); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { $GLOBALS['ods_buffer'] .= '' . '' . '' . '' . '' . '/' . '' . '/' . '' . '' . '' . '' . ':' . '' . ':' . '' . ' ' . '' . '' . '' . '' . '/' . '' . '/' . '' . ' ' . '' . ':' . '' . ' ' . '' . '' . '' . '' . '' . '' . '' . ''; return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { $GLOBALS['ods_buffer'] .= '' . '' . ''; return Export::outputHandler( OpenDocument::create( 'application/vnd.oasis.opendocument.spreadsheet', $GLOBALS['ods_buffer'] ) ); } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in NHibernate format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { global $what; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); // Gets the data from the database $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $fields_cnt = $GLOBALS['dbi']->numFields($result); $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); $field_flags = array(); for ($j = 0; $j < $fields_cnt; $j++) { $field_flags[$j] = $GLOBALS['dbi']->fieldFlags($result, $j); } $GLOBALS['ods_buffer'] .= ''; // If required, get fields name at the first line if (isset($GLOBALS[$what . '_columns'])) { $GLOBALS['ods_buffer'] .= ''; for ($i = 0; $i < $fields_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars( stripslashes($col_as) ) . '' . ''; } // end for $GLOBALS['ods_buffer'] .= ''; } // end if // Format the data while ($row = $GLOBALS['dbi']->fetchRow($result)) { $GLOBALS['ods_buffer'] .= ''; for ($j = 0; $j < $fields_cnt; $j++) { if ($fields_meta[$j]->type === 'geometry') { // export GIS types as hex $row[$j] = '0x' . bin2hex($row[$j]); } if (!isset($row[$j]) || is_null($row[$j])) { $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars($GLOBALS[$what . '_null']) . '' . ''; } elseif (stristr($field_flags[$j], 'BINARY') && $fields_meta[$j]->blob ) { // ignore BLOB $GLOBALS['ods_buffer'] .= '' . '' . ''; } elseif ($fields_meta[$j]->type == "date") { $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } elseif ($fields_meta[$j]->type == "time") { $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } elseif ($fields_meta[$j]->type == "datetime") { $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } elseif (($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && !$fields_meta[$j]->blob) || $fields_meta[$j]->type == 'real' ) { $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } else { $GLOBALS['ods_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } } // end for $GLOBALS['ods_buffer'] .= ''; } // end while $GLOBALS['dbi']->freeResult($result); $GLOBALS['ods_buffer'] .= ''; return true; } } db/login/libraries/classes/Plugins/Export/ExportCsv.php000064400000025525151502156010017227 0ustar00setProperties(); } /** * Sets the export CSV properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('CSV'); $exportPluginProperties->setExtension('csv'); $exportPluginProperties->setMimeType('text/comma-separated-values'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create leaf items and add them to the group $leaf = new TextPropertyItem( "separator", __('Columns separated with:') ); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "enclosed", __('Columns enclosed with:') ); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "escaped", __('Columns escaped with:') ); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "terminated", __('Lines terminated with:') ); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( 'null', __('Replace NULL with:') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'removeCRLF', __('Remove carriage return/line feed characters within columns') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'columns', __('Put columns names in the first row') ); $generalOptions->addProperty($leaf); $leaf = new HiddenPropertyItem( 'structure_or_data' ); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { global $what, $csv_terminated, $csv_separator, $csv_enclosed, $csv_escaped; // Here we just prepare some values for export if ($what == 'excel') { $csv_terminated = "\015\012"; switch ($GLOBALS['excel_edition']) { case 'win': // as tested on Windows with Excel 2002 and Excel 2007 $csv_separator = ';'; break; case 'mac_excel2003': $csv_separator = ';'; break; case 'mac_excel2008': $csv_separator = ','; break; } $csv_enclosed = '"'; $csv_escaped = '"'; if (isset($GLOBALS['excel_columns'])) { $GLOBALS['csv_columns'] = 'yes'; } } else { if (empty($csv_terminated) || mb_strtolower($csv_terminated) == 'auto' ) { $csv_terminated = $GLOBALS['crlf']; } else { $csv_terminated = str_replace('\\r', "\015", $csv_terminated); $csv_terminated = str_replace('\\n', "\012", $csv_terminated); $csv_terminated = str_replace('\\t', "\011", $csv_terminated); } // end if $csv_separator = str_replace('\\t', "\011", $csv_separator); } return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Alias of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in CSV format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { global $what, $csv_terminated, $csv_separator, $csv_enclosed, $csv_escaped; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); // Gets the data from the database $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $fields_cnt = $GLOBALS['dbi']->numFields($result); // If required, get fields name at the first line if (isset($GLOBALS['csv_columns'])) { $schema_insert = ''; for ($i = 0; $i < $fields_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $col_as = stripslashes($col_as); if ($csv_enclosed == '') { $schema_insert .= $col_as; } else { $schema_insert .= $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, $col_as ) . $csv_enclosed; } $schema_insert .= $csv_separator; } // end for $schema_insert = trim(mb_substr($schema_insert, 0, -1)); if (!Export::outputHandler($schema_insert . $csv_terminated)) { return false; } } // end if // Format the data while ($row = $GLOBALS['dbi']->fetchRow($result)) { $schema_insert = ''; for ($j = 0; $j < $fields_cnt; $j++) { if (!isset($row[$j]) || is_null($row[$j])) { $schema_insert .= $GLOBALS[$what . '_null']; } elseif ($row[$j] == '0' || $row[$j] != '') { // always enclose fields if ($what == 'excel') { $row[$j] = preg_replace("/\015(\012)?/", "\012", $row[$j]); } // remove CRLF characters within field if (isset($GLOBALS[$what . '_removeCRLF']) && $GLOBALS[$what . '_removeCRLF'] ) { $row[$j] = str_replace( "\n", "", str_replace( "\r", "", $row[$j] ) ); } if ($csv_enclosed == '') { $schema_insert .= $row[$j]; } else { // also double the escape string if found in the data if ($csv_escaped != $csv_enclosed) { $schema_insert .= $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, str_replace( $csv_escaped, $csv_escaped . $csv_escaped, $row[$j] ) ) . $csv_enclosed; } else { // avoid a problem when escape string equals enclose $schema_insert .= $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j] ) . $csv_enclosed; } } } else { $schema_insert .= ''; } if ($j < $fields_cnt - 1) { $schema_insert .= $csv_separator; } } // end for if (!Export::outputHandler($schema_insert . $csv_terminated)) { return false; } } // end while $GLOBALS['dbi']->freeResult($result); return true; } } db/login/libraries/classes/Plugins/Export/ExportOdt.php000064400000072364151502156010017225 0ustar00setProperties(); } /** * Sets the export ODT properties * * @return void */ protected function setProperties() { global $plugin_param; $hide_structure = false; if ($plugin_param['export_type'] == 'table' && !$plugin_param['single_table'] ) { $hide_structure = true; } $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('OpenDocument Text'); $exportPluginProperties->setExtension('odt'); $exportPluginProperties->setMimeType( 'application/vnd.oasis.opendocument.text' ); $exportPluginProperties->setForceFile(true); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // what to dump (structure/data/both) main group $dumpWhat = new OptionsPropertyMainGroup( "general_opts", __('Dump table') ); // create primary items and add them to the group $leaf = new RadioPropertyItem("structure_or_data"); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $dumpWhat->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dumpWhat); // structure options main group if (!$hide_structure) { $structureOptions = new OptionsPropertyMainGroup( "structure", __('Object creation options') ); $structureOptions->setForce('data'); // create primary items and add them to the group if (!empty($GLOBALS['cfgRelation']['relation'])) { $leaf = new BoolPropertyItem( "relation", __('Display foreign key relationships') ); $structureOptions->addProperty($leaf); } $leaf = new BoolPropertyItem( "comments", __('Display comments') ); $structureOptions->addProperty($leaf); if (!empty($GLOBALS['cfgRelation']['mimework'])) { $leaf = new BoolPropertyItem( "mime", __('Display MIME types') ); $structureOptions->addProperty($leaf); } // add the main group to the root group $exportSpecificOptions->addProperty($structureOptions); } // data options main group $dataOptions = new OptionsPropertyMainGroup( "data", __('Data dump options') ); $dataOptions->setForce('structure'); // create primary items and add them to the group $leaf = new BoolPropertyItem( "columns", __('Put columns names in the first row') ); $dataOptions->addProperty($leaf); $leaf = new TextPropertyItem( 'null', __('Replace NULL with:') ); $dataOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dataOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { $GLOBALS['odt_buffer'] .= '' . '' . '' . ''; return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { $GLOBALS['odt_buffer'] .= '' . '' . ''; if (!Export::outputHandler( OpenDocument::create( 'application/vnd.oasis.opendocument.text', $GLOBALS['odt_buffer'] ) ) ) { return false; } return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { if (empty($db_alias)) { $db_alias = $db; } $GLOBALS['odt_buffer'] .= '' . __('Database') . ' ' . htmlspecialchars($db_alias) . ''; return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in NHibernate format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { global $what; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); // Gets the data from the database $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $fields_cnt = $GLOBALS['dbi']->numFields($result); $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); $field_flags = array(); for ($j = 0; $j < $fields_cnt; $j++) { $field_flags[$j] = $GLOBALS['dbi']->fieldFlags($result, $j); } $GLOBALS['odt_buffer'] .= '' . __('Dumping data for table') . ' ' . htmlspecialchars($table_alias) . '' . '' . ''; // If required, get fields name at the first line if (isset($GLOBALS[$what . '_columns'])) { $GLOBALS['odt_buffer'] .= ''; for ($i = 0; $i < $fields_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars( stripslashes($col_as) ) . '' . ''; } // end for $GLOBALS['odt_buffer'] .= ''; } // end if // Format the data while ($row = $GLOBALS['dbi']->fetchRow($result)) { $GLOBALS['odt_buffer'] .= ''; for ($j = 0; $j < $fields_cnt; $j++) { if ($fields_meta[$j]->type === 'geometry') { // export GIS types as hex $row[$j] = '0x' . bin2hex($row[$j]); } if (!isset($row[$j]) || is_null($row[$j])) { $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($GLOBALS[$what . '_null']) . '' . ''; } elseif (stristr($field_flags[$j], 'BINARY') && $fields_meta[$j]->blob ) { // ignore BLOB $GLOBALS['odt_buffer'] .= '' . '' . ''; } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && !$fields_meta[$j]->blob ) { $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } else { $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($row[$j]) . '' . ''; } } // end for $GLOBALS['odt_buffer'] .= ''; } // end while $GLOBALS['dbi']->freeResult($result); $GLOBALS['odt_buffer'] .= ''; return true; } /** * Returns a stand-in CREATE definition to resolve view dependencies * * @param string $db the database name * @param string $view the view name * @param string $crlf the end of line sequence * @param array $aliases Aliases of db/table/columns * * @return string resulting definition */ public function getTableDefStandIn($db, $view, $crlf, $aliases = array()) { $db_alias = $db; $view_alias = $view; $this->initAlias($aliases, $db_alias, $view_alias); /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); /** * Displays the table structure */ $GLOBALS['odt_buffer'] .= ''; $columns_cnt = 4; $GLOBALS['odt_buffer'] .= ''; /* Header */ $GLOBALS['odt_buffer'] .= '' . '' . '' . __('Column') . '' . '' . '' . '' . __('Type') . '' . '' . '' . '' . __('Null') . '' . '' . '' . '' . __('Default') . '' . '' . ''; $columns = $GLOBALS['dbi']->getColumns($db, $view); foreach ($columns as $column) { $col_as = isset($column['Field']) ? $column['Field'] : null; if (!empty($aliases[$db]['tables'][$view]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$view]['columns'][$col_as]; } $GLOBALS['odt_buffer'] .= $this->formatOneColumnDefinition( $column, $col_as ); $GLOBALS['odt_buffer'] .= ''; } // end foreach $GLOBALS['odt_buffer'] .= ''; return true; } /** * Returns $table's CREATE definition * * @param string $db the database name * @param string $table the table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * PMA_exportStructure() also for other * @param bool $do_mime whether to include mime comments * @param bool $show_dates whether to include creation/update/check dates * @param bool $add_semicolon whether to add semicolon and end-of-line at * the end * @param bool $view whether we're handling a view * @param array $aliases Aliases of db/table/columns * * @return bool true */ public function getTableDef( $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, $show_dates = false, $add_semicolon = true, $view = false, array $aliases = array() ) { global $cfgRelation; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); // Check if we can use Relations list($res_rel, $have_rel) = $this->relation->getRelationsAndStatus( $do_relation && !empty($cfgRelation['relation']), $db, $table ); /** * Displays the table structure */ $GLOBALS['odt_buffer'] .= ''; $columns_cnt = 4; if ($do_relation && $have_rel) { $columns_cnt++; } if ($do_comments) { $columns_cnt++; } if ($do_mime && $cfgRelation['mimework']) { $columns_cnt++; } $GLOBALS['odt_buffer'] .= ''; /* Header */ $GLOBALS['odt_buffer'] .= '' . '' . '' . __('Column') . '' . '' . '' . '' . __('Type') . '' . '' . '' . '' . __('Null') . '' . '' . '' . '' . __('Default') . '' . ''; if ($do_relation && $have_rel) { $GLOBALS['odt_buffer'] .= '' . '' . __('Links to') . '' . ''; } if ($do_comments) { $GLOBALS['odt_buffer'] .= '' . '' . __('Comments') . '' . ''; $comments = $this->relation->getComments($db, $table); } if ($do_mime && $cfgRelation['mimework']) { $GLOBALS['odt_buffer'] .= '' . '' . __('MIME type') . '' . ''; $mime_map = Transformations::getMIME($db, $table, true); } $GLOBALS['odt_buffer'] .= ''; $columns = $GLOBALS['dbi']->getColumns($db, $table); foreach ($columns as $column) { $col_as = $field_name = $column['Field']; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $GLOBALS['odt_buffer'] .= $this->formatOneColumnDefinition( $column, $col_as ); if ($do_relation && $have_rel) { $foreigner = $this->relation->searchColumnInForeigners($res_rel, $field_name); if ($foreigner) { $rtable = $foreigner['foreign_table']; $rfield = $foreigner['foreign_field']; if (!empty($aliases[$db]['tables'][$rtable]['columns'][$rfield]) ) { $rfield = $aliases[$db]['tables'][$rtable]['columns'][$rfield]; } if (!empty($aliases[$db]['tables'][$rtable]['alias'])) { $rtable = $aliases[$db]['tables'][$rtable]['alias']; } $relation = htmlspecialchars($rtable . ' (' . $rfield . ')'); $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($relation) . '' . ''; } } if ($do_comments) { if (isset($comments[$field_name])) { $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($comments[$field_name]) . '' . ''; } else { $GLOBALS['odt_buffer'] .= '' . '' . ''; } } if ($do_mime && $cfgRelation['mimework']) { if (isset($mime_map[$field_name])) { $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars( str_replace('_', '/', $mime_map[$field_name]['mimetype']) ) . '' . ''; } else { $GLOBALS['odt_buffer'] .= '' . '' . ''; } } $GLOBALS['odt_buffer'] .= ''; } // end foreach $GLOBALS['odt_buffer'] .= ''; return true; } // end of the '$this->getTableDef()' function /** * Outputs triggers * * @param string $db database name * @param string $table table name * @param array $aliases Aliases of db/table/columns * * @return bool true */ protected function getTriggers($db, $table, array $aliases = array()) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $GLOBALS['odt_buffer'] .= '' . '' . '' . '' . '' . __('Name') . '' . '' . '' . '' . __('Time') . '' . '' . '' . '' . __('Event') . '' . '' . '' . '' . __('Definition') . '' . '' . ''; $triggers = $GLOBALS['dbi']->getTriggers($db, $table); foreach ($triggers as $trigger) { $GLOBALS['odt_buffer'] .= ''; $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($trigger['name']) . '' . ''; $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($trigger['action_timing']) . '' . ''; $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($trigger['event_manipulation']) . '' . ''; $GLOBALS['odt_buffer'] .= '' . '' . htmlspecialchars($trigger['definition']) . '' . ''; $GLOBALS['odt_buffer'] .= ''; } $GLOBALS['odt_buffer'] .= ''; return true; } /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table', 'triggers', 'create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * PMA_exportStructure() also for other * @param bool $do_mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); switch ($export_mode) { case 'create_table': $GLOBALS['odt_buffer'] .= '' . __('Table structure for table') . ' ' . htmlspecialchars($table_alias) . ''; $this->getTableDef( $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, $dates, true, false, $aliases ); break; case 'triggers': $triggers = $GLOBALS['dbi']->getTriggers($db, $table, $aliases); if ($triggers) { $GLOBALS['odt_buffer'] .= '' . __('Triggers') . ' ' . htmlspecialchars($table_alias) . ''; $this->getTriggers($db, $table); } break; case 'create_view': $GLOBALS['odt_buffer'] .= '' . __('Structure for view') . ' ' . htmlspecialchars($table_alias) . ''; $this->getTableDef( $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, $dates, true, true, $aliases ); break; case 'stand_in': $GLOBALS['odt_buffer'] .= '' . __('Stand-in structure for view') . ' ' . htmlspecialchars($table_alias) . ''; // export a stand-in definition to resolve view dependencies $this->getTableDefStandIn($db, $table, $crlf, $aliases); } // end switch return true; } // end of the '$this->exportStructure' function /** * Formats the definition for one column * * @param array $column info about this column * @param string $col_as column alias * * @return string Formatted column definition */ protected function formatOneColumnDefinition($column, $col_as = '') { if (empty($col_as)) { $col_as = $column['Field']; } $definition = ''; $definition .= '' . '' . htmlspecialchars($col_as) . '' . ''; $extracted_columnspec = Util::extractColumnSpec($column['Type']); $type = htmlspecialchars($extracted_columnspec['print_type']); if (empty($type)) { $type = ' '; } $definition .= '' . '' . htmlspecialchars($type) . '' . ''; if (!isset($column['Default'])) { if ($column['Null'] != 'NO') { $column['Default'] = 'NULL'; } else { $column['Default'] = ''; } } $definition .= '' . '' . (($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')) . '' . ''; $definition .= '' . '' . htmlspecialchars($column['Default']) . '' . ''; return $definition; } } db/login/libraries/classes/Plugins/Export/ExportTexytext.php000064400000046506151502156010020334 0ustar00setProperties(); } /** * Sets the export Texy! text properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('Texy! text'); $exportPluginProperties->setExtension('txt'); $exportPluginProperties->setMimeType('text/plain'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // what to dump (structure/data/both) main group $dumpWhat = new OptionsPropertyMainGroup( "general_opts", __('Dump table') ); // create primary items and add them to the group $leaf = new RadioPropertyItem("structure_or_data"); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $dumpWhat->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dumpWhat); // data options main group $dataOptions = new OptionsPropertyMainGroup( "data", __('Data dump options') ); $dataOptions->setForce('structure'); // create primary items and add them to the group $leaf = new BoolPropertyItem( "columns", __('Put columns names in the first row') ); $dataOptions->addProperty($leaf); $leaf = new TextPropertyItem( 'null', __('Replace NULL with:') ); $dataOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dataOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Alias of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { if (empty($db_alias)) { $db_alias = $db; } return Export::outputHandler( '===' . __('Database') . ' ' . $db_alias . "\n\n" ); } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in NHibernate format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { global $what; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); if (!Export::outputHandler( '== ' . __('Dumping data for table') . ' ' . $table_alias . "\n\n" ) ) { return false; } // Gets the data from the database $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $fields_cnt = $GLOBALS['dbi']->numFields($result); // If required, get fields name at the first line if (isset($GLOBALS[$what . '_columns'])) { $text_output = "|------\n"; for ($i = 0; $i < $fields_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $text_output .= '|' . htmlspecialchars(stripslashes($col_as)); } // end for $text_output .= "\n|------\n"; if (!Export::outputHandler($text_output)) { return false; } } // end if // Format the data while ($row = $GLOBALS['dbi']->fetchRow($result)) { $text_output = ''; for ($j = 0; $j < $fields_cnt; $j++) { if (!isset($row[$j]) || is_null($row[$j])) { $value = $GLOBALS[$what . '_null']; } elseif ($row[$j] == '0' || $row[$j] != '') { $value = $row[$j]; } else { $value = ' '; } $text_output .= '|' . str_replace( '|', '|', htmlspecialchars($value) ); } // end for $text_output .= "\n"; if (!Export::outputHandler($text_output)) { return false; } } // end while $GLOBALS['dbi']->freeResult($result); return true; } /** * Returns a stand-in CREATE definition to resolve view dependencies * * @param string $db the database name * @param string $view the view name * @param string $crlf the end of line sequence * @param array $aliases Aliases of db/table/columns * * @return string resulting definition */ public function getTableDefStandIn($db, $view, $crlf, $aliases = array()) { $text_output = ''; /** * Get the unique keys in the table */ $unique_keys = array(); $keys = $GLOBALS['dbi']->getTableIndexes($db, $view); foreach ($keys as $key) { if ($key['Non_unique'] == 0) { $unique_keys[] = $key['Column_name']; } } /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); /** * Displays the table structure */ $text_output .= "|------\n" . '|' . __('Column') . '|' . __('Type') . '|' . __('Null') . '|' . __('Default') . "\n|------\n"; $columns = $GLOBALS['dbi']->getColumns($db, $view); foreach ($columns as $column) { $col_as = isset($column['Field']) ? $column['Field'] : null; if (!empty($aliases[$db]['tables'][$view]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$view]['columns'][$col_as]; } $text_output .= $this->formatOneColumnDefinition( $column, $unique_keys, $col_as ); $text_output .= "\n"; } // end foreach return $text_output; } /** * Returns $table's CREATE definition * * @param string $db the database name * @param string $table the table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * $this->exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * @param bool $show_dates whether to include creation/update/check dates * @param bool $add_semicolon whether to add semicolon and end-of-line * at the end * @param bool $view whether we're handling a view * @param array $aliases Aliases of db/table/columns * * @return string resulting schema */ public function getTableDef( $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, $show_dates = false, $add_semicolon = true, $view = false, array $aliases = array() ) { global $cfgRelation; $text_output = ''; /** * Get the unique keys in the table */ $unique_keys = array(); $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); foreach ($keys as $key) { if ($key['Non_unique'] == 0) { $unique_keys[] = $key['Column_name']; } } /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); // Check if we can use Relations list($res_rel, $have_rel) = $this->relation->getRelationsAndStatus( $do_relation && !empty($cfgRelation['relation']), $db, $table ); /** * Displays the table structure */ $text_output .= "|------\n"; $text_output .= '|' . __('Column'); $text_output .= '|' . __('Type'); $text_output .= '|' . __('Null'); $text_output .= '|' . __('Default'); if ($do_relation && $have_rel) { $text_output .= '|' . __('Links to'); } if ($do_comments) { $text_output .= '|' . __('Comments'); $comments = $this->relation->getComments($db, $table); } if ($do_mime && $cfgRelation['mimework']) { $text_output .= '|' . htmlspecialchars('MIME'); $mime_map = Transformations::getMIME($db, $table, true); } $text_output .= "\n|------\n"; $columns = $GLOBALS['dbi']->getColumns($db, $table); foreach ($columns as $column) { $col_as = $column['Field']; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $text_output .= $this->formatOneColumnDefinition( $column, $unique_keys, $col_as ); $field_name = $column['Field']; if ($do_relation && $have_rel) { $text_output .= '|' . htmlspecialchars( $this->getRelationString( $res_rel, $field_name, $db, $aliases ) ); } if ($do_comments && $cfgRelation['commwork']) { $text_output .= '|' . (isset($comments[$field_name]) ? htmlspecialchars($comments[$field_name]) : ''); } if ($do_mime && $cfgRelation['mimework']) { $text_output .= '|' . (isset($mime_map[$field_name]) ? htmlspecialchars( str_replace('_', '/', $mime_map[$field_name]['mimetype']) ) : ''); } $text_output .= "\n"; } // end foreach return $text_output; } // end of the '$this->getTableDef()' function /** * Outputs triggers * * @param string $db database name * @param string $table table name * * @return string Formatted triggers list */ public function getTriggers($db, $table) { $dump = "|------\n"; $dump .= '|' . __('Name'); $dump .= '|' . __('Time'); $dump .= '|' . __('Event'); $dump .= '|' . __('Definition'); $dump .= "\n|------\n"; $triggers = $GLOBALS['dbi']->getTriggers($db, $table); foreach ($triggers as $trigger) { $dump .= '|' . $trigger['name']; $dump .= '|' . $trigger['action_timing']; $dump .= '|' . $trigger['event_manipulation']; $dump .= '|' . str_replace( '|', '|', htmlspecialchars($trigger['definition']) ); $dump .= "\n"; } return $dump; } /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table', 'triggers', 'create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * $this->exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $dump = ''; switch ($export_mode) { case 'create_table': $dump .= '== ' . __('Table structure for table') . ' ' . $table_alias . "\n\n"; $dump .= $this->getTableDef( $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, $dates, true, false, $aliases ); break; case 'triggers': $dump = ''; $triggers = $GLOBALS['dbi']->getTriggers($db, $table); if ($triggers) { $dump .= '== ' . __('Triggers') . ' ' . $table_alias . "\n\n"; $dump .= $this->getTriggers($db, $table); } break; case 'create_view': $dump .= '== ' . __('Structure for view') . ' ' . $table_alias . "\n\n"; $dump .= $this->getTableDef( $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, $dates, true, true, $aliases ); break; case 'stand_in': $dump .= '== ' . __('Stand-in structure for view') . ' ' . $table . "\n\n"; // export a stand-in definition to resolve view dependencies $dump .= $this->getTableDefStandIn($db, $table, $crlf, $aliases); } // end switch return Export::outputHandler($dump); } /** * Formats the definition for one column * * @param array $column info about this column * @param array $unique_keys unique keys for this table * @param string $col_alias Column Alias * * @return string Formatted column definition */ public function formatOneColumnDefinition( $column, $unique_keys, $col_alias = '' ) { if (empty($col_alias)) { $col_alias = $column['Field']; } $extracted_columnspec = Util::extractColumnSpec($column['Type']); $type = $extracted_columnspec['print_type']; if (empty($type)) { $type = ' '; } if (!isset($column['Default'])) { if ($column['Null'] != 'NO') { $column['Default'] = 'NULL'; } } $fmt_pre = ''; $fmt_post = ''; if (in_array($column['Field'], $unique_keys)) { $fmt_pre = '**' . $fmt_pre; $fmt_post = $fmt_post . '**'; } if ($column['Key'] == 'PRI') { $fmt_pre = '//' . $fmt_pre; $fmt_post = $fmt_post . '//'; } $definition = '|' . $fmt_pre . htmlspecialchars($col_alias) . $fmt_post; $definition .= '|' . htmlspecialchars($type); $definition .= '|' . (($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')); $definition .= '|' . htmlspecialchars( isset($column['Default']) ? $column['Default'] : '' ); return $definition; } } db/login/libraries/classes/Plugins/Export/ExportCodegen.php000064400000032603151502156010020033 0ustar00initSpecificVariables(); $this->setProperties(); } /** * Initialize the local variables that are used for export CodeGen * * @return void */ protected function initSpecificVariables() { $this->_setCgFormats( array( "NHibernate C# DO", "NHibernate XML", ) ); $this->_setCgHandlers( array( "_handleNHibernateCSBody", "_handleNHibernateXMLBody", ) ); } /** * Sets the export CodeGen properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('CodeGen'); $exportPluginProperties->setExtension('cs'); $exportPluginProperties->setMimeType('text/cs'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new HiddenPropertyItem("structure_or_data"); $generalOptions->addProperty($leaf); $leaf = new SelectPropertyItem( "format", __('Format:') ); $leaf->setValues($this->_getCgFormats()); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in NHibernate format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $CG_FORMATS = $this->_getCgFormats(); $CG_HANDLERS = $this->_getCgHandlers(); $format = $GLOBALS['codegen_format']; if (isset($CG_FORMATS[$format])) { $method = $CG_HANDLERS[$format]; return Export::outputHandler( $this->$method($db, $table, $crlf, $aliases) ); } return Export::outputHandler(sprintf("%s is not supported.", $format)); } /** * Used to make identifiers (from table or database names) * * @param string $str name to be converted * @param bool $ucfirst whether to make the first character uppercase * * @return string identifier */ public static function cgMakeIdentifier($str, $ucfirst = true) { // remove unsafe characters $str = preg_replace('/[^\p{L}\p{Nl}_]/u', '', $str); // make sure first character is a letter or _ if (!preg_match('/^\pL/u', $str)) { $str = '_' . $str; } if ($ucfirst) { $str = ucfirst($str); } return $str; } /** * C# Handler * * @param string $db database name * @param string $table table name * @param string $crlf line separator * @param array $aliases Aliases of db/table/columns * * @return string containing C# code lines, separated by "\n" */ private function _handleNHibernateCSBody($db, $table, $crlf, array $aliases = array()) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $lines = array(); $result = $GLOBALS['dbi']->query( sprintf( 'DESC %s.%s', Util::backquote($db), Util::backquote($table) ) ); if ($result) { /** @var TableProperty[] $tableProperties */ $tableProperties = array(); while ($row = $GLOBALS['dbi']->fetchRow($result)) { $col_as = $this->getAlias($aliases, $row[0], 'col', $db, $table); if (!empty($col_as)) { $row[0] = $col_as; } $tableProperties[] = new TableProperty($row); } $GLOBALS['dbi']->freeResult($result); $lines[] = 'using System;'; $lines[] = 'using System.Collections;'; $lines[] = 'using System.Collections.Generic;'; $lines[] = 'using System.Text;'; $lines[] = 'namespace ' . ExportCodegen::cgMakeIdentifier($db_alias); $lines[] = '{'; $lines[] = ' #region ' . ExportCodegen::cgMakeIdentifier($table_alias); $lines[] = ' public class ' . ExportCodegen::cgMakeIdentifier($table_alias); $lines[] = ' {'; $lines[] = ' #region Member Variables'; foreach ($tableProperties as $tableProperty) { $lines[] = $tableProperty->formatCs( ' protected #dotNetPrimitiveType# _#name#;' ); } $lines[] = ' #endregion'; $lines[] = ' #region Constructors'; $lines[] = ' public ' . ExportCodegen::cgMakeIdentifier($table_alias) . '() { }'; $temp = array(); foreach ($tableProperties as $tableProperty) { if (!$tableProperty->isPK()) { $temp[] = $tableProperty->formatCs( '#dotNetPrimitiveType# #name#' ); } } $lines[] = ' public ' . ExportCodegen::cgMakeIdentifier($table_alias) . '(' . implode(', ', $temp) . ')'; $lines[] = ' {'; foreach ($tableProperties as $tableProperty) { if (!$tableProperty->isPK()) { $lines[] = $tableProperty->formatCs( ' this._#name#=#name#;' ); } } $lines[] = ' }'; $lines[] = ' #endregion'; $lines[] = ' #region Public Properties'; foreach ($tableProperties as $tableProperty) { $lines[] = $tableProperty->formatCs( ' public virtual #dotNetPrimitiveType# #ucfirstName#' . "\n" . ' {' . "\n" . ' get {return _#name#;}' . "\n" . ' set {_#name#=value;}' . "\n" . ' }' ); } $lines[] = ' #endregion'; $lines[] = ' }'; $lines[] = ' #endregion'; $lines[] = '}'; } return implode($crlf, $lines); } /** * XML Handler * * @param string $db database name * @param string $table table name * @param string $crlf line separator * @param array $aliases Aliases of db/table/columns * * @return string containing XML code lines, separated by "\n" */ private function _handleNHibernateXMLBody( $db, $table, $crlf, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $lines = array(); $lines[] = ''; $lines[] = ''; $lines[] = ' '; $result = $GLOBALS['dbi']->query( sprintf( "DESC %s.%s", Util::backquote($db), Util::backquote($table) ) ); if ($result) { while ($row = $GLOBALS['dbi']->fetchRow($result)) { $col_as = $this->getAlias($aliases, $row[0], 'col', $db, $table); if (!empty($col_as)) { $row[0] = $col_as; } $tableProperty = new TableProperty($row); if ($tableProperty->isPK()) { $lines[] = $tableProperty->formatXml( ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' ); } else { $lines[] = $tableProperty->formatXml( ' ' . "\n" . ' ' . "\n" . ' ' ); } } $GLOBALS['dbi']->freeResult($result); } $lines[] = ' '; $lines[] = ''; return implode($crlf, $lines); } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Getter for CodeGen formats * * @return array */ private function _getCgFormats() { return $this->_cgFormats; } /** * Setter for CodeGen formats * * @param array $CG_FORMATS contains CodeGen Formats * * @return void */ private function _setCgFormats(array $CG_FORMATS) { $this->_cgFormats = $CG_FORMATS; } /** * Getter for CodeGen handlers * * @return array */ private function _getCgHandlers() { return $this->_cgHandlers; } /** * Setter for CodeGen handlers * * @param array $CG_HANDLERS contains CodeGen handler methods * * @return void */ private function _setCgHandlers(array $CG_HANDLERS) { $this->_cgHandlers = $CG_HANDLERS; } } db/login/libraries/classes/Plugins/Export/README000064400000015172151502156010015436 0ustar00This directory holds export plugins for phpMyAdmin. Any new plugin should basically follow the structure presented here. Official plugins need to have str* messages with their definition in language files, but if you build some plugins for your use, you can directly use texts in plugin. setProperties(); } // optional - declare global variables and use getters later /** * Initialize the local variables that are used specific for export SQL * * @global type $global_variable_name * [..] * * @return void */ protected function initSpecificVariables() { global $global_variable_name; $this->_setGlobalVariableName($global_variable_name); } /** * Sets the export plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $exportPluginProperties = new PhpMyAdmin\Properties\Plugins\ExportPluginProperties(); $exportPluginProperties->setText('[name]'); // the name of your plug-in $exportPluginProperties->setExtension('[ext]'); // extension this plug-in can handle $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new PhpMyAdmin\Properties\Options\Groups\OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new PhpMyAdmin\Properties\Options\Groups\OptionsPropertyMainGroup( "general_opts" ); // optional : // create primary items and add them to the group // type - one of the classes listed in libraries/properties/options/items/ // name - form element name // text - description in GUI // size - size of text element // len - maximal size of input // values - possible values of the item $leaf = new PhpMyAdmin\Properties\Options\Items\RadioPropertyItem( "structure_or_data" ); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data') ) ); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader () { // implementation return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter () { // implementation return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader ($db, $db_alias = '') { // implementation return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter ($db) { // implementation return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $db_alias = '') { // implementation return true; } /** * Outputs the content of a table in [Name] format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, $aliases = array() ) { // implementation; return true; } // optional - implement other methods defined in PhpMyAdmin\Plugins\ExportPlugin.class.php: // - exportRoutines() // - exportStructure() // - getTableDefStandIn() // - getTriggers() // optional - implement other private methods in order to avoid // having huge methods or avoid duplicate code. Make use of them // as well as of the getters and setters declared both here // and in the PhpMyAdmin\Plugins\ExportPlugin class // optional: /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Getter description * * @return type */ private function _getMyOptionalVariable() { return $this->_myOptionalVariable; } /** * Setter description * * @param type $my_optional_variable description * * @return void */ private function _setMyOptionalVariable($my_optional_variable) { $this->_myOptionalVariable = $my_optional_variable; } /** * Getter description * * @return type */ private function _getGlobalVariableName() { return $this->_globalVariableName; } /** * Setter description * * @param type $global_variable_name description * * @return void */ private function _setGlobalVariableName($global_variable_name) { $this->_globalVariableName = $global_variable_name; } } ?> db/login/libraries/classes/Plugins/Export/ExportJson.php000064400000017521151502156010017402 0ustar00setProperties(); } /** * Encodes the data into JSON * * @param mixed $data Data to encode * * @return string */ public function encode($data) { $options = 0; if (isset($GLOBALS['json_pretty_print']) && $GLOBALS['json_pretty_print'] ) { $options |= JSON_PRETTY_PRINT; } if (isset($GLOBALS['json_unicode']) && $GLOBALS['json_unicode'] ) { $options |= JSON_UNESCAPED_UNICODE; } return json_encode($data, $options); } /** * Sets the export JSON properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('JSON'); $exportPluginProperties->setExtension('json'); $exportPluginProperties->setMimeType('text/plain'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new HiddenPropertyItem("structure_or_data"); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'pretty_print', __('Output pretty-printed JSON (Use human-readable formatting)') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'unicode', __('Output unicode characters unescaped') ); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { global $crlf; $meta = array( 'type' => 'header', 'version' => PMA_VERSION, 'comment' => 'Export to JSON plugin for PHPMyAdmin', ); return Export::outputHandler( '[' . $crlf . $this->encode($meta) . ',' . $crlf ); } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { global $crlf; return Export::outputHandler(']' . $crlf); } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { global $crlf; if (empty($db_alias)) { $db_alias = $db; } $meta = array( 'type' => 'database', 'name' => $db_alias ); return Export::outputHandler( $this->encode($meta) . ',' . $crlf ); } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in JSON format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); if (! $this->first) { if (!Export::outputHandler(',')) { return false; } } else { $this->first = false; } $buffer = $this->encode( array( 'type' => 'table', 'name' => $table_alias, 'database' => $db_alias, 'data' => "@@DATA@@" ) ); list($header, $footer) = explode('"@@DATA@@"', $buffer); if (!Export::outputHandler($header . $crlf . '[' . $crlf)) { return false; } $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $columns_cnt = $GLOBALS['dbi']->numFields($result); $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); $columns = array(); for ($i = 0; $i < $columns_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $columns[$i] = stripslashes($col_as); } $record_cnt = 0; while ($record = $GLOBALS['dbi']->fetchRow($result)) { $record_cnt++; // Output table name as comment if this is the first record of the table if ($record_cnt > 1) { if (!Export::outputHandler(',' . $crlf)) { return false; } } $data = array(); for ($i = 0; $i < $columns_cnt; $i++) { if ($fields_meta[$i]->type === 'geometry') { // export GIS types as hex $record[$i] = '0x' . bin2hex($record[$i]); } $data[$columns[$i]] = $record[$i]; } $encodedData = $this->encode($data); if (! $encodedData) { return false; } if (! Export::outputHandler($encodedData)) { return false; } } if (!Export::outputHandler($crlf . ']' . $crlf . $footer . $crlf)) { return false; } $GLOBALS['dbi']->freeResult($result); return true; } } db/login/libraries/classes/Plugins/Export/ExportSql.php000064400000312453151502156010017232 0ustar00setProperties(); // Avoids undefined variables, use NULL so isset() returns false if (!isset($GLOBALS['sql_backquotes'])) { $GLOBALS['sql_backquotes'] = null; } } /** * Sets the export SQL properties * * @return void */ protected function setProperties() { global $plugin_param; $hide_sql = false; $hide_structure = false; if ($plugin_param['export_type'] == 'table' && !$plugin_param['single_table'] ) { $hide_structure = true; $hide_sql = true; } if (!$hide_sql) { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('SQL'); $exportPluginProperties->setExtension('sql'); $exportPluginProperties->setMimeType('text/x-sql'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // comments $subgroup = new OptionsPropertySubgroup("include_comments"); $leaf = new BoolPropertyItem( 'include_comments', __( 'Display comments (includes info such as export' . ' timestamp, PHP version, and server version)' ) ); $subgroup->setSubgroupHeader($leaf); $leaf = new TextPropertyItem( 'header_comment', __('Additional custom header comment (\n splits lines):') ); $subgroup->addProperty($leaf); $leaf = new BoolPropertyItem( 'dates', __( 'Include a timestamp of when databases were created, last' . ' updated, and last checked' ) ); $subgroup->addProperty($leaf); if (!empty($GLOBALS['cfgRelation']['relation'])) { $leaf = new BoolPropertyItem( 'relation', __('Display foreign key relationships') ); $subgroup->addProperty($leaf); } if (!empty($GLOBALS['cfgRelation']['mimework'])) { $leaf = new BoolPropertyItem( 'mime', __('Display MIME types') ); $subgroup->addProperty($leaf); } $generalOptions->addProperty($subgroup); // enclose in a transaction $leaf = new BoolPropertyItem( "use_transaction", __('Enclose export in a transaction') ); $leaf->setDoc( array( 'programs', 'mysqldump', 'option_mysqldump_single-transaction', ) ); $generalOptions->addProperty($leaf); // disable foreign key checks $leaf = new BoolPropertyItem( "disable_fk", __('Disable foreign key checks') ); $leaf->setDoc( array( 'manual_MySQL_Database_Administration', 'server-system-variables', 'sysvar_foreign_key_checks', ) ); $generalOptions->addProperty($leaf); // export views as tables $leaf = new BoolPropertyItem( "views_as_tables", __('Export views as tables') ); $generalOptions->addProperty($leaf); // export metadata $leaf = new BoolPropertyItem( "metadata", __('Export metadata') ); $generalOptions->addProperty($leaf); // compatibility maximization $compats = $GLOBALS['dbi']->getCompatibilities(); if (count($compats) > 0) { $values = array(); foreach ($compats as $val) { $values[$val] = $val; } $leaf = new SelectPropertyItem( "compatibility", __( 'Database system or older MySQL server to maximize output' . ' compatibility with:' ) ); $leaf->setValues($values); $leaf->setDoc( array( 'manual_MySQL_Database_Administration', 'Server_SQL_mode', ) ); $generalOptions->addProperty($leaf); unset($values); } // what to dump (structure/data/both) $subgroup = new OptionsPropertySubgroup( "dump_table", __("Dump table") ); $leaf = new RadioPropertyItem('structure_or_data'); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $subgroup->setSubgroupHeader($leaf); $generalOptions->addProperty($subgroup); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // structure options main group if (!$hide_structure) { $structureOptions = new OptionsPropertyMainGroup( "structure", __('Object creation options') ); $structureOptions->setForce('data'); // begin SQL Statements $subgroup = new OptionsPropertySubgroup(); $leaf = new MessageOnlyPropertyItem( 'add_statements', __('Add statements:') ); $subgroup->setSubgroupHeader($leaf); // server export options if ($plugin_param['export_type'] == 'server') { $leaf = new BoolPropertyItem( "drop_database", sprintf(__('Add %s statement'), 'DROP DATABASE IF EXISTS') ); $subgroup->addProperty($leaf); } if ($plugin_param['export_type'] == 'database') { $create_clause = 'CREATE DATABASE / USE'; $leaf = new BoolPropertyItem( 'create_database', sprintf(__('Add %s statement'), $create_clause) ); $subgroup->addProperty($leaf); } if ($plugin_param['export_type'] == 'table') { $drop_clause = $GLOBALS['dbi']->getTable( $GLOBALS['db'], $GLOBALS['table'] )->isView() ? 'DROP VIEW' : 'DROP TABLE'; } else { $drop_clause = 'DROP TABLE / VIEW / PROCEDURE' . ' / FUNCTION / EVENT'; } $drop_clause .= ' / TRIGGER'; $leaf = new BoolPropertyItem( 'drop_table', sprintf(__('Add %s statement'), $drop_clause) ); $subgroup->addProperty($leaf); $subgroup_create_table = new OptionsPropertySubgroup(); // Add table structure option $leaf = new BoolPropertyItem( 'create_table', sprintf(__('Add %s statement'), 'CREATE TABLE') ); $subgroup_create_table->setSubgroupHeader($leaf); $leaf = new BoolPropertyItem( 'if_not_exists', 'IF NOT EXISTS ' . __( '(less efficient as indexes will be generated during table ' . 'creation)' ) ); $subgroup_create_table->addProperty($leaf); $leaf = new BoolPropertyItem( 'auto_increment', sprintf(__('%s value'), 'AUTO_INCREMENT') ); $subgroup_create_table->addProperty($leaf); $subgroup->addProperty($subgroup_create_table); // Add view option $leaf = new BoolPropertyItem( 'create_view', sprintf(__('Add %s statement'), 'CREATE VIEW') ); $subgroup->addProperty($leaf); $leaf = new BoolPropertyItem( 'procedure_function', sprintf( __('Add %s statement'), 'CREATE PROCEDURE / FUNCTION / EVENT' ) ); $subgroup->addProperty($leaf); // Add triggers option $leaf = new BoolPropertyItem( 'create_trigger', sprintf(__('Add %s statement'), 'CREATE TRIGGER') ); $subgroup->addProperty($leaf); $structureOptions->addProperty($subgroup); $leaf = new BoolPropertyItem( "backquotes", __( 'Enclose table and column names with backquotes ' . '(Protects column and table names formed with' . ' special characters or keywords)' ) ); $structureOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($structureOptions); } // begin Data options $dataOptions = new OptionsPropertyMainGroup( "data", __('Data creation options') ); $dataOptions->setForce('structure'); $leaf = new BoolPropertyItem( "truncate", __('Truncate table before insert') ); $dataOptions->addProperty($leaf); // begin SQL Statements $subgroup = new OptionsPropertySubgroup(); $leaf = new MessageOnlyPropertyItem( __('Instead of INSERT statements, use:') ); $subgroup->setSubgroupHeader($leaf); $leaf = new BoolPropertyItem( "delayed", __('INSERT DELAYED statements') ); $leaf->setDoc( array( 'manual_MySQL_Database_Administration', 'insert_delayed' ) ); $subgroup->addProperty($leaf); $leaf = new BoolPropertyItem( "ignore", __('INSERT IGNORE statements') ); $leaf->setDoc( array( 'manual_MySQL_Database_Administration', 'insert', ) ); $subgroup->addProperty($leaf); $dataOptions->addProperty($subgroup); // Function to use when dumping dat $leaf = new SelectPropertyItem( "type", __('Function to use when dumping data:') ); $leaf->setValues( array( 'INSERT' => 'INSERT', 'UPDATE' => 'UPDATE', 'REPLACE' => 'REPLACE', ) ); $dataOptions->addProperty($leaf); /* Syntax to use when inserting data */ $subgroup = new OptionsPropertySubgroup(); $leaf = new MessageOnlyPropertyItem( null, __('Syntax to use when inserting data:') ); $subgroup->setSubgroupHeader($leaf); $leaf = new RadioPropertyItem( "insert_syntax", __('INSERT IGNORE statements') ); $leaf->setValues( array( 'complete' => __( 'include column names in every INSERT statement' . '
      Example: INSERT INTO' . ' tbl_name (col_A,col_B,col_C) VALUES (1,2,3)' ), 'extended' => __( 'insert multiple rows in every INSERT statement' . '
      Example: INSERT INTO' . ' tbl_name VALUES (1,2,3), (4,5,6), (7,8,9)' ), 'both' => __( 'both of the above
      Example:' . ' INSERT INTO tbl_name (col_A,col_B,col_C) VALUES' . ' (1,2,3), (4,5,6), (7,8,9)' ), 'none' => __( 'neither of the above
      Example:' . ' INSERT INTO tbl_name VALUES (1,2,3)' ), ) ); $subgroup->addProperty($leaf); $dataOptions->addProperty($subgroup); // Max length of query $leaf = new NumberPropertyItem( "max_query_size", __('Maximal length of created query') ); $dataOptions->addProperty($leaf); // Dump binary columns in hexadecimal $leaf = new BoolPropertyItem( "hex_for_binary", __( 'Dump binary columns in hexadecimal notation' . ' (for example, "abc" becomes 0x616263)' ) ); $dataOptions->addProperty($leaf); // Dump time in UTC $leaf = new BoolPropertyItem( "utc_time", __( 'Dump TIMESTAMP columns in UTC (enables TIMESTAMP columns' . ' to be dumped and reloaded between servers in different' . ' time zones)' ) ); $dataOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dataOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } } /** * Generates SQL for routines export * * @param string $db Database * @param array $aliases Aliases of db/table/columns * @param string $type Type of exported routine * @param string $name Verbose name of exported routine * @param array $routines List of routines to export * @param string $delimiter Delimiter to use in SQL * * @return string SQL query */ protected function _exportRoutineSQL( $db, array $aliases, $type, $name, array $routines, $delimiter ) { global $crlf; $text = $this->_exportComment() . $this->_exportComment($name) . $this->_exportComment(); $used_alias = false; $proc_query = ''; foreach ($routines as $routine) { if (!empty($GLOBALS['sql_drop_table'])) { $proc_query .= 'DROP ' . $type . ' IF EXISTS ' . Util::backquote($routine) . $delimiter . $crlf; } $create_query = $this->replaceWithAliases( $GLOBALS['dbi']->getDefinition($db, $type, $routine), $aliases, $db, '', $flag ); // One warning per database if ($flag) { $used_alias = true; } $proc_query .= $create_query . $delimiter . $crlf . $crlf; } if ($used_alias) { $text .= $this->_exportComment( __('It appears your database uses routines;') ) . $this->_exportComment( __('alias export may not work reliably in all cases.') ) . $this->_exportComment(); } $text .= $proc_query; return $text; } /** * Exports routines (procedures and functions) * * @param string $db Database * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportRoutines($db, array $aliases = array()) { global $crlf; $db_alias = $db; $this->initAlias($aliases, $db_alias); $text = ''; $delimiter = '$$'; $procedure_names = $GLOBALS['dbi'] ->getProceduresOrFunctions($db, 'PROCEDURE'); $function_names = $GLOBALS['dbi']->getProceduresOrFunctions($db, 'FUNCTION'); if ($procedure_names || $function_names) { $text .= $crlf . 'DELIMITER ' . $delimiter . $crlf; if ($procedure_names) { $text .= $this->_exportRoutineSQL( $db, $aliases, 'PROCEDURE', __('Procedures'), $procedure_names, $delimiter ); } if ($function_names) { $text .= $this->_exportRoutineSQL( $db, $aliases, 'FUNCTION', __('Functions'), $function_names, $delimiter ); } $text .= 'DELIMITER ;' . $crlf; } if (!empty($text)) { return Export::outputHandler($text); } return false; } /** * Possibly outputs comment * * @param string $text Text of comment * * @return string The formatted comment */ private function _exportComment($text = '') { if (isset($GLOBALS['sql_include_comments']) && $GLOBALS['sql_include_comments'] ) { // see https://dev.mysql.com/doc/refman/5.0/en/ansi-diff-comments.html if (empty($text)) { return '--' . $GLOBALS['crlf']; } $lines = preg_split("/\\r\\n|\\r|\\n/", $text); $result = array(); foreach ($lines as $line) { $result[] = '-- ' . $line . $GLOBALS['crlf']; } return implode('', $result); } return ''; } /** * Possibly outputs CRLF * * @return string $crlf or nothing */ private function _possibleCRLF() { if (isset($GLOBALS['sql_include_comments']) && $GLOBALS['sql_include_comments'] ) { return $GLOBALS['crlf']; } return ''; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { global $crlf; $foot = ''; if (isset($GLOBALS['sql_disable_fk'])) { $foot .= 'SET FOREIGN_KEY_CHECKS=1;' . $crlf; } if (isset($GLOBALS['sql_use_transaction'])) { $foot .= 'COMMIT;' . $crlf; } // restore connection settings if ($this->_sent_charset) { $foot .= $crlf . '/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;' . $crlf . '/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;' . $crlf . '/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;' . $crlf; $this->_sent_charset = false; } /* Restore timezone */ if (isset($GLOBALS['sql_utc_time']) && $GLOBALS['sql_utc_time']) { $GLOBALS['dbi']->query('SET time_zone = "' . $GLOBALS['old_tz'] . '"'); } return Export::outputHandler($foot); } /** * Outputs export header. It is the first method to be called, so all * the required variables are initialized here. * * @return bool Whether it succeeded */ public function exportHeader() { global $crlf, $cfg; if (isset($GLOBALS['sql_compatibility'])) { $tmp_compat = $GLOBALS['sql_compatibility']; if ($tmp_compat == 'NONE') { $tmp_compat = ''; } $GLOBALS['dbi']->tryQuery('SET SQL_MODE="' . $tmp_compat . '"'); unset($tmp_compat); } $head = $this->_exportComment('phpMyAdmin SQL Dump') . $this->_exportComment('version ' . PMA_VERSION) . $this->_exportComment('https://www.phpmyadmin.net/') . $this->_exportComment(); $host_string = __('Host:') . ' ' . $cfg['Server']['host']; if (!empty($cfg['Server']['port'])) { $host_string .= ':' . $cfg['Server']['port']; } $head .= $this->_exportComment($host_string); $head .= $this->_exportComment( __('Generation Time:') . ' ' . Util::localisedDate() ) . $this->_exportComment( __('Server version:') . ' ' . $GLOBALS['dbi']->getVersionString() ) . $this->_exportComment(__('PHP Version:') . ' ' . phpversion()) . $this->_possibleCRLF(); if (isset($GLOBALS['sql_header_comment']) && !empty($GLOBALS['sql_header_comment']) ) { // '\n' is not a newline (like "\n" would be), it's the characters // backslash and n, as explained on the export interface $lines = explode('\n', $GLOBALS['sql_header_comment']); $head .= $this->_exportComment(); foreach ($lines as $one_line) { $head .= $this->_exportComment($one_line); } $head .= $this->_exportComment(); } if (isset($GLOBALS['sql_disable_fk'])) { $head .= 'SET FOREIGN_KEY_CHECKS=0;' . $crlf; } // We want exported AUTO_INCREMENT columns to have still same value, // do this only for recent MySQL exports if ((! isset($GLOBALS['sql_compatibility']) || $GLOBALS['sql_compatibility'] == 'NONE') ) { $head .= 'SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";' . $crlf; } if (isset($GLOBALS['sql_use_transaction'])) { $head .= 'SET AUTOCOMMIT = 0;' . $crlf . 'START TRANSACTION;' . $crlf; } /* Change timezone if we should export timestamps in UTC */ if (isset($GLOBALS['sql_utc_time']) && $GLOBALS['sql_utc_time']) { $head .= 'SET time_zone = "+00:00";' . $crlf; $GLOBALS['old_tz'] = $GLOBALS['dbi'] ->fetchValue('SELECT @@session.time_zone'); $GLOBALS['dbi']->query('SET time_zone = "+00:00"'); } $head .= $this->_possibleCRLF(); if (! empty($GLOBALS['asfile'])) { // we are saving as file, therefore we provide charset information // so that a utility like the mysql client can interpret // the file correctly if (isset($GLOBALS['charset']) && isset(Charsets::$mysql_charset_map[$GLOBALS['charset']]) ) { // we got a charset from the export dialog $set_names = Charsets::$mysql_charset_map[$GLOBALS['charset']]; } else { // by default we use the connection charset $set_names = Charsets::$mysql_charset_map['utf-8']; } if ($set_names == 'utf8' && $GLOBALS['dbi']->getVersion() > 50503) { $set_names = 'utf8mb4'; } $head .= $crlf . '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=' . '@@CHARACTER_SET_CLIENT */;' . $crlf . '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=' . '@@CHARACTER_SET_RESULTS */;' . $crlf . '/*!40101 SET @OLD_COLLATION_CONNECTION=' . '@@COLLATION_CONNECTION */;' . $crlf . '/*!40101 SET NAMES ' . $set_names . ' */;' . $crlf . $crlf; $this->_sent_charset = true; } return Export::outputHandler($head); } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { global $crlf; if (empty($db_alias)) { $db_alias = $db; } if (isset($GLOBALS['sql_compatibility'])) { $compat = $GLOBALS['sql_compatibility']; } else { $compat = 'NONE'; } if (isset($GLOBALS['sql_drop_database'])) { if (!Export::outputHandler( 'DROP DATABASE IF EXISTS ' . Util::backquoteCompat( $db_alias, $compat, isset($GLOBALS['sql_backquotes']) ) . ';' . $crlf ) ) { return false; } } if ($export_type == 'database' && !isset($GLOBALS['sql_create_database'])) { return true; } $create_query = 'CREATE DATABASE IF NOT EXISTS ' . Util::backquoteCompat( $db_alias, $compat, isset($GLOBALS['sql_backquotes']) ); $collation = $GLOBALS['dbi']->getDbCollation($db); if (mb_strpos($collation, '_')) { $create_query .= ' DEFAULT CHARACTER SET ' . mb_substr( $collation, 0, mb_strpos($collation, '_') ) . ' COLLATE ' . $collation; } else { $create_query .= ' DEFAULT CHARACTER SET ' . $collation; } $create_query .= ';' . $crlf; if (!Export::outputHandler($create_query)) { return false; } return $this->_exportUseStatement($db_alias, $compat); } /** * Outputs USE statement * * @param string $db db to use * @param string $compat sql compatibility * * @return bool Whether it succeeded */ private function _exportUseStatement($db, $compat) { global $crlf; if (isset($GLOBALS['sql_compatibility']) && $GLOBALS['sql_compatibility'] == 'NONE' ) { $result = Export::outputHandler( 'USE ' . Util::backquoteCompat( $db, $compat, isset($GLOBALS['sql_backquotes']) ) . ';' . $crlf ); } else { $result = Export::outputHandler('USE ' . $db . ';' . $crlf); } return $result; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Alias of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { if (empty($db_alias)) { $db_alias = $db; } if (isset($GLOBALS['sql_compatibility'])) { $compat = $GLOBALS['sql_compatibility']; } else { $compat = 'NONE'; } $head = $this->_exportComment() . $this->_exportComment( __('Database:') . ' ' . Util::backquoteCompat( $db_alias, $compat, isset($GLOBALS['sql_backquotes']) ) ) . $this->_exportComment(); return Export::outputHandler($head); } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { global $crlf; $result = true; //add indexes to the sql dump file if (isset($GLOBALS['sql_indexes'])) { $result = Export::outputHandler($GLOBALS['sql_indexes']); unset($GLOBALS['sql_indexes']); } //add auto increments to the sql dump file if (isset($GLOBALS['sql_auto_increments'])) { $result = Export::outputHandler($GLOBALS['sql_auto_increments']); unset($GLOBALS['sql_auto_increments']); } //add constraints to the sql dump file if (isset($GLOBALS['sql_constraints'])) { $result = Export::outputHandler($GLOBALS['sql_constraints']); unset($GLOBALS['sql_constraints']); } return $result; } /** * Exports events * * @param string $db Database * * @return bool Whether it succeeded */ public function exportEvents($db) { global $crlf; $text = ''; $delimiter = '$$'; $event_names = $GLOBALS['dbi']->fetchResult( "SELECT EVENT_NAME FROM information_schema.EVENTS WHERE" . " EVENT_SCHEMA= '" . $GLOBALS['dbi']->escapeString($db) . "';" ); if ($event_names) { $text .= $crlf . "DELIMITER " . $delimiter . $crlf; $text .= $this->_exportComment() . $this->_exportComment(__('Events')) . $this->_exportComment(); foreach ($event_names as $event_name) { if (!empty($GLOBALS['sql_drop_table'])) { $text .= "DROP EVENT " . Util::backquote($event_name) . $delimiter . $crlf; } $text .= $GLOBALS['dbi']->getDefinition($db, 'EVENT', $event_name) . $delimiter . $crlf . $crlf; } $text .= "DELIMITER ;" . $crlf; } if (!empty($text)) { return Export::outputHandler($text); } return false; } /** * Exports metadata from Configuration Storage * * @param string $db database being exported * @param string|array $tables table(s) being exported * @param array $metadataTypes types of metadata to export * * @return bool Whether it succeeded */ public function exportMetadata( $db, $tables, array $metadataTypes ) { $cfgRelation = $this->relation->getRelationsParam(); if (!isset($cfgRelation['db'])) { return true; } $comment = $this->_possibleCRLF() . $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment(__('Metadata')) . $this->_exportComment(); if (!Export::outputHandler($comment)) { return false; } if (!$this->_exportUseStatement( $cfgRelation['db'], $GLOBALS['sql_compatibility'] ) ) { return false; } $r = true; if (is_array($tables)) { // export metadata for each table foreach ($tables as $table) { $r &= $this->_exportMetadata($db, $table, $metadataTypes); } // export metadata for the database $r &= $this->_exportMetadata($db, null, $metadataTypes); } else { // export metadata for single table $r &= $this->_exportMetadata($db, $tables, $metadataTypes); } return $r; } /** * Exports metadata from Configuration Storage * * @param string $db database being exported * @param string $table table being exported * @param array $metadataTypes types of metadata to export * * @return bool Whether it succeeded */ private function _exportMetadata( $db, $table, array $metadataTypes ) { $cfgRelation = $this->relation->getRelationsParam(); if (isset($table)) { $types = array( 'column_info' => 'db_name', 'table_uiprefs' => 'db_name', 'tracking' => 'db_name', ); } else { $types = array( 'bookmark' => 'dbase', 'relation' => 'master_db', 'pdf_pages' => 'db_name', 'savedsearches' => 'db_name', 'central_columns' => 'db_name', ); } $aliases = array(); $comment = $this->_possibleCRLF() . $this->_exportComment(); if (isset($table)) { $comment .= $this->_exportComment( sprintf( __('Metadata for table %s'), $table ) ); } else { $comment .= $this->_exportComment( sprintf( __('Metadata for database %s'), $db ) ); } $comment .= $this->_exportComment(); if (!Export::outputHandler($comment)) { return false; } foreach ($types as $type => $dbNameColumn) { if (in_array($type, $metadataTypes) && isset($cfgRelation[$type])) { // special case, designer pages and their coordinates if ($type == 'pdf_pages') { $sql_query = "SELECT `page_nr`, `page_descr` FROM " . Util::backquote($cfgRelation['db']) . "." . Util::backquote($cfgRelation[$type]) . " WHERE " . Util::backquote($dbNameColumn) . " = '" . $GLOBALS['dbi']->escapeString($db) . "'"; $result = $GLOBALS['dbi']->fetchResult( $sql_query, 'page_nr', 'page_descr' ); foreach ($result as $page => $name) { // insert row for pdf_page $sql_query_row = "SELECT `db_name`, `page_descr` FROM " . Util::backquote($cfgRelation['db']) . "." . Util::backquote( $cfgRelation[$type] ) . " WHERE " . Util::backquote( $dbNameColumn ) . " = '" . $GLOBALS['dbi']->escapeString($db) . "'" . " AND `page_nr` = '" . intval($page) . "'"; if (!$this->exportData( $cfgRelation['db'], $cfgRelation[$type], $GLOBALS['crlf'], '', $sql_query_row, $aliases ) ) { return false; } $lastPage = $GLOBALS['crlf'] . "SET @LAST_PAGE = LAST_INSERT_ID();" . $GLOBALS['crlf']; if (!Export::outputHandler($lastPage)) { return false; } $sql_query_coords = "SELECT `db_name`, `table_name`, " . "'@LAST_PAGE' AS `pdf_page_number`, `x`, `y` FROM " . Util::backquote($cfgRelation['db']) . "." . Util::backquote( $cfgRelation['table_coords'] ) . " WHERE `pdf_page_number` = '" . $page . "'"; $GLOBALS['exporting_metadata'] = true; if (!$this->exportData( $cfgRelation['db'], $cfgRelation['table_coords'], $GLOBALS['crlf'], '', $sql_query_coords, $aliases ) ) { $GLOBALS['exporting_metadata'] = false; return false; } $GLOBALS['exporting_metadata'] = false; } continue; } // remove auto_incrementing id field for some tables if ($type == 'bookmark') { $sql_query = "SELECT `dbase`, `user`, `label`, `query` FROM "; } elseif ($type == 'column_info') { $sql_query = "SELECT `db_name`, `table_name`, `column_name`," . " `comment`, `mimetype`, `transformation`," . " `transformation_options`, `input_transformation`," . " `input_transformation_options` FROM"; } elseif ($type == 'savedsearches') { $sql_query = "SELECT `username`, `db_name`, `search_name`," . " `search_data` FROM"; } else { $sql_query = "SELECT * FROM "; } $sql_query .= Util::backquote($cfgRelation['db']) . '.' . Util::backquote($cfgRelation[$type]) . " WHERE " . Util::backquote($dbNameColumn) . " = '" . $GLOBALS['dbi']->escapeString($db) . "'"; if (isset($table)) { $sql_query .= " AND `table_name` = '" . $GLOBALS['dbi']->escapeString($table) . "'"; } if (!$this->exportData( $cfgRelation['db'], $cfgRelation[$type], $GLOBALS['crlf'], '', $sql_query, $aliases ) ) { return false; } } } return true; } /** * Returns a stand-in CREATE definition to resolve view dependencies * * @param string $db the database name * @param string $view the view name * @param string $crlf the end of line sequence * @param array $aliases Aliases of db/table/columns * * @return string resulting definition */ public function getTableDefStandIn($db, $view, $crlf, $aliases = array()) { $db_alias = $db; $view_alias = $view; $this->initAlias($aliases, $db_alias, $view_alias); $create_query = ''; if (!empty($GLOBALS['sql_drop_table'])) { $create_query .= 'DROP VIEW IF EXISTS ' . Util::backquote($view_alias) . ';' . $crlf; } $create_query .= 'CREATE TABLE '; if (isset($GLOBALS['sql_if_not_exists']) && $GLOBALS['sql_if_not_exists'] ) { $create_query .= 'IF NOT EXISTS '; } $create_query .= Util::backquote($view_alias) . ' (' . $crlf; $tmp = array(); $columns = $GLOBALS['dbi']->getColumnsFull($db, $view); foreach ($columns as $column_name => $definition) { $col_alias = $column_name; if (!empty($aliases[$db]['tables'][$view]['columns'][$col_alias])) { $col_alias = $aliases[$db]['tables'][$view]['columns'][$col_alias]; } $tmp[] = Util::backquote($col_alias) . ' ' . $definition['Type'] . $crlf; } $create_query .= implode(',', $tmp) . ');' . $crlf; return ($create_query); } /** * Returns CREATE definition that matches $view's structure * * @param string $db the database name * @param string $view the view name * @param string $crlf the end of line sequence * @param bool $add_semicolon whether to add semicolon and end-of-line at * the end * @param array $aliases Aliases of db/table/columns * * @return string resulting schema */ private function _getTableDefForView( $db, $view, $crlf, $add_semicolon = true, array $aliases = array() ) { $db_alias = $db; $view_alias = $view; $this->initAlias($aliases, $db_alias, $view_alias); $create_query = "CREATE TABLE"; if (isset($GLOBALS['sql_if_not_exists'])) { $create_query .= " IF NOT EXISTS "; } $create_query .= Util::backquote($view_alias) . "(" . $crlf; $columns = $GLOBALS['dbi']->getColumns($db, $view, null, true); $firstCol = true; foreach ($columns as $column) { $col_alias = $column['Field']; if (!empty($aliases[$db]['tables'][$view]['columns'][$col_alias])) { $col_alias = $aliases[$db]['tables'][$view]['columns'][$col_alias]; } $extracted_columnspec = Util::extractColumnSpec( $column['Type'] ); if (!$firstCol) { $create_query .= "," . $crlf; } $create_query .= " " . Util::backquote($col_alias); $create_query .= " " . $column['Type']; if ($extracted_columnspec['can_contain_collation'] && !empty($column['Collation']) ) { $create_query .= " COLLATE " . $column['Collation']; } if ($column['Null'] == 'NO') { $create_query .= " NOT NULL"; } if (isset($column['Default'])) { $create_query .= " DEFAULT '" . $GLOBALS['dbi']->escapeString($column['Default']) . "'"; } else { if ($column['Null'] == 'YES') { $create_query .= " DEFAULT NULL"; } } if (!empty($column['Comment'])) { $create_query .= " COMMENT '" . $GLOBALS['dbi']->escapeString($column['Comment']) . "'"; } $firstCol = false; } $create_query .= $crlf . ")" . ($add_semicolon ? ';' : '') . $crlf; if (isset($GLOBALS['sql_compatibility'])) { $compat = $GLOBALS['sql_compatibility']; } else { $compat = 'NONE'; } if ($compat == 'MSSQL') { $create_query = $this->_makeCreateTableMSSQLCompatible( $create_query ); } return $create_query; } /** * Returns $table's CREATE definition * * @param string $db the database name * @param string $table the table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case * of error * @param bool $show_dates whether to include creation/ * update/check dates * @param bool $add_semicolon whether to add semicolon and * end-of-line at the end * @param bool $view whether we're handling a view * @param bool $update_indexes_increments whether we need to update * two global variables * @param array $aliases Aliases of db/table/columns * * @return string resulting schema */ public function getTableDef( $db, $table, $crlf, $error_url, $show_dates = false, $add_semicolon = true, $view = false, $update_indexes_increments = true, array $aliases = array() ) { global $sql_drop_table, $sql_backquotes, $sql_constraints, $sql_constraints_query, $sql_indexes, $sql_indexes_query, $sql_auto_increments, $sql_drop_foreign_keys; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $schema_create = ''; $auto_increment = ''; $new_crlf = $crlf; if (isset($GLOBALS['sql_compatibility'])) { $compat = $GLOBALS['sql_compatibility']; } else { $compat = 'NONE'; } // need to use PhpMyAdmin\DatabaseInterface::QUERY_STORE // with $GLOBALS['dbi']->numRows() in mysqli $result = $GLOBALS['dbi']->tryQuery( 'SHOW TABLE STATUS FROM ' . Util::backquote($db) . ' WHERE Name = \'' . $GLOBALS['dbi']->escapeString($table) . '\'', DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_STORE ); if ($result != false) { if ($GLOBALS['dbi']->numRows($result) > 0) { $tmpres = $GLOBALS['dbi']->fetchAssoc($result); // Here we optionally add the AUTO_INCREMENT next value, // but starting with MySQL 5.0.24, the clause is already included // in SHOW CREATE TABLE so we'll remove it below if (isset($GLOBALS['sql_auto_increment']) && !empty($tmpres['Auto_increment']) ) { $auto_increment .= ' AUTO_INCREMENT=' . $tmpres['Auto_increment'] . ' '; } if ($show_dates && isset($tmpres['Create_time']) && !empty($tmpres['Create_time']) ) { $schema_create .= $this->_exportComment( __('Creation:') . ' ' . Util::localisedDate( strtotime($tmpres['Create_time']) ) ); $new_crlf = $this->_exportComment() . $crlf; } if ($show_dates && isset($tmpres['Update_time']) && !empty($tmpres['Update_time']) ) { $schema_create .= $this->_exportComment( __('Last update:') . ' ' . Util::localisedDate( strtotime($tmpres['Update_time']) ) ); $new_crlf = $this->_exportComment() . $crlf; } if ($show_dates && isset($tmpres['Check_time']) && !empty($tmpres['Check_time']) ) { $schema_create .= $this->_exportComment( __('Last check:') . ' ' . Util::localisedDate( strtotime($tmpres['Check_time']) ) ); $new_crlf = $this->_exportComment() . $crlf; } } $GLOBALS['dbi']->freeResult($result); } $schema_create .= $new_crlf; // no need to generate a DROP VIEW here, it was done earlier if (!empty($sql_drop_table) && !$GLOBALS['dbi']->getTable($db, $table)->isView() ) { $schema_create .= 'DROP TABLE IF EXISTS ' . Util::backquote($table_alias, $sql_backquotes) . ';' . $crlf; } // Complete table dump, // Whether to quote table and column names or not if ($sql_backquotes) { $GLOBALS['dbi']->query('SET SQL_QUOTE_SHOW_CREATE = 1'); } else { $GLOBALS['dbi']->query('SET SQL_QUOTE_SHOW_CREATE = 0'); } // I don't see the reason why this unbuffered query could cause problems, // because SHOW CREATE TABLE returns only one row, and we free the // results below. Nonetheless, we got 2 user reports about this // (see bug 1562533) so I removed the unbuffered mode. // $result = $GLOBALS['dbi']->query('SHOW CREATE TABLE ' . backquote($db) // . '.' . backquote($table), null, DatabaseInterface::QUERY_UNBUFFERED); // // Note: SHOW CREATE TABLE, at least in MySQL 5.1.23, does not // produce a displayable result for the default value of a BIT // column, nor does the mysqldump command. See MySQL bug 35796 $GLOBALS['dbi']->tryQuery('USE ' . Util::backquote($db)); $result = $GLOBALS['dbi']->tryQuery( 'SHOW CREATE TABLE ' . Util::backquote($db) . '.' . Util::backquote($table) ); // an error can happen, for example the table is crashed $tmp_error = $GLOBALS['dbi']->getError(); if ($tmp_error) { $message = sprintf(__('Error reading structure for table %s:'), "$db.$table"); $message .= ' ' . $tmp_error; if (! defined('TESTSUITE')) { trigger_error($message, E_USER_ERROR); } return $this->_exportComment($message); } // Old mode is stored so it can be restored once exporting is done. $old_mode = Context::$MODE; $warning = ''; if ($result != false && ($row = $GLOBALS['dbi']->fetchRow($result))) { $create_query = $row[1]; unset($row); // Convert end of line chars to one that we want (note that MySQL // doesn't return query it will accept in all cases) if (mb_strpos($create_query, "(\r\n ")) { $create_query = str_replace("\r\n", $crlf, $create_query); } elseif (mb_strpos($create_query, "(\n ")) { $create_query = str_replace("\n", $crlf, $create_query); } elseif (mb_strpos($create_query, "(\r ")) { $create_query = str_replace("\r", $crlf, $create_query); } /* * Drop database name from VIEW creation. * * This is a bit tricky, but we need to issue SHOW CREATE TABLE with * database name, but we don't want name to show up in CREATE VIEW * statement. */ if ($view) { $create_query = preg_replace( '/' . preg_quote(Util::backquote($db), '/') . '\./', '', $create_query ); } // Substitute aliases in `CREATE` query. $create_query = $this->replaceWithAliases( $create_query, $aliases, $db, $table, $flag ); // One warning per view. if ($flag && $view) { $warning = $this->_exportComment() . $this->_exportComment( __('It appears your database uses views;') ) . $this->_exportComment( __('alias export may not work reliably in all cases.') ) . $this->_exportComment(); } // Adding IF NOT EXISTS, if required. if (isset($GLOBALS['sql_if_not_exists'])) { $create_query = preg_replace( '/^CREATE TABLE/', 'CREATE TABLE IF NOT EXISTS', $create_query ); } // Making the query MSSQL compatible. if ($compat == 'MSSQL') { $create_query = $this->_makeCreateTableMSSQLCompatible( $create_query ); } // Views have no constraints, indexes, etc. They do not require any // analysis. if (!$view) { if (empty($sql_backquotes)) { // Option "Enclose table and column names with backquotes" // was checked. Context::$MODE |= Context::SQL_MODE_NO_ENCLOSING_QUOTES; } // Using appropriate quotes. if (($compat === 'MSSQL') || ($sql_backquotes === '"')) { Context::$MODE |= Context::SQL_MODE_ANSI_QUOTES; } } /** * Parser used for analysis. * * @var Parser */ $parser = new Parser($create_query); /** * `CREATE TABLE` statement. * * @var SelectStatement */ $statement = $parser->statements[0]; if (!empty($statement->entityOptions)) { $engine = $statement->entityOptions->has('ENGINE'); } else { $engine = ''; } /* Avoid operation on ARCHIVE tables as those can not be altered */ if (!empty($statement->fields) && (empty($engine) || strtoupper($engine) != 'ARCHIVE')) { /** * Fragments containining definition of each constraint. * * @var array */ $constraints = array(); /** * Fragments containining definition of each index. * * @var array */ $indexes = array(); /** * Fragments containining definition of each FULLTEXT index. * * @var array */ $indexes_fulltext = array(); /** * Fragments containining definition of each foreign key that will * be dropped. * * @var array */ $dropped = array(); /** * Fragment containining definition of the `AUTO_INCREMENT`. * * @var array */ $auto_increment = array(); // Scanning each field of the `CREATE` statement to fill the arrays // above. // If the field is used in any of the arrays above, it is removed // from the original definition. // Also, AUTO_INCREMENT attribute is removed. /** @var CreateDefinition $field */ foreach ($statement->fields as $key => $field) { if ($field->isConstraint) { // Creating the parts that add constraints. $constraints[] = $field::build($field); unset($statement->fields[$key]); } elseif (!empty($field->key)) { // Creating the parts that add indexes (must not be // constraints). if ($field->key->type === 'FULLTEXT KEY') { $indexes_fulltext[] = $field->build($field); unset($statement->fields[$key]); } else { if (empty($GLOBALS['sql_if_not_exists'])) { $indexes[] = str_replace( 'COMMENT=\'', 'COMMENT \'', $field::build($field) ); unset($statement->fields[$key]); } } } // Creating the parts that drop foreign keys. if (!empty($field->key)) { if ($field->key->type === 'FOREIGN KEY') { $dropped[] = 'FOREIGN KEY ' . Context::escape( $field->name ); unset($statement->fields[$key]); } } // Dropping AUTO_INCREMENT. if (!empty($field->options)) { if ($field->options->has('AUTO_INCREMENT') && empty($GLOBALS['sql_if_not_exists']) ) { $auto_increment[] = $field::build($field); $field->options->remove('AUTO_INCREMENT'); } } } /** * The header of the `ALTER` statement (`ALTER TABLE tbl`). * * @var string */ $alter_header = 'ALTER TABLE ' . Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ); /** * The footer of the `ALTER` statement (usually ';') * * @var string */ $alter_footer = ';' . $crlf; // Generating constraints-related query. if (!empty($constraints)) { $sql_constraints_query = $alter_header . $crlf . ' ADD ' . implode(',' . $crlf . ' ADD ', $constraints) . $alter_footer; $sql_constraints = $this->generateComment( $crlf, $sql_constraints, __('Constraints for dumped tables'), __('Constraints for table'), $table_alias, $compat ) . $sql_constraints_query; } // Generating indexes-related query. $sql_indexes_query = ''; if (!empty($indexes)) { $sql_indexes_query .= $alter_header . $crlf . ' ADD ' . implode(',' . $crlf . ' ADD ', $indexes) . $alter_footer; } if (!empty($indexes_fulltext)) { // InnoDB supports one FULLTEXT index creation at a time. // So FULLTEXT indexes are created one-by-one after other // indexes where created. $sql_indexes_query .= $alter_header . ' ADD ' . implode( $alter_footer . $alter_header . ' ADD ', $indexes_fulltext ) . $alter_footer; } if ((!empty($indexes)) || (!empty($indexes_fulltext))) { $sql_indexes = $this->generateComment( $crlf, $sql_indexes, __('Indexes for dumped tables'), __('Indexes for table'), $table_alias, $compat ) . $sql_indexes_query; } // Generating drop foreign keys-related query. if (!empty($dropped)) { $sql_drop_foreign_keys = $alter_header . $crlf . ' DROP ' . implode(',' . $crlf . ' DROP ', $dropped) . $alter_footer; } // Generating auto-increment-related query. if ((! empty($auto_increment)) && ($update_indexes_increments)) { $sql_auto_increments_query = $alter_header . $crlf . ' MODIFY ' . implode(',' . $crlf . ' MODIFY ', $auto_increment); if (isset($GLOBALS['sql_auto_increment']) && ($statement->entityOptions->has('AUTO_INCREMENT') !== false) ) { if (!isset($GLOBALS['table_data']) || (isset($GLOBALS['table_data']) && in_array($table, $GLOBALS['table_data'])) ) { $sql_auto_increments_query .= ', AUTO_INCREMENT=' . $statement->entityOptions->has('AUTO_INCREMENT'); } } $sql_auto_increments_query .= ';' . $crlf; $sql_auto_increments = $this->generateComment( $crlf, $sql_auto_increments, __('AUTO_INCREMENT for dumped tables'), __('AUTO_INCREMENT for table'), $table_alias, $compat ) . $sql_auto_increments_query; } // Removing the `AUTO_INCREMENT` attribute from the `CREATE TABLE` // too. if (!empty($statement->entityOptions) && (empty($GLOBALS['sql_if_not_exists']) || empty($GLOBALS['sql_auto_increment'])) ) { $statement->entityOptions->remove('AUTO_INCREMENT'); } // Rebuilding the query. $create_query = $statement->build(); } $schema_create .= $create_query; } $GLOBALS['dbi']->freeResult($result); // Restoring old mode. Context::$MODE = $old_mode; return $warning . $schema_create . ($add_semicolon ? ';' . $crlf : ''); } // end of the 'getTableDef()' function /** * Returns $table's comments, relations etc. * * @param string $db database name * @param string $table table name * @param string $crlf end of line sequence * @param bool $do_relation whether to include relation comments * @param bool $do_mime whether to include mime comments * @param array $aliases Aliases of db/table/columns * * @return string resulting comments */ private function _getTableComments( $db, $table, $crlf, $do_relation = false, $do_mime = false, array $aliases = array() ) { global $cfgRelation, $sql_backquotes; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $schema_create = ''; // Check if we can use Relations list($res_rel, $have_rel) = $this->relation->getRelationsAndStatus( $do_relation && !empty($cfgRelation['relation']), $db, $table ); if ($do_mime && $cfgRelation['mimework']) { if (!($mime_map = Transformations::getMIME($db, $table, true))) { unset($mime_map); } } if (isset($mime_map) && count($mime_map) > 0) { $schema_create .= $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment( __('MIME TYPES FOR TABLE') . ' ' . Util::backquote($table, $sql_backquotes) . ':' ); foreach ($mime_map as $mime_field => $mime) { $schema_create .= $this->_exportComment( ' ' . Util::backquote($mime_field, $sql_backquotes) ) . $this->_exportComment( ' ' . Util::backquote( $mime['mimetype'], $sql_backquotes ) ); } $schema_create .= $this->_exportComment(); } if ($have_rel) { $schema_create .= $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment( __('RELATIONSHIPS FOR TABLE') . ' ' . Util::backquote($table_alias, $sql_backquotes) . ':' ); foreach ($res_rel as $rel_field => $rel) { if ($rel_field != 'foreign_keys_data') { $rel_field_alias = !empty( $aliases[$db]['tables'][$table]['columns'][$rel_field] ) ? $aliases[$db]['tables'][$table]['columns'][$rel_field] : $rel_field; $schema_create .= $this->_exportComment( ' ' . Util::backquote( $rel_field_alias, $sql_backquotes ) ) . $this->_exportComment( ' ' . Util::backquote( $rel['foreign_table'], $sql_backquotes ) . ' -> ' . Util::backquote( $rel['foreign_field'], $sql_backquotes ) ); } else { foreach ($rel as $one_key) { foreach ($one_key['index_list'] as $index => $field) { $rel_field_alias = !empty( $aliases[$db]['tables'][$table]['columns'][$field] ) ? $aliases[$db]['tables'][$table]['columns'][$field] : $field; $schema_create .= $this->_exportComment( ' ' . Util::backquote( $rel_field_alias, $sql_backquotes ) ) . $this->_exportComment( ' ' . Util::backquote( $one_key['ref_table_name'], $sql_backquotes ) . ' -> ' . Util::backquote( $one_key['ref_index_list'][$index], $sql_backquotes ) ); } } } } $schema_create .= $this->_exportComment(); } return $schema_create; } // end of the '_getTableComments()' function /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table','triggers','create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $relation whether to include relation comments * @param bool $comments whether to include the pmadb-style column * comments as comments in the structure; this is * deprecated but the parameter is left here * because export.php calls exportStructure() * also for other export types which use this * parameter * @param bool $mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $relation = false, $comments = false, $mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); if (isset($GLOBALS['sql_compatibility'])) { $compat = $GLOBALS['sql_compatibility']; } else { $compat = 'NONE'; } $formatted_table_name = Util::backquoteCompat( $table_alias, $compat, isset($GLOBALS['sql_backquotes']) ); $dump = $this->_possibleCRLF() . $this->_exportComment(str_repeat('-', 56)) . $this->_possibleCRLF() . $this->_exportComment(); switch ($export_mode) { case 'create_table': $dump .= $this->_exportComment( __('Table structure for table') . ' ' . $formatted_table_name ); $dump .= $this->_exportComment(); $dump .= $this->getTableDef( $db, $table, $crlf, $error_url, $dates, true, false, true, $aliases ); $dump .= $this->_getTableComments( $db, $table, $crlf, $relation, $mime, $aliases ); break; case 'triggers': $dump = ''; $delimiter = '$$'; $triggers = $GLOBALS['dbi']->getTriggers($db, $table, $delimiter); if ($triggers) { $dump .= $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment( __('Triggers') . ' ' . $formatted_table_name ) . $this->_exportComment(); $used_alias = false; $trigger_query = ''; foreach ($triggers as $trigger) { if (!empty($GLOBALS['sql_drop_table'])) { $trigger_query .= $trigger['drop'] . ';' . $crlf; } $trigger_query .= 'DELIMITER ' . $delimiter . $crlf; $trigger_query .= $this->replaceWithAliases( $trigger['create'], $aliases, $db, $table, $flag ); if ($flag) { $used_alias = true; } $trigger_query .= 'DELIMITER ;' . $crlf; } // One warning per table. if ($used_alias) { $dump .= $this->_exportComment( __('It appears your table uses triggers;') ) . $this->_exportComment( __('alias export may not work reliably in all cases.') ) . $this->_exportComment(); } $dump .= $trigger_query; } break; case 'create_view': if (empty($GLOBALS['sql_views_as_tables'])) { $dump .= $this->_exportComment( __('Structure for view') . ' ' . $formatted_table_name ) . $this->_exportComment(); // delete the stand-in table previously created (if any) if ($export_type != 'table') { $dump .= 'DROP TABLE IF EXISTS ' . Util::backquote($table_alias) . ';' . $crlf; } $dump .= $this->getTableDef( $db, $table, $crlf, $error_url, $dates, true, true, true, $aliases ); } else { $dump .= $this->_exportComment( sprintf( __('Structure for view %s exported as a table'), $formatted_table_name ) ) . $this->_exportComment(); // delete the stand-in table previously created (if any) if ($export_type != 'table') { $dump .= 'DROP TABLE IF EXISTS ' . Util::backquote($table_alias) . ';' . $crlf; } $dump .= $this->_getTableDefForView( $db, $table, $crlf, true, $aliases ); } break; case 'stand_in': $dump .= $this->_exportComment( __('Stand-in structure for view') . ' ' . $formatted_table_name ) . $this->_exportComment( __('(See below for the actual view)') ) . $this->_exportComment(); // export a stand-in definition to resolve view dependencies $dump .= $this->getTableDefStandIn($db, $table, $crlf, $aliases); } // end switch // this one is built by getTableDef() to use in table copy/move // but not in the case of export unset($GLOBALS['sql_constraints_query']); return Export::outputHandler($dump); } /** * Outputs the content of a table in SQL format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { global $current_row, $sql_backquotes; // Do not export data for merge tables if ($GLOBALS['dbi']->getTable($db, $table)->isMerge()) { return true; } $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); if (isset($GLOBALS['sql_compatibility'])) { $compat = $GLOBALS['sql_compatibility']; } else { $compat = 'NONE'; } $formatted_table_name = Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ); // Do not export data for a VIEW, unless asked to export the view as a table // (For a VIEW, this is called only when exporting a single VIEW) if ($GLOBALS['dbi']->getTable($db, $table)->isView() && empty($GLOBALS['sql_views_as_tables']) ) { $head = $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment('VIEW ' . ' ' . $formatted_table_name) . $this->_exportComment(__('Data:') . ' ' . __('None')) . $this->_exportComment() . $this->_possibleCRLF(); return Export::outputHandler($head); } $result = $GLOBALS['dbi']->tryQuery( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); // a possible error: the table has crashed $tmp_error = $GLOBALS['dbi']->getError(); if ($tmp_error) { $message = sprintf(__('Error reading data for table %s:'), "$db.$table"); $message .= ' ' . $tmp_error; if (! defined('TESTSUITE')) { trigger_error($message, E_USER_ERROR); } return Export::outputHandler( $this->_exportComment($message) ); } if ($result == false) { $GLOBALS['dbi']->freeResult($result); return true; } $fields_cnt = $GLOBALS['dbi']->numFields($result); // Get field information $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); $field_flags = array(); for ($j = 0; $j < $fields_cnt; $j++) { $field_flags[$j] = $GLOBALS['dbi']->fieldFlags($result, $j); } $field_set = array(); for ($j = 0; $j < $fields_cnt; $j++) { $col_as = $fields_meta[$j]->name; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $field_set[$j] = Util::backquoteCompat( $col_as, $compat, $sql_backquotes ); } if (isset($GLOBALS['sql_type']) && $GLOBALS['sql_type'] == 'UPDATE' ) { // update $schema_insert = 'UPDATE '; if (isset($GLOBALS['sql_ignore'])) { $schema_insert .= 'IGNORE '; } // avoid EOL blank $schema_insert .= Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ) . ' SET'; } else { // insert or replace if (isset($GLOBALS['sql_type']) && $GLOBALS['sql_type'] == 'REPLACE' ) { $sql_command = 'REPLACE'; } else { $sql_command = 'INSERT'; } // delayed inserts? if (isset($GLOBALS['sql_delayed'])) { $insert_delayed = ' DELAYED'; } else { $insert_delayed = ''; } // insert ignore? if (isset($GLOBALS['sql_type']) && $GLOBALS['sql_type'] == 'INSERT' && isset($GLOBALS['sql_ignore']) ) { $insert_delayed .= ' IGNORE'; } //truncate table before insert if (isset($GLOBALS['sql_truncate']) && $GLOBALS['sql_truncate'] && $sql_command == 'INSERT' ) { $truncate = 'TRUNCATE TABLE ' . Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ) . ";"; $truncatehead = $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment( __('Truncate table before insert') . ' ' . $formatted_table_name ) . $this->_exportComment() . $crlf; Export::outputHandler($truncatehead); Export::outputHandler($truncate); } // scheme for inserting fields if ($GLOBALS['sql_insert_syntax'] == 'complete' || $GLOBALS['sql_insert_syntax'] == 'both' ) { $fields = implode(', ', $field_set); $schema_insert = $sql_command . $insert_delayed . ' INTO ' . Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ) // avoid EOL blank . ' (' . $fields . ') VALUES'; } else { $schema_insert = $sql_command . $insert_delayed . ' INTO ' . Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ) . ' VALUES'; } } //\x08\\x09, not required $current_row = 0; $query_size = 0; if (($GLOBALS['sql_insert_syntax'] == 'extended' || $GLOBALS['sql_insert_syntax'] == 'both') && (!isset($GLOBALS['sql_type']) || $GLOBALS['sql_type'] != 'UPDATE') ) { $separator = ','; $schema_insert .= $crlf; } else { $separator = ';'; } while ($row = $GLOBALS['dbi']->fetchRow($result)) { if ($current_row == 0) { $head = $this->_possibleCRLF() . $this->_exportComment() . $this->_exportComment( __('Dumping data for table') . ' ' . $formatted_table_name ) . $this->_exportComment() . $crlf; if (!Export::outputHandler($head)) { return false; } } // We need to SET IDENTITY_INSERT ON for MSSQL if (isset($GLOBALS['sql_compatibility']) && $GLOBALS['sql_compatibility'] == 'MSSQL' && $current_row == 0 ) { if (!Export::outputHandler( 'SET IDENTITY_INSERT ' . Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ) . ' ON ;' . $crlf ) ) { return false; } } $current_row++; $values = array(); for ($j = 0; $j < $fields_cnt; $j++) { // NULL if (!isset($row[$j]) || is_null($row[$j])) { $values[] = 'NULL'; } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && !$fields_meta[$j]->blob ) { // a number // timestamp is numeric on some MySQL 4.1, BLOBs are // sometimes numeric $values[] = $row[$j]; } elseif (stristr($field_flags[$j], 'BINARY') !== false && isset($GLOBALS['sql_hex_for_binary']) ) { // a true BLOB // - mysqldump only generates hex data when the --hex-blob // option is used, for fields having the binary attribute // no hex is generated // - a TEXT field returns type blob but a real blob // returns also the 'binary' flag // empty blobs need to be different, but '0' is also empty // :-( if (empty($row[$j]) && $row[$j] != '0') { $values[] = '\'\''; } else { $values[] = '0x' . bin2hex($row[$j]); } } elseif ($fields_meta[$j]->type == 'bit') { // detection of 'bit' works only on mysqli extension $values[] = "b'" . $GLOBALS['dbi']->escapeString( Util::printableBitValue( $row[$j], $fields_meta[$j]->length ) ) . "'"; } elseif ($fields_meta[$j]->type === 'geometry') { // export GIS types as hex $values[] = '0x' . bin2hex($row[$j]); } elseif (!empty($GLOBALS['exporting_metadata']) && $row[$j] == '@LAST_PAGE' ) { $values[] = '@LAST_PAGE'; } else { // something else -> treat as a string $values[] = '\'' . $GLOBALS['dbi']->escapeString($row[$j]) . '\''; } // end if } // end for // should we make update? if (isset($GLOBALS['sql_type']) && $GLOBALS['sql_type'] == 'UPDATE' ) { $insert_line = $schema_insert; for ($i = 0; $i < $fields_cnt; $i++) { if (0 == $i) { $insert_line .= ' '; } if ($i > 0) { // avoid EOL blank $insert_line .= ','; } $insert_line .= $field_set[$i] . ' = ' . $values[$i]; } list($tmp_unique_condition, $tmp_clause_is_unique) = Util::getUniqueCondition( $result, // handle $fields_cnt, // fields_cnt $fields_meta, // fields_meta $row, // row false, // force_unique false, // restrict_to_table null // analyzed_sql_results ); $insert_line .= ' WHERE ' . $tmp_unique_condition; unset($tmp_unique_condition, $tmp_clause_is_unique); } else { // Extended inserts case if ($GLOBALS['sql_insert_syntax'] == 'extended' || $GLOBALS['sql_insert_syntax'] == 'both' ) { if ($current_row == 1) { $insert_line = $schema_insert . '(' . implode(', ', $values) . ')'; } else { $insert_line = '(' . implode(', ', $values) . ')'; $insertLineSize = mb_strlen($insert_line); $sql_max_size = $GLOBALS['sql_max_query_size']; if (isset($sql_max_size) && $sql_max_size > 0 && $query_size + $insertLineSize > $sql_max_size ) { if (!Export::outputHandler(';' . $crlf)) { return false; } $query_size = 0; $current_row = 1; $insert_line = $schema_insert . $insert_line; } } $query_size += mb_strlen($insert_line); // Other inserts case } else { $insert_line = $schema_insert . '(' . implode(', ', $values) . ')'; } } unset($values); if (!Export::outputHandler( ($current_row == 1 ? '' : $separator . $crlf) . $insert_line ) ) { return false; } } // end while if ($current_row > 0) { if (!Export::outputHandler(';' . $crlf)) { return false; } } // We need to SET IDENTITY_INSERT OFF for MSSQL if (isset($GLOBALS['sql_compatibility']) && $GLOBALS['sql_compatibility'] == 'MSSQL' && $current_row > 0 ) { $outputSucceeded = Export::outputHandler( $crlf . 'SET IDENTITY_INSERT ' . Util::backquoteCompat( $table_alias, $compat, $sql_backquotes ) . ' OFF;' . $crlf ); if (!$outputSucceeded) { return false; } } $GLOBALS['dbi']->freeResult($result); return true; } // end of the 'exportData()' function /** * Make a create table statement compatible with MSSQL * * @param string $create_query MySQL create table statement * * @return string MSSQL compatible create table statement */ private function _makeCreateTableMSSQLCompatible($create_query) { // In MSSQL // 1. No 'IF NOT EXISTS' in CREATE TABLE // 2. DATE field doesn't exists, we will use DATETIME instead // 3. UNSIGNED attribute doesn't exist // 4. No length on INT, TINYINT, SMALLINT, BIGINT and no precision on // FLOAT fields // 5. No KEY and INDEX inside CREATE TABLE // 6. DOUBLE field doesn't exists, we will use FLOAT instead $create_query = preg_replace( "/^CREATE TABLE IF NOT EXISTS/", 'CREATE TABLE', $create_query ); // first we need to replace all lines ended with '" DATE ...,\n' // last preg_replace preserve us from situation with date text // inside DEFAULT field value $create_query = preg_replace( "/\" date DEFAULT NULL(,)?\n/", '" datetime DEFAULT NULL$1' . "\n", $create_query ); $create_query = preg_replace( "/\" date NOT NULL(,)?\n/", '" datetime NOT NULL$1' . "\n", $create_query ); $create_query = preg_replace( '/" date NOT NULL DEFAULT \'([^\'])/', '" datetime NOT NULL DEFAULT \'$1', $create_query ); // next we need to replace all lines ended with ') UNSIGNED ...,' // last preg_replace preserve us from situation with unsigned text // inside DEFAULT field value $create_query = preg_replace( "/\) unsigned NOT NULL(,)?\n/", ') NOT NULL$1' . "\n", $create_query ); $create_query = preg_replace( "/\) unsigned DEFAULT NULL(,)?\n/", ') DEFAULT NULL$1' . "\n", $create_query ); $create_query = preg_replace( '/\) unsigned NOT NULL DEFAULT \'([^\'])/', ') NOT NULL DEFAULT \'$1', $create_query ); // we need to replace all lines ended with // '" INT|TINYINT([0-9]{1,}) ...,' last preg_replace preserve us // from situation with int([0-9]{1,}) text inside DEFAULT field // value $create_query = preg_replace( '/" (int|tinyint|smallint|bigint)\([0-9]+\) DEFAULT NULL(,)?\n/', '" $1 DEFAULT NULL$2' . "\n", $create_query ); $create_query = preg_replace( '/" (int|tinyint|smallint|bigint)\([0-9]+\) NOT NULL(,)?\n/', '" $1 NOT NULL$2' . "\n", $create_query ); $create_query = preg_replace( '/" (int|tinyint|smallint|bigint)\([0-9]+\) NOT NULL DEFAULT \'([^\'])/', '" $1 NOT NULL DEFAULT \'$2', $create_query ); // we need to replace all lines ended with // '" FLOAT|DOUBLE([0-9,]{1,}) ...,' // last preg_replace preserve us from situation with // float([0-9,]{1,}) text inside DEFAULT field value $create_query = preg_replace( '/" (float|double)(\([0-9]+,[0-9,]+\))? DEFAULT NULL(,)?\n/', '" float DEFAULT NULL$3' . "\n", $create_query ); $create_query = preg_replace( '/" (float|double)(\([0-9,]+,[0-9,]+\))? NOT NULL(,)?\n/', '" float NOT NULL$3' . "\n", $create_query ); $create_query = preg_replace( '/" (float|double)(\([0-9,]+,[0-9,]+\))? NOT NULL DEFAULT \'([^\'])/', '" float NOT NULL DEFAULT \'$3', $create_query ); // @todo remove indexes from CREATE TABLE return $create_query; } /** * replaces db/table/column names with their aliases * * @param string $sql_query SQL query in which aliases are to be substituted * @param array $aliases Alias information for db/table/column * @param string $db the database name * @param string $table the tablename * @param string &$flag the flag denoting whether any replacement was done * * @return string query replaced with aliases */ public function replaceWithAliases( $sql_query, array $aliases, $db, $table = '', &$flag = null ) { $flag = false; /** * The parser of this query. * * @var Parser $parser */ $parser = new Parser($sql_query); if (empty($parser->statements[0])) { return $sql_query; } /** * The statement that represents the query. * * @var \PhpMyAdmin\SqlParser\Statements\CreateStatement $statement */ $statement = $parser->statements[0]; /** * Old database name. * * @var string $old_database */ $old_database = $db; // Replacing aliases in `CREATE TABLE` statement. if ($statement->options->has('TABLE')) { // Extracting the name of the old database and table from the // statement to make sure the parameters are corect. if (!empty($statement->name->database)) { $old_database = $statement->name->database; } /** * Old table name. * * @var string $old_table */ $old_table = $statement->name->table; // Finding the aliased database name. // The database might be empty so we have to add a few checks. $new_database = null; if (!empty($statement->name->database)) { $new_database = $statement->name->database; if (!empty($aliases[$old_database]['alias'])) { $new_database = $aliases[$old_database]['alias']; } } // Finding the aliases table name. $new_table = $old_table; if (!empty($aliases[$old_database]['tables'][$old_table]['alias'])) { $new_table = $aliases[$old_database]['tables'][$old_table]['alias']; } // Replacing new values. if (($statement->name->database !== $new_database) || ($statement->name->table !== $new_table) ) { $statement->name->database = $new_database; $statement->name->table = $new_table; $statement->name->expr = null; // Force rebuild. $flag = true; } foreach ($statement->fields as $field) { // Column name. if (!empty($field->type)) { if (!empty($aliases[$old_database]['tables'][$old_table]['columns'][$field->name])) { $field->name = $aliases[$old_database]['tables'] [$old_table]['columns'][$field->name]; $flag = true; } } // Key's columns. if (!empty($field->key)) { foreach ($field->key->columns as $key => $column) { if (!empty($aliases[$old_database]['tables'][$old_table]['columns'][$column['name']])) { $field->key->columns[$key]['name'] = $aliases[$old_database] ['tables'][$old_table]['columns'][$column['name']]; $flag = true; } } } // References. if (!empty($field->references)) { $ref_table = $field->references->table->table; // Replacing table. if (!empty($aliases[$old_database]['tables'][$ref_table]['alias'])) { $field->references->table->table = $aliases[$old_database]['tables'][$ref_table]['alias']; $field->references->table->expr = null; $flag = true; } // Replacing column names. foreach ($field->references->columns as $key => $column) { if (!empty($aliases[$old_database]['tables'][$ref_table]['columns'][$column])) { $field->references->columns[$key] = $aliases[$old_database]['tables'][$ref_table]['columns'][$column]; $flag = true; } } } } } elseif ($statement->options->has('TRIGGER')) { // Extracting the name of the old database and table from the // statement to make sure the parameters are corect. if (!empty($statement->table->database)) { $old_database = $statement->table->database; } /** * Old table name. * * @var string $old_table */ $old_table = $statement->table->table; if (!empty($aliases[$old_database]['tables'][$old_table]['alias'])) { $statement->table->table = $aliases[$old_database]['tables'][$old_table]['alias']; $statement->table->expr = null; // Force rebuild. $flag = true; } } if (($statement->options->has('TRIGGER')) || ($statement->options->has('PROCEDURE')) || ($statement->options->has('FUNCTION')) || ($statement->options->has('VIEW')) ) { // Repalcing the body. for ($i = 0, $count = count($statement->body); $i < $count; ++$i) { /** * Token parsed at this moment. * * @var Token $token */ $token = $statement->body[$i]; // Replacing only symbols (that are not variables) and unknown // identifiers. if ((($token->type === Token::TYPE_SYMBOL) && (!($token->flags & Token::FLAG_SYMBOL_VARIABLE))) || ((($token->type === Token::TYPE_KEYWORD) && (!($token->flags & Token::FLAG_KEYWORD_RESERVED))) || ($token->type === Token::TYPE_NONE)) ) { $alias = $this->getAlias($aliases, $token->value); if (!empty($alias)) { // Replacing the token. $token->token = Context::escape($alias); $flag = true; } } } } return $statement->build(); } /** * Generate comment * * @param string $crlf Carriage return character * @param string $sql_statement SQL statement * @param string $comment1 Comment for dumped table * @param string $comment2 Comment for current table * @param string $table_alias Table alias * @param string $compat Compatibility mode * * @return string */ protected function generateComment( $crlf, $sql_statement, $comment1, $comment2, $table_alias, $compat ) { if (!isset($sql_statement)) { if (isset($GLOBALS['no_constraints_comments'])) { $sql_statement = ''; } else { $sql_statement = $crlf . $this->_exportComment() . $this->_exportComment($comment1) . $this->_exportComment(); } } // comments for current table if (!isset($GLOBALS['no_constraints_comments'])) { $sql_statement .= $crlf . $this->_exportComment() . $this->_exportComment( $comment2 . ' ' . Util::backquoteCompat( $table_alias, $compat, isset($GLOBALS['sql_backquotes']) ) ) . $this->_exportComment(); } return $sql_statement; } } db/login/libraries/classes/Plugins/Export/Helpers/TableProperty.php000064400000014166151502156010021467 0ustar00name = trim($row[0]); $this->type = trim($row[1]); $this->nullable = trim($row[2]); $this->key = trim($row[3]); $this->defaultValue = trim($row[4]); $this->ext = trim($row[5]); } /** * Gets the pure type * * @return string type */ public function getPureType() { $pos = mb_strpos($this->type, "("); if ($pos > 0) { return mb_substr($this->type, 0, $pos); } return $this->type; } /** * Tells whether the key is null or not * * @return bool true if the key is not null, false otherwise */ public function isNotNull() { return $this->nullable == "NO" ? "true" : "false"; } /** * Tells whether the key is unique or not * * @return bool true if the key is unique, false otherwise */ public function isUnique() { return $this->key == "PRI" || $this->key == "UNI" ? "true" : "false"; } /** * Gets the .NET primitive type * * @return string type */ public function getDotNetPrimitiveType() { if (mb_strpos($this->type, "int") === 0) { return "int"; } if (mb_strpos($this->type, "longtext") === 0) { return "string"; } if (mb_strpos($this->type, "long") === 0) { return "long"; } if (mb_strpos($this->type, "char") === 0) { return "string"; } if (mb_strpos($this->type, "varchar") === 0) { return "string"; } if (mb_strpos($this->type, "text") === 0) { return "string"; } if (mb_strpos($this->type, "tinyint") === 0) { return "bool"; } if (mb_strpos($this->type, "datetime") === 0) { return "DateTime"; } return "unknown"; } /** * Gets the .NET object type * * @return string type */ public function getDotNetObjectType() { if (mb_strpos($this->type, "int") === 0) { return "Int32"; } if (mb_strpos($this->type, "longtext") === 0) { return "String"; } if (mb_strpos($this->type, "long") === 0) { return "Long"; } if (mb_strpos($this->type, "char") === 0) { return "String"; } if (mb_strpos($this->type, "varchar") === 0) { return "String"; } if (mb_strpos($this->type, "text") === 0) { return "String"; } if (mb_strpos($this->type, "tinyint") === 0) { return "Boolean"; } if (mb_strpos($this->type, "datetime") === 0) { return "DateTime"; } return "Unknown"; } /** * Gets the index name * * @return string containing the name of the index */ public function getIndexName() { if (strlen($this->key) > 0) { return "index=\"" . htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8') . "\""; } return ""; } /** * Tells whether the key is primary or not * * @return bool true if the key is primary, false otherwise */ public function isPK() { return $this->key == "PRI"; } /** * Formats a string for C# * * @param string $text string to be formatted * * @return string formatted text */ public function formatCs($text) { $text = str_replace( "#name#", ExportCodegen::cgMakeIdentifier($this->name, false), $text ); return $this->format($text); } /** * Formats a string for XML * * @param string $text string to be formatted * * @return string formatted text */ public function formatXml($text) { $text = str_replace( "#name#", htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8'), $text ); $text = str_replace( "#indexName#", $this->getIndexName(), $text ); return $this->format($text); } /** * Formats a string * * @param string $text string to be formatted * * @return string formatted text */ public function format($text) { $text = str_replace( "#ucfirstName#", ExportCodegen::cgMakeIdentifier($this->name), $text ); $text = str_replace( "#dotNetPrimitiveType#", $this->getDotNetPrimitiveType(), $text ); $text = str_replace( "#dotNetObjectType#", $this->getDotNetObjectType(), $text ); $text = str_replace( "#type#", $this->getPureType(), $text ); $text = str_replace( "#notNull#", $this->isNotNull(), $text ); $text = str_replace( "#unique#", $this->isUnique(), $text ); return $text; } } db/login/libraries/classes/Plugins/Export/Helpers/Pdf.php000064400000071176151502156010017410 0ustar00relation = new Relation(); } /** * Add page if needed. * * @param float|int $h cell height. Default value: 0 * @param mixed $y starting y position, leave empty for current * position * @param boolean $addpage if true add a page, otherwise only return * the true/false state * * @return boolean true in case of page break, false otherwise. */ public function checkPageBreak($h = 0, $y = '', $addpage = true) { if (TCPDF_STATIC::empty_string($y)) { $y = $this->y; } $current_page = $this->page; if ((($y + $h) > $this->PageBreakTrigger) && (!$this->InFooter) && ($this->AcceptPageBreak()) ) { if ($addpage) { //Automatic page break $x = $this->x; $this->AddPage($this->CurOrientation); $this->y = $this->dataY; $oldpage = $this->page - 1; $this_page_orm = $this->pagedim[$this->page]['orm']; $old_page_orm = $this->pagedim[$oldpage]['orm']; $this_page_olm = $this->pagedim[$this->page]['olm']; $old_page_olm = $this->pagedim[$oldpage]['olm']; if ($this->rtl) { if ($this_page_orm != $old_page_orm) { $this->x = $x - ($this_page_orm - $old_page_orm); } else { $this->x = $x; } } else { if ($this_page_olm != $old_page_olm) { $this->x = $x + ($this_page_olm - $old_page_olm); } else { $this->x = $x; } } } return true; } // account for columns mode return $current_page != $this->page; } /** * This method is used to render the page header. * * @return void */ // @codingStandardsIgnoreLine public function Header() { global $maxY; // We don't want automatic page breaks while generating header // as this can lead to infinite recursion as auto generated page // will want header as well causing another page break // FIXME: Better approach might be to try to compact the content $this->SetAutoPageBreak(false); // Check if header for this page already exists if (!isset($this->headerset[$this->page])) { $fullwidth = 0; foreach ($this->tablewidths as $width) { $fullwidth += $width; } $this->SetY(($this->tMargin) - ($this->FontSizePt / $this->k) * 5); $this->cellFontSize = $this->FontSizePt; $this->SetFont( PdfLib::PMA_PDF_FONT, '', ($this->titleFontSize ? $this->titleFontSize : $this->FontSizePt) ); $this->Cell(0, $this->FontSizePt, $this->titleText, 0, 1, 'C'); $this->SetFont(PdfLib::PMA_PDF_FONT, '', $this->cellFontSize); $this->SetY(($this->tMargin) - ($this->FontSizePt / $this->k) * 2.5); $this->Cell( 0, $this->FontSizePt, __('Database:') . ' ' . $this->dbAlias . ', ' . __('Table:') . ' ' . $this->tableAlias . ', ' . __('Purpose:') . ' ' . $this->purpose, 0, 1, 'L' ); $l = ($this->lMargin); foreach ($this->colTitles as $col => $txt) { $this->SetXY($l, ($this->tMargin)); $this->MultiCell( $this->tablewidths[$col], $this->FontSizePt, $txt ); $l += $this->tablewidths[$col]; $maxY = ($maxY < $this->getY()) ? $this->getY() : $maxY; } $this->SetXY($this->lMargin, $this->tMargin); $this->setFillColor(200, 200, 200); $l = ($this->lMargin); foreach ($this->colTitles as $col => $txt) { $this->SetXY($l, $this->tMargin); $this->cell( $this->tablewidths[$col], $maxY - ($this->tMargin), '', 1, 0, 'L', 1 ); $this->SetXY($l, $this->tMargin); $this->MultiCell( $this->tablewidths[$col], $this->FontSizePt, $txt, 0, 'C' ); $l += $this->tablewidths[$col]; } $this->setFillColor(255, 255, 255); // set headerset $this->headerset[$this->page] = 1; } $this->dataY = $maxY; $this->SetAutoPageBreak(true); } /** * Generate table * * @param int $lineheight Height of line * * @return void */ public function morepagestable($lineheight = 8) { // some things to set and 'remember' $l = $this->lMargin; $startheight = $h = $this->dataY; $startpage = $currpage = $this->page; // calculate the whole width $fullwidth = 0; foreach ($this->tablewidths as $width) { $fullwidth += $width; } // Now let's start to write the table $row = 0; $tmpheight = array(); $maxpage = $this->page; while ($data = $GLOBALS['dbi']->fetchRow($this->results)) { $this->page = $currpage; // write the horizontal borders $this->Line($l, $h, $fullwidth + $l, $h); // write the content and remember the height of the highest col foreach ($data as $col => $txt) { $this->page = $currpage; $this->SetXY($l, $h); if ($this->tablewidths[$col] > 0) { $this->MultiCell( $this->tablewidths[$col], $lineheight, $txt, 0, $this->colAlign[$col] ); $l += $this->tablewidths[$col]; } if (!isset($tmpheight[$row . '-' . $this->page])) { $tmpheight[$row . '-' . $this->page] = 0; } if ($tmpheight[$row . '-' . $this->page] < $this->GetY()) { $tmpheight[$row . '-' . $this->page] = $this->GetY(); } if ($this->page > $maxpage) { $maxpage = $this->page; } unset($data[$col]); } // get the height we were in the last used page $h = $tmpheight[$row . '-' . $maxpage]; // set the "pointer" to the left margin $l = $this->lMargin; // set the $currpage to the last page $currpage = $maxpage; unset($data[$row]); $row++; } // draw the borders // we start adding a horizontal line on the last page $this->page = $maxpage; $this->Line($l, $h, $fullwidth + $l, $h); // now we start at the top of the document and walk down for ($i = $startpage; $i <= $maxpage; $i++) { $this->page = $i; $l = $this->lMargin; $t = ($i == $startpage) ? $startheight : $this->tMargin; $lh = ($i == $maxpage) ? $h : $this->h - $this->bMargin; $this->Line($l, $t, $l, $lh); foreach ($this->tablewidths as $width) { $l += $width; $this->Line($l, $t, $l, $lh); } } // set it to the last page, if not it'll cause some problems $this->page = $maxpage; } /** * Sets a set of attributes. * * @param array $attr array containing the attributes * * @return void */ public function setAttributes(array $attr = array()) { foreach ($attr as $key => $val) { $this->$key = $val; } } /** * Defines the top margin. * The method can be called before creating the first page. * * @param float $topMargin the margin * * @return void */ public function setTopMargin($topMargin) { $this->tMargin = $topMargin; } /** * Prints triggers * * @param string $db database name * @param string $table table name * * @return void */ public function getTriggers($db, $table) { $i = 0; $triggers = $GLOBALS['dbi']->getTriggers($db, $table); foreach ($triggers as $trigger) { $i++; break; } if ($i == 0) { return; //prevents printing blank trigger list for any table } unset($this->tablewidths); unset($this->colTitles); unset($this->titleWidth); unset($this->colFits); unset($this->display_column); unset($this->colAlign); /** * Making table heading * Keeping column width constant */ $this->colTitles[0] = __('Name'); $this->tablewidths[0] = 90; $this->colTitles[1] = __('Time'); $this->tablewidths[1] = 80; $this->colTitles[2] = __('Event'); $this->tablewidths[2] = 40; $this->colTitles[3] = __('Definition'); $this->tablewidths[3] = 240; for ($columns_cnt = 0; $columns_cnt < 4; $columns_cnt++) { $this->colAlign[$columns_cnt] = 'L'; $this->display_column[$columns_cnt] = true; } // Starting to fill table with required info $this->setY($this->tMargin); $this->AddPage(); $this->SetFont(PdfLib::PMA_PDF_FONT, '', 9); $l = $this->lMargin; $startheight = $h = $this->dataY; $startpage = $currpage = $this->page; // calculate the whole width $fullwidth = 0; foreach ($this->tablewidths as $width) { $fullwidth += $width; } $row = 0; $tmpheight = array(); $maxpage = $this->page; $data = array(); $triggers = $GLOBALS['dbi']->getTriggers($db, $table); foreach ($triggers as $trigger) { $data[] = $trigger['name']; $data[] = $trigger['action_timing']; $data[] = $trigger['event_manipulation']; $data[] = $trigger['definition']; $this->page = $currpage; // write the horizontal borders $this->Line($l, $h, $fullwidth + $l, $h); // write the content and remember the height of the highest col foreach ($data as $col => $txt) { $this->page = $currpage; $this->SetXY($l, $h); if ($this->tablewidths[$col] > 0) { $this->MultiCell( $this->tablewidths[$col], $this->FontSizePt, $txt, 0, $this->colAlign[$col] ); $l += $this->tablewidths[$col]; } if (!isset($tmpheight[$row . '-' . $this->page])) { $tmpheight[$row . '-' . $this->page] = 0; } if ($tmpheight[$row . '-' . $this->page] < $this->GetY()) { $tmpheight[$row . '-' . $this->page] = $this->GetY(); } if ($this->page > $maxpage) { $maxpage = $this->page; } } // get the height we were in the last used page $h = $tmpheight[$row . '-' . $maxpage]; // set the "pointer" to the left margin $l = $this->lMargin; // set the $currpage to the last page $currpage = $maxpage; unset($data); $row++; } // draw the borders // we start adding a horizontal line on the last page $this->page = $maxpage; $this->Line($l, $h, $fullwidth + $l, $h); // now we start at the top of the document and walk down for ($i = $startpage; $i <= $maxpage; $i++) { $this->page = $i; $l = $this->lMargin; $t = ($i == $startpage) ? $startheight : $this->tMargin; $lh = ($i == $maxpage) ? $h : $this->h - $this->bMargin; $this->Line($l, $t, $l, $lh); foreach ($this->tablewidths as $width) { $l += $width; $this->Line($l, $t, $l, $lh); } } // set it to the last page, if not it'll cause some problems $this->page = $maxpage; } /** * Print $table's CREATE definition * * @param string $db the database name * @param string $table the table name * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * PMA_exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * @param bool $view whether we're handling a view * @param array $aliases aliases of db/table/columns * * @return void */ public function getTableDef( $db, $table, $do_relation, $do_comments, $do_mime, $view = false, array $aliases = array() ) { // set $cfgRelation here, because there is a chance that it's modified // since the class initialization global $cfgRelation; unset($this->tablewidths); unset($this->colTitles); unset($this->titleWidth); unset($this->colFits); unset($this->display_column); unset($this->colAlign); /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); /** * All these three checks do_relation, do_comment and do_mime is * not required. As presently all are set true by default. * But when, methods to take user input will be developed, * it will be of use */ // Check if we can use Relations if ($do_relation) { // Find which tables are related with the current one and write it in // an array $res_rel = $this->relation->getForeigners($db, $table); $have_rel = !empty($res_rel); } else { $have_rel = false; } // end if //column count and table heading $this->colTitles[0] = __('Column'); $this->tablewidths[0] = 90; $this->colTitles[1] = __('Type'); $this->tablewidths[1] = 80; $this->colTitles[2] = __('Null'); $this->tablewidths[2] = 40; $this->colTitles[3] = __('Default'); $this->tablewidths[3] = 120; for ($columns_cnt = 0; $columns_cnt < 4; $columns_cnt++) { $this->colAlign[$columns_cnt] = 'L'; $this->display_column[$columns_cnt] = true; } if ($do_relation && $have_rel) { $this->colTitles[$columns_cnt] = __('Links to'); $this->display_column[$columns_cnt] = true; $this->colAlign[$columns_cnt] = 'L'; $this->tablewidths[$columns_cnt] = 120; $columns_cnt++; } if ($do_comments /*&& $cfgRelation['commwork']*/) { $this->colTitles[$columns_cnt] = __('Comments'); $this->display_column[$columns_cnt] = true; $this->colAlign[$columns_cnt] = 'L'; $this->tablewidths[$columns_cnt] = 120; $columns_cnt++; } if ($do_mime && $cfgRelation['mimework']) { $this->colTitles[$columns_cnt] = __('MIME'); $this->display_column[$columns_cnt] = true; $this->colAlign[$columns_cnt] = 'L'; $this->tablewidths[$columns_cnt] = 120; $columns_cnt++; } // Starting to fill table with required info $this->setY($this->tMargin); $this->AddPage(); $this->SetFont(PdfLib::PMA_PDF_FONT, '', 9); // Now let's start to write the table structure if ($do_comments) { $comments = $this->relation->getComments($db, $table); } if ($do_mime && $cfgRelation['mimework']) { $mime_map = Transformations::getMIME($db, $table, true); } $columns = $GLOBALS['dbi']->getColumns($db, $table); /** * Get the unique keys in the table. * Presently, this information is not used. We will have to find out * way of displaying it. */ $unique_keys = array(); $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); foreach ($keys as $key) { if ($key['Non_unique'] == 0) { $unique_keys[] = $key['Column_name']; } } // some things to set and 'remember' $l = $this->lMargin; $startheight = $h = $this->dataY; $startpage = $currpage = $this->page; // calculate the whole width $fullwidth = 0; foreach ($this->tablewidths as $width) { $fullwidth += $width; } $row = 0; $tmpheight = array(); $maxpage = $this->page; $data = array(); // fun begin foreach ($columns as $column) { $extracted_columnspec = Util::extractColumnSpec($column['Type']); $type = $extracted_columnspec['print_type']; if (empty($type)) { $type = ' '; } if (!isset($column['Default'])) { if ($column['Null'] != 'NO') { $column['Default'] = 'NULL'; } } $data [] = $column['Field']; $data [] = $type; $data [] = ($column['Null'] == '' || $column['Null'] == 'NO') ? 'No' : 'Yes'; $data [] = isset($column['Default']) ? $column['Default'] : ''; $field_name = $column['Field']; if ($do_relation && $have_rel) { $data [] = isset($res_rel[$field_name]) ? $res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')' : ''; } if ($do_comments) { $data [] = isset($comments[$field_name]) ? $comments[$field_name] : ''; } if ($do_mime) { $data [] = isset($mime_map[$field_name]) ? $mime_map[$field_name]['mimetype'] : ''; } $this->page = $currpage; // write the horizontal borders $this->Line($l, $h, $fullwidth + $l, $h); // write the content and remember the height of the highest col foreach ($data as $col => $txt) { $this->page = $currpage; $this->SetXY($l, $h); if ($this->tablewidths[$col] > 0) { $this->MultiCell( $this->tablewidths[$col], $this->FontSizePt, $txt, 0, $this->colAlign[$col] ); $l += $this->tablewidths[$col]; } if (!isset($tmpheight[$row . '-' . $this->page])) { $tmpheight[$row . '-' . $this->page] = 0; } if ($tmpheight[$row . '-' . $this->page] < $this->GetY()) { $tmpheight[$row . '-' . $this->page] = $this->GetY(); } if ($this->page > $maxpage) { $maxpage = $this->page; } } // get the height we were in the last used page $h = $tmpheight[$row . '-' . $maxpage]; // set the "pointer" to the left margin $l = $this->lMargin; // set the $currpage to the last page $currpage = $maxpage; unset($data); $row++; } // draw the borders // we start adding a horizontal line on the last page $this->page = $maxpage; $this->Line($l, $h, $fullwidth + $l, $h); // now we start at the top of the document and walk down for ($i = $startpage; $i <= $maxpage; $i++) { $this->page = $i; $l = $this->lMargin; $t = ($i == $startpage) ? $startheight : $this->tMargin; $lh = ($i == $maxpage) ? $h : $this->h - $this->bMargin; $this->Line($l, $t, $l, $lh); foreach ($this->tablewidths as $width) { $l += $width; $this->Line($l, $t, $l, $lh); } } // set it to the last page, if not it'll cause some problems $this->page = $maxpage; } /** * MySQL report * * @param string $query Query to execute * * @return void */ public function mysqlReport($query) { unset($this->tablewidths); unset($this->colTitles); unset($this->titleWidth); unset($this->colFits); unset($this->display_column); unset($this->colAlign); /** * Pass 1 for column widths */ $this->results = $GLOBALS['dbi']->query( $query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $this->numFields = $GLOBALS['dbi']->numFields($this->results); $this->fields = $GLOBALS['dbi']->getFieldsMeta($this->results); // sColWidth = starting col width (an average size width) $availableWidth = $this->w - $this->lMargin - $this->rMargin; $this->sColWidth = $availableWidth / $this->numFields; $totalTitleWidth = 0; // loop through results header and set initial // col widths/ titles/ alignment // if a col title is less than the starting col width, // reduce that column size $colFits = array(); $titleWidth = array(); for ($i = 0; $i < $this->numFields; $i++) { $col_as = $this->fields[$i]->name; $db = $this->currentDb; $table = $this->currentTable; if (!empty($this->aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $this->aliases[$db]['tables'][$table]['columns'][$col_as]; } $stringWidth = $this->getstringwidth($col_as) + 6; // save the real title's width $titleWidth[$i] = $stringWidth; $totalTitleWidth += $stringWidth; // set any column titles less than the start width to // the column title width if ($stringWidth < $this->sColWidth) { $colFits[$i] = $stringWidth; } $this->colTitles[$i] = $col_as; $this->display_column[$i] = true; switch ($this->fields[$i]->type) { case 'int': $this->colAlign[$i] = 'R'; break; case 'blob': case 'tinyblob': case 'mediumblob': case 'longblob': /** * @todo do not deactivate completely the display * but show the field's name and [BLOB] */ if (stristr($this->fields[$i]->flags, 'BINARY')) { $this->display_column[$i] = false; unset($this->colTitles[$i]); } $this->colAlign[$i] = 'L'; break; default: $this->colAlign[$i] = 'L'; } } // title width verification if ($totalTitleWidth > $availableWidth) { $adjustingMode = true; } else { $adjustingMode = false; // we have enough space for all the titles at their // original width so use the true title's width foreach ($titleWidth as $key => $val) { $colFits[$key] = $val; } } // loop through the data; any column whose contents // is greater than the column size is resized /** * @todo force here a LIMIT to avoid reading all rows */ while ($row = $GLOBALS['dbi']->fetchRow($this->results)) { foreach ($colFits as $key => $val) { $stringWidth = $this->getstringwidth($row[$key]) + 6; if ($adjustingMode && ($stringWidth > $this->sColWidth)) { // any column whose data's width is bigger than // the start width is now discarded unset($colFits[$key]); } else { // if data's width is bigger than the current column width, // enlarge the column (but avoid enlarging it if the // data's width is very big) if ($stringWidth > $val && $stringWidth < ($this->sColWidth * 3) ) { $colFits[$key] = $stringWidth; } } } } $totAlreadyFitted = 0; foreach ($colFits as $key => $val) { // set fitted columns to smallest size $this->tablewidths[$key] = $val; // to work out how much (if any) space has been freed up $totAlreadyFitted += $val; } if ($adjustingMode) { $surplus = (sizeof($colFits) * $this->sColWidth) - $totAlreadyFitted; $surplusToAdd = $surplus / ($this->numFields - sizeof($colFits)); } else { $surplusToAdd = 0; } for ($i = 0; $i < $this->numFields; $i++) { if (!in_array($i, array_keys($colFits))) { $this->tablewidths[$i] = $this->sColWidth + $surplusToAdd; } if ($this->display_column[$i] == false) { $this->tablewidths[$i] = 0; } } ksort($this->tablewidths); $GLOBALS['dbi']->freeResult($this->results); // Pass 2 $this->results = $GLOBALS['dbi']->query( $query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $this->setY($this->tMargin); $this->AddPage(); $this->SetFont(PdfLib::PMA_PDF_FONT, '', 9); $this->morepagestable($this->FontSizePt); $GLOBALS['dbi']->freeResult($this->results); } // end of mysqlReport function } // end of Pdf class db/login/libraries/classes/Plugins/Export/ExportXml.php000064400000043437151502156010017236 0ustar00setProperties(); } /** * Initialize the local variables that are used for export XML * * @return void */ protected function initSpecificVariables() { global $table, $tables; $this->_setTable($table); if (is_array($tables)) { $this->_setTables($tables); } } /** * Sets the export XML properties * * @return void */ protected function setProperties() { // create the export plugin property item $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('XML'); $exportPluginProperties->setExtension('xml'); $exportPluginProperties->setMimeType('text/xml'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new HiddenPropertyItem("structure_or_data"); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // export structure main group $structure = new OptionsPropertyMainGroup( "structure", __('Object creation options (all are recommended)') ); // create primary items and add them to the group $leaf = new BoolPropertyItem( "export_events", __('Events') ); $structure->addProperty($leaf); $leaf = new BoolPropertyItem( "export_functions", __('Functions') ); $structure->addProperty($leaf); $leaf = new BoolPropertyItem( "export_procedures", __('Procedures') ); $structure->addProperty($leaf); $leaf = new BoolPropertyItem( "export_tables", __('Tables') ); $structure->addProperty($leaf); $leaf = new BoolPropertyItem( "export_triggers", __('Triggers') ); $structure->addProperty($leaf); $leaf = new BoolPropertyItem( "export_views", __('Views') ); $structure->addProperty($leaf); $exportSpecificOptions->addProperty($structure); // data main group $data = new OptionsPropertyMainGroup( "data", __('Data dump options') ); // create primary items and add them to the group $leaf = new BoolPropertyItem( "export_contents", __('Export contents') ); $data->addProperty($leaf); $exportSpecificOptions->addProperty($data); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Generates output for SQL defintions of routines * * @param string $db Database name * @param string $type Item type to be used in XML output * @param string $dbitype Item type used in DBI qieries * * @return string XML with definitions */ private function _exportRoutines($db, $type, $dbitype) { // Export routines $routines = $GLOBALS['dbi']->getProceduresOrFunctions( $db, $dbitype ); return $this->_exportDefinitions($db, $type, $dbitype, $routines); } /** * Generates output for SQL defintions * * @param string $db Database name * @param string $type Item type to be used in XML output * @param string $dbitype Item type used in DBI qieries * @param array $names Names of items to export * * @return string XML with definitions */ private function _exportDefinitions($db, $type, $dbitype, array $names) { global $crlf; $head = ''; if ($names) { foreach ($names as $name) { $head .= ' ' . $crlf; // Do some formatting $sql = $GLOBALS['dbi']->getDefinition($db, $dbitype, $name); $sql = htmlspecialchars(rtrim($sql)); $sql = str_replace("\n", "\n ", $sql); $head .= " " . $sql . $crlf; $head .= ' ' . $crlf; } } return $head; } /** * Outputs export header. It is the first method to be called, so all * the required variables are initialized here. * * @return bool Whether it succeeded */ public function exportHeader() { $this->initSpecificVariables(); global $crlf, $cfg, $db; $table = $this->_getTable(); $tables = $this->_getTables(); $export_struct = isset($GLOBALS['xml_export_functions']) || isset($GLOBALS['xml_export_procedures']) || isset($GLOBALS['xml_export_tables']) || isset($GLOBALS['xml_export_triggers']) || isset($GLOBALS['xml_export_views']); $export_data = isset($GLOBALS['xml_export_contents']) ? true : false; if ($GLOBALS['output_charset_conversion']) { $charset = $GLOBALS['charset']; } else { $charset = 'utf-8'; } $head = '' . $crlf . '' . $crlf . $crlf; $head .= '' . $crlf; if ($export_struct) { $result = $GLOBALS['dbi']->fetchResult( 'SELECT `DEFAULT_CHARACTER_SET_NAME`, `DEFAULT_COLLATION_NAME`' . ' FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`' . ' = \'' . $GLOBALS['dbi']->escapeString($db) . '\' LIMIT 1' ); $db_collation = $result[0]['DEFAULT_COLLATION_NAME']; $db_charset = $result[0]['DEFAULT_CHARACTER_SET_NAME']; $head .= ' ' . $crlf; $head .= ' ' . $crlf; $head .= ' ' . $crlf; if (is_null($tables)) { $tables = array(); } if (count($tables) === 0) { $tables[] = $table; } foreach ($tables as $table) { // Export tables and views $result = $GLOBALS['dbi']->fetchResult( 'SHOW CREATE TABLE ' . Util::backquote($db) . '.' . Util::backquote($table), 0 ); $tbl = $result[$table][1]; $is_view = $GLOBALS['dbi']->getTable($db, $table) ->isView(); if ($is_view) { $type = 'view'; } else { $type = 'table'; } if ($is_view && !isset($GLOBALS['xml_export_views'])) { continue; } if (!$is_view && !isset($GLOBALS['xml_export_tables'])) { continue; } $head .= ' ' . $crlf; $tbl = " " . htmlspecialchars($tbl); $tbl = str_replace("\n", "\n ", $tbl); $head .= $tbl . ';' . $crlf; $head .= ' ' . $crlf; if (isset($GLOBALS['xml_export_triggers']) && $GLOBALS['xml_export_triggers'] ) { // Export triggers $triggers = $GLOBALS['dbi']->getTriggers($db, $table); if ($triggers) { foreach ($triggers as $trigger) { $code = $trigger['create']; $head .= ' ' . $crlf; // Do some formatting $code = mb_substr(rtrim($code), 0, -3); $code = " " . htmlspecialchars($code); $code = str_replace("\n", "\n ", $code); $head .= $code . $crlf; $head .= ' ' . $crlf; } unset($trigger); unset($triggers); } } } if (isset($GLOBALS['xml_export_functions']) && $GLOBALS['xml_export_functions'] ) { $head .= $this->_exportRoutines($db, 'function', 'FUNCTION'); } if (isset($GLOBALS['xml_export_procedures']) && $GLOBALS['xml_export_procedures'] ) { $head .= $this->_exportRoutines($db, 'procedure', 'PROCEDURE'); } if (isset($GLOBALS['xml_export_events']) && $GLOBALS['xml_export_events'] ) { // Export events $events = $GLOBALS['dbi']->fetchResult( "SELECT EVENT_NAME FROM information_schema.EVENTS " . "WHERE EVENT_SCHEMA='" . $GLOBALS['dbi']->escapeString($db) . "'" ); $head .= $this->_exportDefinitions( $db, 'event', 'EVENT', $events ); } unset($result); $head .= ' ' . $crlf; $head .= ' ' . $crlf; if ($export_data) { $head .= $crlf; } } return Export::outputHandler($head); } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { $foot = ''; return Export::outputHandler($foot); } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { global $crlf; if (empty($db_alias)) { $db_alias = $db; } if (isset($GLOBALS['xml_export_contents']) && $GLOBALS['xml_export_contents'] ) { $head = ' ' . $crlf . ' ' . $crlf; return Export::outputHandler($head); } return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { global $crlf; if (isset($GLOBALS['xml_export_contents']) && $GLOBALS['xml_export_contents'] ) { return Export::outputHandler(' ' . $crlf); } return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in XML format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { // Do not export data for merge tables if ($GLOBALS['dbi']->getTable($db, $table)->isMerge()) { return true; } $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); if (isset($GLOBALS['xml_export_contents']) && $GLOBALS['xml_export_contents'] ) { $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $columns_cnt = $GLOBALS['dbi']->numFields($result); $columns = array(); for ($i = 0; $i < $columns_cnt; $i++) { $columns[$i] = stripslashes($GLOBALS['dbi']->fieldName($result, $i)); } unset($i); $buffer = ' ' . $crlf; if (!Export::outputHandler($buffer)) { return false; } while ($record = $GLOBALS['dbi']->fetchRow($result)) { $buffer = '
" . __('Trigger name') . "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "
" . _pgettext('Trigger action time', 'Time') . "
" . __('Event') . "
" . __('Definition') . "
" . __('Definer') . "isAjax()) { $retval .= "\n"; $retval .= "\n"; } $retval .= "\n\n"; $retval .= "\n\n"; return $retval; } // end self::getEditorForm() /** * Composes the query necessary to create a trigger from an HTTP request. * * @return string The CREATE TRIGGER query. */ public static function getQueryFromRequest() { global $_REQUEST, $db, $errors, $action_timings, $event_manipulations; $query = 'CREATE '; if (! empty($_POST['item_definer'])) { if (mb_strpos($_POST['item_definer'], '@') !== false ) { $arr = explode('@', $_POST['item_definer']); $query .= 'DEFINER=' . Util::backquote($arr[0]); $query .= '@' . Util::backquote($arr[1]) . ' '; } else { $errors[] = __('The definer must be in the "username@hostname" format!'); } } $query .= 'TRIGGER '; if (! empty($_POST['item_name'])) { $query .= Util::backquote($_POST['item_name']) . ' '; } else { $errors[] = __('You must provide a trigger name!'); } if (! empty($_POST['item_timing']) && in_array($_POST['item_timing'], $action_timings) ) { $query .= $_POST['item_timing'] . ' '; } else { $errors[] = __('You must provide a valid timing for the trigger!'); } if (! empty($_POST['item_event']) && in_array($_POST['item_event'], $event_manipulations) ) { $query .= $_POST['item_event'] . ' '; } else { $errors[] = __('You must provide a valid event for the trigger!'); } $query .= 'ON '; if (! empty($_POST['item_table']) && in_array($_POST['item_table'], $GLOBALS['dbi']->getTables($db)) ) { $query .= Util::backquote($_POST['item_table']); } else { $errors[] = __('You must provide a valid table name!'); } $query .= ' FOR EACH ROW '; if (! empty($_POST['item_definition'])) { $query .= $_POST['item_definition']; } else { $errors[] = __('You must provide a trigger definition.'); } return $query; } // end self::getQueryFromRequest() } db/login/libraries/classes/Rte/RteList.php000064400000050121151502156010014476 0ustar00\n"; $retval .= '
'; $retval .= Url::getHiddenInputs($GLOBALS['db'], $GLOBALS['table']); $retval .= "
\n"; $retval .= " \n"; $retval .= " " . Words::get('title') . "\n"; $retval .= " " . Util::showMySQLDocu(Words::get('docu')) . "\n"; $retval .= " \n"; $retval .= "
\n"; $retval .= " " . Words::get('nothing') . "\n"; $retval .= "
\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; // th cells with a colspan need corresponding td cells, according to W3C switch ($type) { case 'routine': $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; // see comment above for ($i = 0; $i < 7; $i++) { $retval .= " \n"; } break; case 'trigger': $retval .= " \n"; $retval .= " \n"; if (empty($table)) { $retval .= " \n"; } $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; // see comment above for ($i = 0; $i < (empty($table) ? 7 : 6); $i++) { $retval .= " \n"; } break; case 'event': $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; $retval .= " \n"; // see comment above for ($i = 0; $i < 6; $i++) { $retval .= " \n"; } break; default: break; } $retval .= " \n"; $retval .= " \n"; $count = 0; $response = Response::getInstance(); foreach ($items as $item) { if ($response->isAjax() && empty($_REQUEST['ajax_page_request'])) { $rowclass = 'ajaxInsert hide'; } else { $rowclass = ''; } // Get each row from the correct function switch ($type) { case 'routine': $retval .= self::getRoutineRow($item, $rowclass); break; case 'trigger': $retval .= self::getTriggerRow($item, $rowclass); break; case 'event': $retval .= self::getEventRow($item, $rowclass); break; default: break; } $count++; } $retval .= "
" . __('Name') . "" . __('Action') . "" . __('Type') . "" . __('Returns') . "
" . __('Name') . "" . __('Table') . "" . __('Action') . "" . __('Time') . "" . __('Event') . "
" . __('Name') . "" . __('Status') . "" . __('Action') . "" . __('Type') . "
\n"; if (count($items)) { $retval .= '
'; $retval .= Template::get('select_all') ->render( array( 'pma_theme_image' => $GLOBALS['pmaThemeImage'], 'text_dir' => $GLOBALS['text_dir'], 'form_name' => 'rteListForm', ) ); $retval .= Util::getButtonOrImage( 'submit_mult', 'mult_submit', __('Export'), 'b_export', 'export' ); $retval .= Util::getButtonOrImage( 'submit_mult', 'mult_submit', __('Drop'), 'b_drop', 'drop' ); $retval .= '
'; } $retval .= "
\n"; $retval .= "
\n"; $retval .= "\n"; return $retval; } // end self::get() /** * Creates the contents for a row in the list of routines * * @param array $routine An array of routine data * @param string $rowclass Additional class * * @return string HTML code of a row for the list of routines */ public static function getRoutineRow(array $routine, $rowclass = '') { global $url_query, $db, $titles; $sql_drop = sprintf( 'DROP %s IF EXISTS %s', $routine['type'], Util::backquote($routine['name']) ); $type_link = "item_type={$routine['type']}"; $retval = "
\n"; $retval .= ' '; $retval .= " \n"; $retval .= " " . htmlspecialchars($sql_drop) . "\n"; $retval .= " \n"; $retval .= " " . htmlspecialchars($routine['name']) . "\n"; $retval .= " \n"; $retval .= " \n"; // this is for our purpose to decide whether to // show the edit link or not, so we need the DEFINER for the routine $where = "ROUTINE_SCHEMA " . Util::getCollateForIS() . "=" . "'" . $GLOBALS['dbi']->escapeString($db) . "' " . "AND SPECIFIC_NAME='" . $GLOBALS['dbi']->escapeString($routine['name']) . "'" . "AND ROUTINE_TYPE='" . $GLOBALS['dbi']->escapeString($routine['type']) . "'"; $query = "SELECT `DEFINER` FROM INFORMATION_SCHEMA.ROUTINES WHERE $where;"; $routine_definer = $GLOBALS['dbi']->fetchValue($query); $curr_user = $GLOBALS['dbi']->getCurrentUser(); // Since editing a procedure involved dropping and recreating, check also for // CREATE ROUTINE privilege to avoid lost procedures. if ((Util::currentUserHasPrivilege('CREATE ROUTINE', $db) && $curr_user == $routine_definer) || $GLOBALS['dbi']->isSuperuser() ) { $retval .= ' ' . $titles['Edit'] . "\n"; } else { $retval .= " {$titles['NoEdit']}\n"; } $retval .= " \n"; // There is a problem with Util::currentUserHasPrivilege(): // it does not detect all kinds of privileges, for example // a direct privilege on a specific routine. So, at this point, // we show the Execute link, hoping that the user has the correct rights. // Also, information_schema might be hiding the ROUTINE_DEFINITION // but a routine with no input parameters can be nonetheless executed. // Check if the routine has any input parameters. If it does, // we will show a dialog to get values for these parameters, // otherwise we can execute it directly. $definition = $GLOBALS['dbi']->getDefinition( $db, $routine['type'], $routine['name'] ); if ($definition !== false) { $parser = new Parser($definition); /** * @var CreateStatement $stmt */ $stmt = $parser->statements[0]; $params = Routine::getParameters($stmt); if (Util::currentUserHasPrivilege('EXECUTE', $db)) { $execute_action = 'execute_routine'; for ($i = 0; $i < $params['num']; $i++) { if ($routine['type'] == 'PROCEDURE' && $params['dir'][$i] == 'OUT' ) { continue; } $execute_action = 'execute_dialog'; break; } $query_part = $execute_action . '=1&item_name=' . urlencode($routine['name']) . '&' . $type_link; $retval .= ' ' . $titles['Execute'] . "\n"; } else { $retval .= " {$titles['NoExecute']}\n"; } } $retval .= " \n"; if ((Util::currentUserHasPrivilege('CREATE ROUTINE', $db) && $curr_user == $routine_definer) || $GLOBALS['dbi']->isSuperuser() ) { $retval .= ' ' . $titles['Export'] . "\n"; } else { $retval .= " {$titles['NoExport']}\n"; } $retval .= " \n"; $retval .= Util::linkOrButton( 'sql.php' . $url_query . '&sql_query=' . urlencode($sql_drop) . '&goto=db_routines.php' . urlencode("?db={$db}"), $titles['Drop'], ['class' => 'ajax drop_anchor'] ); $retval .= " \n"; $retval .= " {$routine['type']}\n"; $retval .= " \n"; $retval .= " " . htmlspecialchars($routine['returns']) . "\n"; $retval .= "
\n"; $retval .= ' '; $retval .= " \n"; $retval .= " " . htmlspecialchars($trigger['drop']) . "\n"; $retval .= " \n"; $retval .= " " . htmlspecialchars($trigger['name']) . "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= "" . htmlspecialchars($trigger['table']) . ""; $retval .= " \n"; if (Util::currentUserHasPrivilege('TRIGGER', $db, $table)) { $retval .= ' ' . $titles['Edit'] . "\n"; } else { $retval .= " {$titles['NoEdit']}\n"; } $retval .= " \n"; $retval .= ' ' . $titles['Export'] . "\n"; $retval .= " \n"; if (Util::currentUserHasPrivilege('TRIGGER', $db)) { $retval .= Util::linkOrButton( 'sql.php' . $url_query . '&sql_query=' . urlencode($trigger['drop']) . '&goto=db_triggers.php' . urlencode("?db={$db}"), $titles['Drop'], ['class' => 'ajax drop_anchor'] ); } else { $retval .= " {$titles['NoDrop']}\n"; } $retval .= " \n"; $retval .= " {$trigger['action_timing']}\n"; $retval .= " \n"; $retval .= " {$trigger['event_manipulation']}\n"; $retval .= "
\n"; $retval .= ' '; $retval .= " \n"; $retval .= " " . htmlspecialchars($sql_drop) . "\n"; $retval .= " \n"; $retval .= " " . htmlspecialchars($event['name']) . "\n"; $retval .= " \n"; $retval .= " \n"; $retval .= " {$event['status']}\n"; $retval .= " \n"; if (Util::currentUserHasPrivilege('EVENT', $db)) { $retval .= ' ' . $titles['Edit'] . "\n"; } else { $retval .= " {$titles['NoEdit']}\n"; } $retval .= " \n"; $retval .= ' ' . $titles['Export'] . "\n"; $retval .= " \n"; if (Util::currentUserHasPrivilege('EVENT', $db)) { $retval .= Util::linkOrButton( 'sql.php' . $url_query . '&sql_query=' . urlencode($sql_drop) . '&goto=db_events.php' . urlencode("?db={$db}"), $titles['Drop'], ['class' => 'ajax drop_anchor'] ); } else { $retval .= " {$titles['NoDrop']}\n"; } $retval .= " \n"; $retval .= " {$event['type']}\n"; $retval .= "
' . $crlf; for ($i = 0; $i < $columns_cnt; $i++) { $col_as = $columns[$i]; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as]) ) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } // If a cell is NULL, still export it to preserve // the XML structure if (!isset($record[$i]) || is_null($record[$i])) { $record[$i] = 'NULL'; } $buffer .= ' ' . htmlspecialchars((string)$record[$i]) . '' . $crlf; } $buffer .= '
' . $crlf; if (!Export::outputHandler($buffer)) { return false; } } $GLOBALS['dbi']->freeResult($result); } return true; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Gets the table name * * @return string */ private function _getTable() { return $this->_table; } /** * Sets the table name * * @param string $table table name * * @return void */ private function _setTable($table) { $this->_table = $table; } /** * Gets the table names * * @return array */ private function _getTables() { return $this->_tables; } /** * Sets the table names * * @param array $tables table names * * @return void */ private function _setTables(array $tables) { $this->_tables = $tables; } } db/login/libraries/classes/Plugins/Export/ExportHtmlword.php000064400000053120151502156010020264 0ustar00setProperties(); } /** * Sets the export HTML-Word properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('Microsoft Word 2000'); $exportPluginProperties->setExtension('doc'); $exportPluginProperties->setMimeType('application/vnd.ms-word'); $exportPluginProperties->setForceFile(true); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // what to dump (structure/data/both) $dumpWhat = new OptionsPropertyMainGroup( "dump_what", __('Dump table') ); // create primary items and add them to the group $leaf = new RadioPropertyItem("structure_or_data"); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $dumpWhat->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dumpWhat); // data options main group $dataOptions = new OptionsPropertyMainGroup( "dump_what", __('Data dump options') ); $dataOptions->setForce('structure'); // create primary items and add them to the group $leaf = new TextPropertyItem( "null", __('Replace NULL with:') ); $dataOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "columns", __('Put columns names in the first row') ); $dataOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dataOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { global $charset; return Export::outputHandler( ' ' ); } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { return Export::outputHandler(''); } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { if (empty($db_alias)) { $db_alias = $db; } return Export::outputHandler( '

' . __('Database') . ' ' . htmlspecialchars($db_alias) . '

' ); } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in HTML-Word format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { global $what; $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); if (!Export::outputHandler( '

' . __('Dumping data for table') . ' ' . htmlspecialchars($table_alias) . '

' ) ) { return false; } if (!Export::outputHandler( '' ) ) { return false; } // Gets the data from the database $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $fields_cnt = $GLOBALS['dbi']->numFields($result); // If required, get fields name at the first line if (isset($GLOBALS['htmlword_columns'])) { $schema_insert = ''; for ($i = 0; $i < $fields_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $col_as = stripslashes($col_as); $schema_insert .= ''; } // end for $schema_insert .= ''; if (!Export::outputHandler($schema_insert)) { return false; } } // end if // Format the data while ($row = $GLOBALS['dbi']->fetchRow($result)) { $schema_insert = ''; for ($j = 0; $j < $fields_cnt; $j++) { if (!isset($row[$j]) || is_null($row[$j])) { $value = $GLOBALS[$what . '_null']; } elseif ($row[$j] == '0' || $row[$j] != '') { $value = $row[$j]; } else { $value = ''; } $schema_insert .= ''; } // end for $schema_insert .= ''; if (!Export::outputHandler($schema_insert)) { return false; } } // end while $GLOBALS['dbi']->freeResult($result); return Export::outputHandler('
'); } /** * Returns a stand-in CREATE definition to resolve view dependencies * * @param string $db the database name * @param string $view the view name * @param string $crlf the end of line sequence * @param array $aliases Aliases of db/table/columns * * @return string resulting definition */ public function getTableDefStandIn($db, $view, $crlf, $aliases = array()) { $schema_insert = '' . '' . '' . '' . '' . '' . ''; /** * Get the unique keys in the view */ $unique_keys = array(); $keys = $GLOBALS['dbi']->getTableIndexes($db, $view); foreach ($keys as $key) { if ($key['Non_unique'] == 0) { $unique_keys[] = $key['Column_name']; } } $columns = $GLOBALS['dbi']->getColumns($db, $view); foreach ($columns as $column) { $col_as = $column['Field']; if (!empty($aliases[$db]['tables'][$view]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$view]['columns'][$col_as]; } $schema_insert .= $this->formatOneColumnDefinition( $column, $unique_keys, $col_as ); $schema_insert .= ''; } $schema_insert .= '
'; return $schema_insert; } /** * Returns $table's CREATE definition * * @param string $db the database name * @param string $table the table name * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * PMA_exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * at the end * @param bool $view whether we're handling a view * @param array $aliases Aliases of db/table/columns * * @return string resulting schema */ public function getTableDef( $db, $table, $do_relation, $do_comments, $do_mime, $view = false, array $aliases = array() ) { // set $cfgRelation here, because there is a chance that it's modified // since the class initialization global $cfgRelation; $schema_insert = ''; /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); // Check if we can use Relations list($res_rel, $have_rel) = $this->relation->getRelationsAndStatus( $do_relation && !empty($cfgRelation['relation']), $db, $table ); /** * Displays the table structure */ $schema_insert .= ''; $schema_insert .= ''; $schema_insert .= ''; $schema_insert .= ''; $schema_insert .= ''; $schema_insert .= ''; if ($do_relation && $have_rel) { $schema_insert .= ''; } if ($do_comments) { $schema_insert .= ''; $comments = $this->relation->getComments($db, $table); } if ($do_mime && $cfgRelation['mimework']) { $schema_insert .= ''; $mime_map = Transformations::getMIME($db, $table, true); } $schema_insert .= ''; $columns = $GLOBALS['dbi']->getColumns($db, $table); /** * Get the unique keys in the table */ $unique_keys = array(); $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); foreach ($keys as $key) { if ($key['Non_unique'] == 0) { $unique_keys[] = $key['Column_name']; } } foreach ($columns as $column) { $col_as = $column['Field']; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $schema_insert .= $this->formatOneColumnDefinition( $column, $unique_keys, $col_as ); $field_name = $column['Field']; if ($do_relation && $have_rel) { $schema_insert .= ''; } if ($do_comments && $cfgRelation['commwork']) { $schema_insert .= ''; } if ($do_mime && $cfgRelation['mimework']) { $schema_insert .= ''; } $schema_insert .= ''; } // end foreach $schema_insert .= '
' . htmlspecialchars( $this->getRelationString( $res_rel, $field_name, $db, $aliases ) ) . '' . (isset($comments[$field_name]) ? htmlspecialchars($comments[$field_name]) : '') . '' . (isset($mime_map[$field_name]) ? htmlspecialchars( str_replace('_', '/', $mime_map[$field_name]['mimetype']) ) : '') . '
'; return $schema_insert; } /** * Outputs triggers * * @param string $db database name * @param string $table table name * * @return string Formatted triggers list */ protected function getTriggers($db, $table) { $dump = ''; $dump .= ''; $dump .= ''; $dump .= ''; $dump .= ''; $dump .= ''; $dump .= ''; $triggers = $GLOBALS['dbi']->getTriggers($db, $table); foreach ($triggers as $trigger) { $dump .= ''; $dump .= '' . '' . '' . '' . ''; } $dump .= '
'; return $dump; } /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table', 'triggers', 'create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * PMA_exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $dump = ''; switch ($export_mode) { case 'create_table': $dump .= '

' . __('Table structure for table') . ' ' . htmlspecialchars($table_alias) . '

'; $dump .= $this->getTableDef( $db, $table, $do_relation, $do_comments, $do_mime, false, $aliases ); break; case 'triggers': $dump = ''; $triggers = $GLOBALS['dbi']->getTriggers($db, $table); if ($triggers) { $dump .= '

' . __('Triggers') . ' ' . htmlspecialchars($table_alias) . '

'; $dump .= $this->getTriggers($db, $table); } break; case 'create_view': $dump .= '

' . __('Structure for view') . ' ' . htmlspecialchars($table_alias) . '

'; $dump .= $this->getTableDef( $db, $table, $do_relation, $do_comments, $do_mime, true, $aliases ); break; case 'stand_in': $dump .= '

' . __('Stand-in structure for view') . ' ' . htmlspecialchars($table_alias) . '

'; // export a stand-in definition to resolve view dependencies $dump .= $this->getTableDefStandIn($db, $table, $crlf, $aliases); } // end switch return Export::outputHandler($dump); } /** * Formats the definition for one column * * @param array $column info about this column * @param array $unique_keys unique keys of the table * @param string $col_alias Column Alias * * @return string Formatted column definition */ protected function formatOneColumnDefinition( array $column, array $unique_keys, $col_alias = '' ) { if (empty($col_alias)) { $col_alias = $column['Field']; } $definition = ''; $extracted_columnspec = Util::extractColumnSpec($column['Type']); $type = htmlspecialchars($extracted_columnspec['print_type']); if (empty($type)) { $type = ' '; } if (!isset($column['Default'])) { if ($column['Null'] != 'NO') { $column['Default'] = 'NULL'; } } $fmt_pre = ''; $fmt_post = ''; if (in_array($column['Field'], $unique_keys)) { $fmt_pre = '' . $fmt_pre; $fmt_post = $fmt_post . ''; } if ($column['Key'] == 'PRI') { $fmt_pre = '' . $fmt_pre; $fmt_post = $fmt_post . ''; } $definition .= '' . $fmt_pre . htmlspecialchars($col_alias) . $fmt_post . ''; $definition .= '' . htmlspecialchars($type) . ''; $definition .= '' . (($column['Null'] == '' || $column['Null'] == 'NO') ? __('No') : __('Yes')) . ''; $definition .= '' . htmlspecialchars(isset($column['Default']) ? $column['Default'] : '') . ''; return $definition; } } db/login/libraries/classes/Plugins/Export/ExportLatex.php000064400000055024151502156010017546 0ustar00initSpecificVariables(); $this->setProperties(); } /** * Initialize the local variables that are used for export Latex * * @return void */ protected function initSpecificVariables() { /* Messages used in default captions */ $GLOBALS['strLatexContent'] = __('Content of table @TABLE@'); $GLOBALS['strLatexContinued'] = __('(continued)'); $GLOBALS['strLatexStructure'] = __('Structure of table @TABLE@'); } /** * Sets the export Latex properties * * @return void */ protected function setProperties() { global $plugin_param; $hide_structure = false; if ($plugin_param['export_type'] == 'table' && !$plugin_param['single_table'] ) { $hide_structure = true; } $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('LaTeX'); $exportPluginProperties->setExtension('tex'); $exportPluginProperties->setMimeType('application/x-tex'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new BoolPropertyItem( "caption", __('Include table caption') ); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // what to dump (structure/data/both) main group $dumpWhat = new OptionsPropertyMainGroup( "dump_what", __('Dump table') ); // create primary items and add them to the group $leaf = new RadioPropertyItem("structure_or_data"); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data'), ) ); $dumpWhat->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dumpWhat); // structure options main group if (!$hide_structure) { $structureOptions = new OptionsPropertyMainGroup( "structure", __('Object creation options') ); $structureOptions->setForce('data'); // create primary items and add them to the group $leaf = new TextPropertyItem( "structure_caption", __('Table caption:') ); $leaf->setDoc('faq6-27'); $structureOptions->addProperty($leaf); $leaf = new TextPropertyItem( "structure_continued_caption", __('Table caption (continued):') ); $leaf->setDoc('faq6-27'); $structureOptions->addProperty($leaf); $leaf = new TextPropertyItem( "structure_label", __('Label key:') ); $leaf->setDoc('faq6-27'); $structureOptions->addProperty($leaf); if (!empty($GLOBALS['cfgRelation']['relation'])) { $leaf = new BoolPropertyItem( "relation", __('Display foreign key relationships') ); $structureOptions->addProperty($leaf); } $leaf = new BoolPropertyItem( "comments", __('Display comments') ); $structureOptions->addProperty($leaf); if (!empty($GLOBALS['cfgRelation']['mimework'])) { $leaf = new BoolPropertyItem( "mime", __('Display MIME types') ); $structureOptions->addProperty($leaf); } // add the main group to the root group $exportSpecificOptions->addProperty($structureOptions); } // data options main group $dataOptions = new OptionsPropertyMainGroup( "data", __('Data dump options') ); $dataOptions->setForce('structure'); // create primary items and add them to the group $leaf = new BoolPropertyItem( "columns", __('Put columns names in the first row:') ); $dataOptions->addProperty($leaf); $leaf = new TextPropertyItem( "data_caption", __('Table caption:') ); $leaf->setDoc('faq6-27'); $dataOptions->addProperty($leaf); $leaf = new TextPropertyItem( "data_continued_caption", __('Table caption (continued):') ); $leaf->setDoc('faq6-27'); $dataOptions->addProperty($leaf); $leaf = new TextPropertyItem( "data_label", __('Label key:') ); $leaf->setDoc('faq6-27'); $dataOptions->addProperty($leaf); $leaf = new TextPropertyItem( 'null', __('Replace NULL with:') ); $dataOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($dataOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { global $crlf; global $cfg; $head = '% phpMyAdmin LaTeX Dump' . $crlf . '% version ' . PMA_VERSION . $crlf . '% https://www.phpmyadmin.net/' . $crlf . '%' . $crlf . '% ' . __('Host:') . ' ' . $cfg['Server']['host']; if (!empty($cfg['Server']['port'])) { $head .= ':' . $cfg['Server']['port']; } $head .= $crlf . '% ' . __('Generation Time:') . ' ' . Util::localisedDate() . $crlf . '% ' . __('Server version:') . ' ' . $GLOBALS['dbi']->getVersionString() . $crlf . '% ' . __('PHP Version:') . ' ' . phpversion() . $crlf; return Export::outputHandler($head); } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { if (empty($db_alias)) { $db_alias = $db; } global $crlf; $head = '% ' . $crlf . '% ' . __('Database:') . ' ' . '\'' . $db_alias . '\'' . $crlf . '% ' . $crlf; return Export::outputHandler($head); } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in JSON format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $result = $GLOBALS['dbi']->tryQuery( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $columns_cnt = $GLOBALS['dbi']->numFields($result); $columns = array(); $columns_alias = array(); for ($i = 0; $i < $columns_cnt; $i++) { $columns[$i] = $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $columns_alias[$i] = $col_as; } $buffer = $crlf . '%' . $crlf . '% ' . __('Data:') . ' ' . $table_alias . $crlf . '%' . $crlf . ' \\begin{longtable}{|'; for ($index = 0; $index < $columns_cnt; $index++) { $buffer .= 'l|'; } $buffer .= '} ' . $crlf; $buffer .= ' \\hline \\endhead \\hline \\endfoot \\hline ' . $crlf; if (isset($GLOBALS['latex_caption'])) { $buffer .= ' \\caption{' . Util::expandUserString( $GLOBALS['latex_data_caption'], array( 'texEscape', get_class($this), ), array('table' => $table_alias, 'database' => $db_alias) ) . '} \\label{' . Util::expandUserString( $GLOBALS['latex_data_label'], null, array('table' => $table_alias, 'database' => $db_alias) ) . '} \\\\'; } if (!Export::outputHandler($buffer)) { return false; } // show column names if (isset($GLOBALS['latex_columns'])) { $buffer = '\\hline '; for ($i = 0; $i < $columns_cnt; $i++) { $buffer .= '\\multicolumn{1}{|c|}{\\textbf{' . self::texEscape(stripslashes($columns_alias[$i])) . '}} & '; } $buffer = mb_substr($buffer, 0, -2) . '\\\\ \\hline \hline '; if (!Export::outputHandler($buffer . ' \\endfirsthead ' . $crlf)) { return false; } if (isset($GLOBALS['latex_caption'])) { if (!Export::outputHandler( '\\caption{' . Util::expandUserString( $GLOBALS['latex_data_continued_caption'], array( 'texEscape', get_class($this), ), array('table' => $table_alias, 'database' => $db_alias) ) . '} \\\\ ' ) ) { return false; } } if (!Export::outputHandler($buffer . '\\endhead \\endfoot' . $crlf)) { return false; } } else { if (!Export::outputHandler('\\\\ \hline')) { return false; } } // print the whole table while ($record = $GLOBALS['dbi']->fetchAssoc($result)) { $buffer = ''; // print each row for ($i = 0; $i < $columns_cnt; $i++) { if ((!function_exists('is_null') || !is_null($record[$columns[$i]])) && isset($record[$columns[$i]]) ) { $column_value = self::texEscape( stripslashes($record[$columns[$i]]) ); } else { $column_value = $GLOBALS['latex_null']; } // last column ... no need for & character if ($i == ($columns_cnt - 1)) { $buffer .= $column_value; } else { $buffer .= $column_value . " & "; } } $buffer .= ' \\\\ \\hline ' . $crlf; if (!Export::outputHandler($buffer)) { return false; } } $buffer = ' \\end{longtable}' . $crlf; if (!Export::outputHandler($buffer)) { return false; } $GLOBALS['dbi']->freeResult($result); return true; } // end getTableLaTeX /** * Outputs table's structure * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $export_mode 'create_table', 'triggers', 'create_view', * 'stand_in' * @param string $export_type 'server', 'database', 'table' * @param bool $do_relation whether to include relation comments * @param bool $do_comments whether to include the pmadb-style column * comments as comments in the structure; * this is deprecated but the parameter is * left here because export.php calls * exportStructure() also for other * export types which use this parameter * @param bool $do_mime whether to include mime comments * @param bool $dates whether to include creation/update/check dates * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportStructure( $db, $table, $crlf, $error_url, $export_mode, $export_type, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); global $cfgRelation; /* We do not export triggers */ if ($export_mode == 'triggers') { return true; } /** * Get the unique keys in the table */ $unique_keys = array(); $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); foreach ($keys as $key) { if ($key['Non_unique'] == 0) { $unique_keys[] = $key['Column_name']; } } /** * Gets fields properties */ $GLOBALS['dbi']->selectDb($db); // Check if we can use Relations list($res_rel, $have_rel) = $this->relation->getRelationsAndStatus( $do_relation && !empty($cfgRelation['relation']), $db, $table ); /** * Displays the table structure */ $buffer = $crlf . '%' . $crlf . '% ' . __('Structure:') . ' ' . $table_alias . $crlf . '%' . $crlf . ' \\begin{longtable}{'; if (!Export::outputHandler($buffer)) { return false; } $alignment = '|l|c|c|c|'; if ($do_relation && $have_rel) { $alignment .= 'l|'; } if ($do_comments) { $alignment .= 'l|'; } if ($do_mime && $cfgRelation['mimework']) { $alignment .= 'l|'; } $buffer = $alignment . '} ' . $crlf; $header = ' \\hline '; $header .= '\\multicolumn{1}{|c|}{\\textbf{' . __('Column') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Type') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Null') . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Default') . '}}'; if ($do_relation && $have_rel) { $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Links to') . '}}'; } if ($do_comments) { $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Comments') . '}}'; $comments = $this->relation->getComments($db, $table); } if ($do_mime && $cfgRelation['mimework']) { $header .= ' & \\multicolumn{1}{|c|}{\\textbf{MIME}}'; $mime_map = Transformations::getMIME($db, $table, true); } // Table caption for first page and label if (isset($GLOBALS['latex_caption'])) { $buffer .= ' \\caption{' . Util::expandUserString( $GLOBALS['latex_structure_caption'], array( 'texEscape', get_class($this), ), array('table' => $table_alias, 'database' => $db_alias) ) . '} \\label{' . Util::expandUserString( $GLOBALS['latex_structure_label'], null, array('table' => $table_alias, 'database' => $db_alias) ) . '} \\\\' . $crlf; } $buffer .= $header . ' \\\\ \\hline \\hline' . $crlf . '\\endfirsthead' . $crlf; // Table caption on next pages if (isset($GLOBALS['latex_caption'])) { $buffer .= ' \\caption{' . Util::expandUserString( $GLOBALS['latex_structure_continued_caption'], array( 'texEscape', get_class($this), ), array('table' => $table_alias, 'database' => $db_alias) ) . '} \\\\ ' . $crlf; } $buffer .= $header . ' \\\\ \\hline \\hline \\endhead \\endfoot ' . $crlf; if (!Export::outputHandler($buffer)) { return false; } $fields = $GLOBALS['dbi']->getColumns($db, $table); foreach ($fields as $row) { $extracted_columnspec = Util::extractColumnSpec($row['Type']); $type = $extracted_columnspec['print_type']; if (empty($type)) { $type = ' '; } if (!isset($row['Default'])) { if ($row['Null'] != 'NO') { $row['Default'] = 'NULL'; } } $field_name = $col_as = $row['Field']; if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $local_buffer = $col_as . "\000" . $type . "\000" . (($row['Null'] == '' || $row['Null'] == 'NO') ? __('No') : __('Yes')) . "\000" . (isset($row['Default']) ? $row['Default'] : ''); if ($do_relation && $have_rel) { $local_buffer .= "\000"; $local_buffer .= $this->getRelationString( $res_rel, $field_name, $db, $aliases ); } if ($do_comments && $cfgRelation['commwork']) { $local_buffer .= "\000"; if (isset($comments[$field_name])) { $local_buffer .= $comments[$field_name]; } } if ($do_mime && $cfgRelation['mimework']) { $local_buffer .= "\000"; if (isset($mime_map[$field_name])) { $local_buffer .= str_replace( '_', '/', $mime_map[$field_name]['mimetype'] ); } } $local_buffer = self::texEscape($local_buffer); if ($row['Key'] == 'PRI') { $pos = mb_strpos($local_buffer, "\000"); $local_buffer = '\\textit{' . mb_substr($local_buffer, 0, $pos) . '}' . mb_substr($local_buffer, $pos); } if (in_array($field_name, $unique_keys)) { $pos = mb_strpos($local_buffer, "\000"); $local_buffer = '\\textbf{' . mb_substr($local_buffer, 0, $pos) . '}' . mb_substr($local_buffer, $pos); } $buffer = str_replace("\000", ' & ', $local_buffer); $buffer .= ' \\\\ \\hline ' . $crlf; if (!Export::outputHandler($buffer)) { return false; } } // end while $buffer = ' \\end{longtable}' . $crlf; return Export::outputHandler($buffer); } // end of the 'exportStructure' method /** * Escapes some special characters for use in TeX/LaTeX * * @param string $string the string to convert * * @return string the converted string with escape codes */ public static function texEscape($string) { $escape = array('$', '%', '{', '}', '&', '#', '_', '^'); $cnt_escape = count($escape); for ($k = 0; $k < $cnt_escape; $k++) { $string = str_replace($escape[$k], '\\' . $escape[$k], $string); } return $string; } } db/login/libraries/classes/Plugins/Export/ExportYaml.php000064400000014176151502156010017376 0ustar00setProperties(); } /** * Sets the export YAML properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('YAML'); $exportPluginProperties->setExtension('yml'); $exportPluginProperties->setMimeType('text/yaml'); $exportPluginProperties->setForceFile(true); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new HiddenPropertyItem("structure_or_data"); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { Export::outputHandler( '%YAML 1.1' . $GLOBALS['crlf'] . '---' . $GLOBALS['crlf'] ); return true; } /** * Outputs export footer * * @return bool Whether it succeeded */ public function exportFooter() { Export::outputHandler('...' . $GLOBALS['crlf']); return true; } /** * Outputs database header * * @param string $db Database name * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBHeader($db, $db_alias = '') { return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in JSON format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $columns_cnt = $GLOBALS['dbi']->numFields($result); $columns = array(); for ($i = 0; $i < $columns_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $columns[$i] = stripslashes($col_as); } $buffer = ''; $record_cnt = 0; while ($record = $GLOBALS['dbi']->fetchRow($result)) { $record_cnt++; // Output table name as comment if this is the first record of the table if ($record_cnt == 1) { $buffer = '# ' . $db_alias . '.' . $table_alias . $crlf; $buffer .= '-' . $crlf; } else { $buffer = '-' . $crlf; } for ($i = 0; $i < $columns_cnt; $i++) { if (!isset($record[$i])) { continue; } if (is_null($record[$i])) { $buffer .= ' ' . $columns[$i] . ': null' . $crlf; continue; } if (is_numeric($record[$i])) { $buffer .= ' ' . $columns[$i] . ': ' . $record[$i] . $crlf; continue; } $record[$i] = str_replace( array('\\', '"', "\n", "\r"), array('\\\\', '\"', '\n', '\r'), $record[$i] ); $buffer .= ' ' . $columns[$i] . ': "' . $record[$i] . '"' . $crlf; } if (!Export::outputHandler($buffer)) { return false; } } $GLOBALS['dbi']->freeResult($result); return true; } // end getTableYAML } db/login/libraries/classes/Plugins/Export/ExportPhparray.php000064400000016305151502156010020256 0ustar00setProperties(); } /** * Sets the export PHP Array properties * * @return void */ protected function setProperties() { $exportPluginProperties = new ExportPluginProperties(); $exportPluginProperties->setText('PHP array'); $exportPluginProperties->setExtension('php'); $exportPluginProperties->setMimeType('text/plain'); $exportPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $exportPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new HiddenPropertyItem("structure_or_data"); $generalOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($generalOptions); // set the options for the export plugin property item $exportPluginProperties->setOptions($exportSpecificOptions); $this->properties = $exportPluginProperties; } /** * Removes end of comment from a string * * @param string $string String to replace * * @return string */ public function commentString($string) { return strtr($string, '*/', '-'); } /** * Outputs export header * * @return bool Whether it succeeded */ public function exportHeader() { Export::outputHandler( 'commentString(Util::backquote($db_alias)) . $GLOBALS['crlf'] . ' */' . $GLOBALS['crlf'] ); return true; } /** * Outputs database footer * * @param string $db Database name * * @return bool Whether it succeeded */ public function exportDBFooter($db) { return true; } /** * Outputs CREATE DATABASE statement * * @param string $db Database name * @param string $export_type 'server', 'database', 'table' * @param string $db_alias Aliases of db * * @return bool Whether it succeeded */ public function exportDBCreate($db, $export_type, $db_alias = '') { return true; } /** * Outputs the content of a table in PHP array format * * @param string $db database name * @param string $table table name * @param string $crlf the end of line sequence * @param string $error_url the url to go back in case of error * @param string $sql_query SQL query for obtaining data * @param array $aliases Aliases of db/table/columns * * @return bool Whether it succeeded */ public function exportData( $db, $table, $crlf, $error_url, $sql_query, array $aliases = array() ) { $db_alias = $db; $table_alias = $table; $this->initAlias($aliases, $db_alias, $table_alias); $result = $GLOBALS['dbi']->query( $sql_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_UNBUFFERED ); $columns_cnt = $GLOBALS['dbi']->numFields($result); $columns = array(); for ($i = 0; $i < $columns_cnt; $i++) { $col_as = $GLOBALS['dbi']->fieldName($result, $i); if (!empty($aliases[$db]['tables'][$table]['columns'][$col_as])) { $col_as = $aliases[$db]['tables'][$table]['columns'][$col_as]; } $columns[$i] = stripslashes($col_as); } // fix variable names (based on // https://www.php.net/manual/en/language.variables.basics.php) if (!preg_match( '/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $table_alias ) ) { // fix invalid characters in variable names by replacing them with // underscores $tablefixed = preg_replace( '/[^a-zA-Z0-9_\x7f-\xff]/', '_', $table_alias ); // variable name must not start with a number or dash... if (preg_match('/^[a-zA-Z_\x7f-\xff]/', $tablefixed) === 0) { $tablefixed = '_' . $tablefixed; } } else { $tablefixed = $table; } $buffer = ''; $record_cnt = 0; // Output table name as comment $buffer .= $crlf . '/* ' . $this->commentString(Util::backquote($db_alias)) . '.' . $this->commentString(Util::backquote($table_alias)) . ' */' . $crlf; $buffer .= '$' . $tablefixed . ' = array('; while ($record = $GLOBALS['dbi']->fetchRow($result)) { $record_cnt++; if ($record_cnt == 1) { $buffer .= $crlf . ' array('; } else { $buffer .= ',' . $crlf . ' array('; } for ($i = 0; $i < $columns_cnt; $i++) { $buffer .= var_export($columns[$i], true) . " => " . var_export($record[$i], true) . (($i + 1 >= $columns_cnt) ? '' : ','); } $buffer .= ')'; } $buffer .= $crlf . ');' . $crlf; if (!Export::outputHandler($buffer)) { return false; } $GLOBALS['dbi']->freeResult($result); return true; } } db/login/libraries/classes/Plugins/AuthenticationPlugin.php000064400000023013151502156010020135 0ustar00setSessionAccessTime(); $cfg['Server']['user'] = $this->user; $cfg['Server']['password'] = $this->password; return true; } /** * Stores user credentials after successful login. * * @return void */ public function rememberCredentials() { } /** * User is not allowed to login to MySQL -> authentication failed * * @param string $failure String describing why authentication has failed * * @return void */ public function showFailure($failure) { Logging::logUser($this->user, $failure); } /** * Perform logout * * @return void */ public function logOut() { /** @var Config $PMA_Config */ global $PMA_Config; /* Obtain redirect URL (before doing logout) */ if (! empty($GLOBALS['cfg']['Server']['LogoutURL'])) { $redirect_url = $GLOBALS['cfg']['Server']['LogoutURL']; } else { $redirect_url = $this->getLoginFormURL(); } /* Clear credentials */ $this->user = ''; $this->password = ''; /* * Get a logged-in server count in case of LoginCookieDeleteAll is disabled. */ $server = 0; if ($GLOBALS['cfg']['LoginCookieDeleteAll'] === false && $GLOBALS['cfg']['Server']['auth_type'] == 'cookie' ) { foreach ($GLOBALS['cfg']['Servers'] as $key => $val) { if ($PMA_Config->issetCookie('pmaAuth-' . $key)) { $server = $key; } } } if ($server === 0) { /* delete user's choices that were stored in session */ if (! defined('TESTSUITE')) { session_unset(); session_destroy(); } /* Redirect to login form (or configured URL) */ Core::sendHeaderLocation($redirect_url); } else { /* Redirect to other autenticated server */ $_SESSION['partial_logout'] = true; Core::sendHeaderLocation( './index.php' . Url::getCommonRaw(array('server' => $server)) ); } } /** * Returns URL for login form. * * @return string */ public function getLoginFormURL() { return './index.php'; } /** * Returns error message for failed authentication. * * @param string $failure String describing why authentication has failed * * @return string */ public function getErrorMessage($failure) { if ($failure == 'empty-denied') { return __( 'Login without a password is forbidden by configuration' . ' (see AllowNoPassword)' ); } elseif ($failure == 'root-denied' || $failure == 'allow-denied') { return __('Access denied!'); } elseif ($failure == 'no-activity') { return sprintf( __('No activity within %s seconds; please log in again.'), intval($GLOBALS['cfg']['LoginCookieValidity']) ); } $dbi_error = $GLOBALS['dbi']->getError(); if (!empty($dbi_error)) { return htmlspecialchars($dbi_error); } elseif (isset($GLOBALS['errno'])) { return '#' . $GLOBALS['errno'] . ' ' . __('Cannot log in to the MySQL server'); } return __('Cannot log in to the MySQL server'); } /** * Callback when user changes password. * * @param string $password New password to set * * @return void */ public function handlePasswordChange($password) { } /** * Store session access time in session. * * Tries to workaround PHP 5 session garbage collection which * looks at the session file's last modified time * * @return void */ public function setSessionAccessTime() { if (isset($_REQUEST['guid'])) { $guid = (string)$_REQUEST['guid']; } else { $guid = 'default'; } if (isset($_REQUEST['access_time'])) { // Ensure access_time is in range <0, LoginCookieValidity + 1> // to avoid excessive extension of validity. // // Negative values can cause session expiry extension // Too big values can cause overflow and lead to same $time = time() - min(max(0, intval($_REQUEST['access_time'])), $GLOBALS['cfg']['LoginCookieValidity'] + 1); } else { $time = time(); } $_SESSION['browser_access_time'][$guid] = $time; } /** * High level authentication interface * * Gets the credentials or shows login form if necessary * * @return void */ public function authenticate() { $success = $this->readCredentials(); /* Show login form (this exits) */ if (! $success) { /* Force generating of new session */ Session::secure(); $this->showLoginForm(); } /* Store credentials (eg. in cookies) */ $this->storeCredentials(); /* Check allow/deny rules */ $this->checkRules(); } /** * Check configuration defined restrictions for authentication * * @return void */ public function checkRules() { global $cfg; // Check IP-based Allow/Deny rules as soon as possible to reject the // user based on mod_access in Apache if (isset($cfg['Server']['AllowDeny']) && isset($cfg['Server']['AllowDeny']['order']) ) { $allowDeny_forbidden = false; // default if ($cfg['Server']['AllowDeny']['order'] == 'allow,deny') { $allowDeny_forbidden = true; if (IpAllowDeny::allowDeny('allow')) { $allowDeny_forbidden = false; } if (IpAllowDeny::allowDeny('deny')) { $allowDeny_forbidden = true; } } elseif ($cfg['Server']['AllowDeny']['order'] == 'deny,allow') { if (IpAllowDeny::allowDeny('deny')) { $allowDeny_forbidden = true; } if (IpAllowDeny::allowDeny('allow')) { $allowDeny_forbidden = false; } } elseif ($cfg['Server']['AllowDeny']['order'] == 'explicit') { if (IpAllowDeny::allowDeny('allow') && ! IpAllowDeny::allowDeny('deny')) { $allowDeny_forbidden = false; } else { $allowDeny_forbidden = true; } } // end if ... elseif ... elseif // Ejects the user if banished if ($allowDeny_forbidden) { $this->showFailure('allow-denied'); } } // end if // is root allowed? if (! $cfg['Server']['AllowRoot'] && $cfg['Server']['user'] == 'root') { $this->showFailure('root-denied'); } // is a login without password allowed? if (! $cfg['Server']['AllowNoPassword'] && $cfg['Server']['password'] === '' ) { $this->showFailure('empty-denied'); } } /** * Checks whether two factor authentication is active * for given user and performs it. * * @return void */ public function checkTwoFactor() { $twofactor = new TwoFactor($this->user); /* Do we need to show the form? */ if ($twofactor->check()) { return; } $response = Response::getInstance(); if ($response->loginPage()) { if (defined('TESTSUITE')) { return true; } else { exit; } } echo Template::get('login/header')->render(['theme' => $GLOBALS['PMA_Theme']]); Message::rawNotice( __('You have enabled two factor authentication, please confirm your login.') )->display(); echo Template::get('login/twofactor')->render([ 'form' => $twofactor->render(), 'show_submit' => $twofactor->showSubmit, ]); echo Template::get('login/footer')->render(); echo Config::renderFooter(); if (! defined('TESTSUITE')) { exit; } } } db/login/libraries/classes/Plugins/UploadInterface.php000064400000001160151502156010017043 0ustar00upload plugins * * @package PhpMyAdmin */ namespace PhpMyAdmin\Plugins; /** * Provides a common interface that will have to implemented by all of the * import->upload plugins. * * @package PhpMyAdmin */ interface UploadInterface { /** * Gets the specific upload ID Key * * @return string ID Key */ public static function getIdKey(); /** * Returns upload status. * * @param string $id upload id * * @return array|null */ public static function getUploadStatus($id); } db/login/libraries/classes/Plugins/Auth/AuthenticationHttp.php000064400000015460151502156010020526 0ustar00isAjax()) { $response->setRequestStatus(false); // reload_flag removes the token parameter from the URL and reloads $response->addJSON('reload_flag', '1'); if (defined('TESTSUITE')) { return true; } else { exit; } } return $this->authForm(); } /** * Displays authentication form * * @return boolean */ public function authForm() { if (empty($GLOBALS['cfg']['Server']['auth_http_realm'])) { if (empty($GLOBALS['cfg']['Server']['verbose'])) { $server_message = $GLOBALS['cfg']['Server']['host']; } else { $server_message = $GLOBALS['cfg']['Server']['verbose']; } $realm_message = 'phpMyAdmin ' . $server_message; } else { $realm_message = $GLOBALS['cfg']['Server']['auth_http_realm']; } $response = Response::getInstance(); // remove non US-ASCII to respect RFC2616 $realm_message = preg_replace('/[^\x20-\x7e]/i', '', $realm_message); $response->header('WWW-Authenticate: Basic realm="' . $realm_message . '"'); $response->setHttpResponseCode(401); /* HTML header */ $footer = $response->getFooter(); $footer->setMinimal(); $header = $response->getHeader(); $header->setTitle(__('Access denied!')); $header->disableMenuAndConsole(); $header->setBodyId('loginform'); $response->addHTML('

'); $response->addHTML(sprintf(__('Welcome to %s'), ' phpMyAdmin')); $response->addHTML('

'); $response->addHTML('

'); $response->addHTML( Message::error( __('Wrong username/password. Access denied.') ) ); $response->addHTML('

'); $response->addHTML(Config::renderFooter()); if (!defined('TESTSUITE')) { exit; } else { return false; } } /** * Gets authentication credentials * * @return boolean whether we get authentication settings or not */ public function readCredentials() { // Grabs the $PHP_AUTH_USER variable if (isset($GLOBALS['PHP_AUTH_USER'])) { $this->user = $GLOBALS['PHP_AUTH_USER']; } if (empty($this->user)) { if (Core::getenv('PHP_AUTH_USER')) { $this->user = Core::getenv('PHP_AUTH_USER'); } elseif (Core::getenv('REMOTE_USER')) { // CGI, might be encoded, see below $this->user = Core::getenv('REMOTE_USER'); } elseif (Core::getenv('REDIRECT_REMOTE_USER')) { // CGI, might be encoded, see below $this->user = Core::getenv('REDIRECT_REMOTE_USER'); } elseif (Core::getenv('AUTH_USER')) { // WebSite Professional $this->user = Core::getenv('AUTH_USER'); } elseif (Core::getenv('HTTP_AUTHORIZATION')) { // IIS, might be encoded, see below $this->user = Core::getenv('HTTP_AUTHORIZATION'); } elseif (Core::getenv('Authorization')) { // FastCGI, might be encoded, see below $this->user = Core::getenv('Authorization'); } } // Grabs the $PHP_AUTH_PW variable if (isset($GLOBALS['PHP_AUTH_PW'])) { $this->password = $GLOBALS['PHP_AUTH_PW']; } if (empty($this->password)) { if (Core::getenv('PHP_AUTH_PW')) { $this->password = Core::getenv('PHP_AUTH_PW'); } elseif (Core::getenv('REMOTE_PASSWORD')) { // Apache/CGI $this->password = Core::getenv('REMOTE_PASSWORD'); } elseif (Core::getenv('AUTH_PASSWORD')) { // WebSite Professional $this->password = Core::getenv('AUTH_PASSWORD'); } } // Sanitize empty password login if (is_null($this->password)) { $this->password = ''; } // Avoid showing the password in phpinfo()'s output unset($GLOBALS['PHP_AUTH_PW']); unset($_SERVER['PHP_AUTH_PW']); // Decode possibly encoded information (used by IIS/CGI/FastCGI) // (do not use explode() because a user might have a colon in his password if (strcmp(substr($this->user, 0, 6), 'Basic ') == 0) { $usr_pass = base64_decode(substr($this->user, 6)); if (!empty($usr_pass)) { $colon = strpos($usr_pass, ':'); if ($colon) { $this->user = substr($usr_pass, 0, $colon); $this->password = substr($usr_pass, $colon + 1); } unset($colon); } unset($usr_pass); } // sanitize username $this->user = Core::sanitizeMySQLUser($this->user); // User logged out -> ensure the new username is not the same $old_usr = isset($_REQUEST['old_usr']) ? $_REQUEST['old_usr'] : ''; if (! empty($old_usr) && (isset($this->user) && hash_equals($old_usr, $this->user)) ) { $this->user = ''; } // Returns whether we get authentication settings or not return !empty($this->user); } /** * User is not allowed to login to MySQL -> authentication failed * * @param string $failure String describing why authentication has failed * * @return void */ public function showFailure($failure) { parent::showFailure($failure); $error = $GLOBALS['dbi']->getError(); if ($error && $GLOBALS['errno'] != 1045) { Core::fatalError($error); } else { $this->authForm(); } } /** * Returns URL for login form. * * @return string */ public function getLoginFormURL() { return './index.php?old_usr=' . $this->user; } } db/login/libraries/classes/Plugins/Auth/AuthenticationCookie.php000064400000067540151502156010021026 0ustar00_use_openssl = ! class_exists('phpseclib\Crypt\Random'); } /** * Forces (not)using of openSSL * * @param boolean $use The flag * * @return void */ public function setUseOpenSSL($use) { $this->_use_openssl = $use; } /** * Displays authentication form * * this function MUST exit/quit the application * * @global string $conn_error the last connection error * * @return boolean|void */ public function showLoginForm() { global $conn_error; $response = Response::getInstance(); if ($response->loginPage()) { if (defined('TESTSUITE')) { return true; } else { exit; } } // No recall if blowfish secret is not configured as it would produce // garbage if ($GLOBALS['cfg']['LoginCookieRecall'] && ! empty($GLOBALS['cfg']['blowfish_secret']) ) { $default_user = $this->user; $default_server = $GLOBALS['pma_auth_server']; $autocomplete = ''; } else { $default_user = ''; $default_server = ''; // skip the IE autocomplete feature. $autocomplete = ' autocomplete="off"'; } echo Template::get('login/header')->render(['theme' => $GLOBALS['PMA_Theme']]); if ($GLOBALS['cfg']['DBG']['demo']) { echo '
'; echo '' , __('phpMyAdmin Demo Server') , ''; printf( __( 'You are using the demo server. You can do anything here, but ' . 'please do not change root, debian-sys-maint and pma users. ' . 'More information is available at %s.' ), 'demo.phpmyadmin.net' ); echo '
'; } // Show error message if (! empty($conn_error)) { Message::rawError($conn_error)->display(); } elseif (isset($_GET['session_expired']) && intval($_GET['session_expired']) == 1 ) { Message::rawError( __('Your session has expired. Please log in again.') )->display(); } // Displays the languages form $language_manager = LanguageManager::getInstance(); if (empty($GLOBALS['cfg']['Lang']) && $language_manager->hasChoice()) { echo "
"; // use fieldset, don't show doc link echo $language_manager->getSelectorDisplay(true, false); echo '
'; } echo '
'; if ($GLOBALS['error_handler']->hasDisplayErrors()) { echo '
'; $GLOBALS['error_handler']->dispErrors(); echo '
'; } echo Template::get('login/footer')->render(); echo Config::renderFooter(); if (! defined('TESTSUITE')) { exit; } else { return true; } } /** * Gets authentication credentials * * this function DOES NOT check authentication - it just checks/provides * authentication credentials required to connect to the MySQL server * usually with $GLOBALS['dbi']->connect() * * it returns false if something is missing - which usually leads to * showLoginForm() which displays login form * * it returns true if all seems ok which usually leads to auth_set_user() * * it directly switches to showFailure() if user inactivity timeout is reached * * @return boolean whether we get authentication settings or not */ public function readCredentials() { global $conn_error; // Initialization /** * @global $GLOBALS['pma_auth_server'] the user provided server to * connect to */ $GLOBALS['pma_auth_server'] = ''; $this->user = $this->password = ''; $GLOBALS['from_cookie'] = false; if (isset($_POST['pma_username']) && strlen($_POST['pma_username']) > 0) { // Verify Captcha if it is required. if (! empty($GLOBALS['cfg']['CaptchaLoginPrivateKey']) && ! empty($GLOBALS['cfg']['CaptchaLoginPublicKey']) ) { if (! empty($_POST["g-recaptcha-response"])) { if (function_exists('curl_init')) { $reCaptcha = new ReCaptcha\ReCaptcha( $GLOBALS['cfg']['CaptchaLoginPrivateKey'], new ReCaptcha\RequestMethod\CurlPost() ); } elseif (ini_get('allow_url_fopen')) { $reCaptcha = new ReCaptcha\ReCaptcha( $GLOBALS['cfg']['CaptchaLoginPrivateKey'], new ReCaptcha\RequestMethod\Post() ); } else { $reCaptcha = new ReCaptcha\ReCaptcha( $GLOBALS['cfg']['CaptchaLoginPrivateKey'], new ReCaptcha\RequestMethod\SocketPost() ); } // verify captcha status. $resp = $reCaptcha->verify( $_POST["g-recaptcha-response"], Core::getIp() ); // Check if the captcha entered is valid, if not stop the login. if ($resp == null || ! $resp->isSuccess()) { $codes = $resp->getErrorCodes(); if (in_array('invalid-json', $codes)) { $conn_error = __('Failed to connect to the reCAPTCHA service!'); } else { $conn_error = __('Entered captcha is wrong, try again!'); } return false; } } else { $conn_error = __('Missing reCAPTCHA verification, maybe it has been blocked by adblock?'); return false; } } // The user just logged in $this->user = Core::sanitizeMySQLUser($_POST['pma_username']); $this->password = isset($_POST['pma_password']) ? $_POST['pma_password'] : ''; if ($GLOBALS['cfg']['AllowArbitraryServer'] && isset($_REQUEST['pma_servername']) ) { if ($GLOBALS['cfg']['ArbitraryServerRegexp']) { $parts = explode(' ', $_REQUEST['pma_servername']); if (count($parts) == 2) { $tmp_host = $parts[0]; } else { $tmp_host = $_REQUEST['pma_servername']; } $match = preg_match( $GLOBALS['cfg']['ArbitraryServerRegexp'], $tmp_host ); if (! $match) { $conn_error = __( 'You are not allowed to log in to this MySQL server!' ); return false; } } $GLOBALS['pma_auth_server'] = Core::sanitizeMySQLHost($_REQUEST['pma_servername']); } /* Secure current session on login to avoid session fixation */ Session::secure(); return true; } // At the end, try to set the $this->user // and $this->password variables from cookies // check cookies $serverCookie = $GLOBALS['PMA_Config']->getCookie('pmaUser-' . $GLOBALS['server']); if (empty($serverCookie)) { return false; } $value = $this->cookieDecrypt( $serverCookie, $this->_getEncryptionSecret() ); if ($value === false) { return false; } $this->user = $value; // user was never logged in since session start if (empty($_SESSION['browser_access_time'])) { return false; } // User inactive too long $last_access_time = time() - $GLOBALS['cfg']['LoginCookieValidity']; foreach ($_SESSION['browser_access_time'] as $key => $value) { if ($value < $last_access_time) { unset($_SESSION['browser_access_time'][$key]); } } // All sessions expired if (empty($_SESSION['browser_access_time'])) { Util::cacheUnset('is_create_db_priv'); Util::cacheUnset('is_reload_priv'); Util::cacheUnset('db_to_create'); Util::cacheUnset('dbs_where_create_table_allowed'); Util::cacheUnset('dbs_to_test'); Util::cacheUnset('db_priv'); Util::cacheUnset('col_priv'); Util::cacheUnset('table_priv'); Util::cacheUnset('proc_priv'); $this->showFailure('no-activity'); if (! defined('TESTSUITE')) { exit; } else { return false; } } // check password cookie $serverCookie = $GLOBALS['PMA_Config']->getCookie('pmaAuth-' . $GLOBALS['server']); if (empty($serverCookie)) { return false; } $value = $this->cookieDecrypt( $serverCookie, $this->_getSessionEncryptionSecret() ); if ($value === false) { return false; } $auth_data = json_decode($value, true); if (! is_array($auth_data) || ! isset($auth_data['password'])) { return false; } $this->password = $auth_data['password']; if ($GLOBALS['cfg']['AllowArbitraryServer'] && ! empty($auth_data['server'])) { $GLOBALS['pma_auth_server'] = $auth_data['server']; } $GLOBALS['from_cookie'] = true; return true; } /** * Set the user and password after last checkings if required * * @return boolean always true */ public function storeCredentials() { global $cfg; if ($GLOBALS['cfg']['AllowArbitraryServer'] && ! empty($GLOBALS['pma_auth_server']) ) { /* Allow to specify 'host port' */ $parts = explode(' ', $GLOBALS['pma_auth_server']); if (count($parts) == 2) { $tmp_host = $parts[0]; $tmp_port = $parts[1]; } else { $tmp_host = $GLOBALS['pma_auth_server']; $tmp_port = ''; } if ($cfg['Server']['host'] != $GLOBALS['pma_auth_server']) { $cfg['Server']['host'] = $tmp_host; if (! empty($tmp_port)) { $cfg['Server']['port'] = $tmp_port; } } unset($tmp_host, $tmp_port, $parts); } return parent::storeCredentials(); } /** * Stores user credentials after successful login. * * @return void|bool */ public function rememberCredentials() { // Name and password cookies need to be refreshed each time // Duration = one month for username $this->storeUsernameCookie($this->user); // Duration = as configured // Do not store password cookie on password change as we will // set the cookie again after password has been changed if (! isset($_POST['change_pw'])) { $this->storePasswordCookie($this->password); } // Set server cookies if required (once per session) and, in this case, // force reload to ensure the client accepts cookies if (! $GLOBALS['from_cookie']) { // URL where to go: $redirect_url = './index.php'; // any parameters to pass? $url_params = array(); if (strlen($GLOBALS['db']) > 0) { $url_params['db'] = $GLOBALS['db']; } if (strlen($GLOBALS['table']) > 0) { $url_params['table'] = $GLOBALS['table']; } // any target to pass? if (! empty($GLOBALS['target']) && $GLOBALS['target'] != 'index.php' ) { $url_params['target'] = $GLOBALS['target']; } /** * Clear user cache. */ Util::clearUserCache(); Response::getInstance() ->disable(); Core::sendHeaderLocation( $redirect_url . Url::getCommonRaw($url_params), true ); if (! defined('TESTSUITE')) { exit; } else { return false; } } // end if return true; } /** * Stores username in a cookie. * * @param string $username User name * * @return void */ public function storeUsernameCookie($username) { // Name and password cookies need to be refreshed each time // Duration = one month for username $GLOBALS['PMA_Config']->setCookie( 'pmaUser-' . $GLOBALS['server'], $this->cookieEncrypt( $username, $this->_getEncryptionSecret() ) ); } /** * Stores password in a cookie. * * @param string $password Password * * @return void */ public function storePasswordCookie($password) { $payload = array('password' => $password); if ($GLOBALS['cfg']['AllowArbitraryServer'] && ! empty($GLOBALS['pma_auth_server'])) { $payload['server'] = $GLOBALS['pma_auth_server']; } // Duration = as configured $GLOBALS['PMA_Config']->setCookie( 'pmaAuth-' . $GLOBALS['server'], $this->cookieEncrypt( json_encode($payload), $this->_getSessionEncryptionSecret() ), null, $GLOBALS['cfg']['LoginCookieStore'] ); } /** * User is not allowed to login to MySQL -> authentication failed * * prepares error message and switches to showLoginForm() which display the error * and the login form * * this function MUST exit/quit the application, * currently done by call to showLoginForm() * * @param string $failure String describing why authentication has failed * * @return void */ public function showFailure($failure) { global $conn_error; parent::showFailure($failure); // Deletes password cookie and displays the login form $GLOBALS['PMA_Config']->removeCookie('pmaAuth-' . $GLOBALS['server']); $conn_error = $this->getErrorMessage($failure); $response = Response::getInstance(); // needed for PHP-CGI (not need for FastCGI or mod-php) $response->header('Cache-Control: no-store, no-cache, must-revalidate'); $response->header('Pragma: no-cache'); $this->showLoginForm(); } /** * Returns blowfish secret or generates one if needed. * * @return string */ private function _getEncryptionSecret() { if (empty($GLOBALS['cfg']['blowfish_secret'])) { return $this->_getSessionEncryptionSecret(); } return $GLOBALS['cfg']['blowfish_secret']; } /** * Returns blowfish secret or generates one if needed. * * @return string */ private function _getSessionEncryptionSecret() { if (empty($_SESSION['encryption_key'])) { if ($this->_use_openssl) { $_SESSION['encryption_key'] = openssl_random_pseudo_bytes(32); } else { $_SESSION['encryption_key'] = Crypt\Random::string(32); } } return $_SESSION['encryption_key']; } /** * Concatenates secret in order to make it 16 bytes log * * This doesn't add any security, just ensures the secret * is long enough by copying it. * * @param string $secret Original secret * * @return string */ public function enlargeSecret($secret) { while (strlen($secret) < 16) { $secret .= $secret; } return substr($secret, 0, 16); } /** * Derives MAC secret from encryption secret. * * @param string $secret the secret * * @return string the MAC secret */ public function getMACSecret($secret) { // Grab first part, up to 16 chars // The MAC and AES secrets can overlap if original secret is short $length = strlen($secret); if ($length > 16) { return substr($secret, 0, 16); } return $this->enlargeSecret( $length == 1 ? $secret : substr($secret, 0, -1) ); } /** * Derives AES secret from encryption secret. * * @param string $secret the secret * * @return string the AES secret */ public function getAESSecret($secret) { // Grab second part, up to 16 chars // The MAC and AES secrets can overlap if original secret is short $length = strlen($secret); if ($length > 16) { return substr($secret, -16); } return $this->enlargeSecret( $length == 1 ? $secret : substr($secret, 1) ); } /** * Cleans any SSL errors * * This can happen from corrupted cookies, by invalid encryption * parameters used in older phpMyAdmin versions or by wrong openSSL * configuration. * * In neither case the error is useful to user, but we need to clear * the error buffer as otherwise the errors would pop up later, for * example during MySQL SSL setup. * * @return void */ public function cleanSSLErrors() { if (function_exists('openssl_error_string')) { while (($ssl_err = openssl_error_string()) !== false) { } } } /** * Encryption using openssl's AES or phpseclib's AES * (phpseclib uses mcrypt when it is available) * * @param string $data original data * @param string $secret the secret * * @return string the encrypted result */ public function cookieEncrypt($data, $secret) { $mac_secret = $this->getMACSecret($secret); $aes_secret = $this->getAESSecret($secret); $iv = $this->createIV(); if ($this->_use_openssl) { $result = openssl_encrypt( $data, 'AES-128-CBC', $aes_secret, 0, $iv ); } else { $cipher = new Crypt\AES(Crypt\Base::MODE_CBC); $cipher->setIV($iv); $cipher->setKey($aes_secret); $result = base64_encode($cipher->encrypt($data)); } $this->cleanSSLErrors(); $iv = base64_encode($iv); return json_encode( array( 'iv' => $iv, 'mac' => hash_hmac('sha1', $iv . $result, $mac_secret), 'payload' => $result, ) ); } /** * Decryption using openssl's AES or phpseclib's AES * (phpseclib uses mcrypt when it is available) * * @param string $encdata encrypted data * @param string $secret the secret * * @return string|false original data, false on error */ public function cookieDecrypt($encdata, $secret) { $data = json_decode($encdata, true); if (! is_array($data) || ! isset($data['mac']) || ! isset($data['iv']) || ! isset($data['payload']) || ! is_string($data['mac']) || ! is_string($data['iv']) || ! is_string($data['payload']) ) { return false; } $mac_secret = $this->getMACSecret($secret); $aes_secret = $this->getAESSecret($secret); $newmac = hash_hmac('sha1', $data['iv'] . $data['payload'], $mac_secret); if (! hash_equals($data['mac'], $newmac)) { return false; } if ($this->_use_openssl) { $result = openssl_decrypt( $data['payload'], 'AES-128-CBC', $aes_secret, 0, base64_decode($data['iv']) ); } else { $cipher = new Crypt\AES(Crypt\Base::MODE_CBC); $cipher->setIV(base64_decode($data['iv'])); $cipher->setKey($aes_secret); $result = $cipher->decrypt(base64_decode($data['payload'])); } $this->cleanSSLErrors(); return $result; } /** * Returns size of IV for encryption. * * @return int */ public function getIVSize() { if ($this->_use_openssl) { return openssl_cipher_iv_length('AES-128-CBC'); } $cipher = new Crypt\AES(Crypt\Base::MODE_CBC); return $cipher->block_size; } /** * Initialization * Store the initialization vector because it will be needed for * further decryption. I don't think necessary to have one iv * per server so I don't put the server number in the cookie name. * * @return string */ public function createIV() { /* Testsuite shortcut only to allow predictable IV */ if (! is_null($this->_cookie_iv)) { return $this->_cookie_iv; } if ($this->_use_openssl) { return openssl_random_pseudo_bytes( $this->getIVSize() ); } return Crypt\Random::string( $this->getIVSize() ); } /** * Sets encryption IV to use * * This is for testing only! * * @param string $vector The IV * * @return void */ public function setIV($vector) { $this->_cookie_iv = $vector; } /** * Callback when user changes password. * * @param string $password New password to set * * @return void */ public function handlePasswordChange($password) { $this->storePasswordCookie($password); } /** * Perform logout * * @return void */ public function logOut() { /** @var Config $PMA_Config */ global $PMA_Config; // -> delete password cookie(s) if ($GLOBALS['cfg']['LoginCookieDeleteAll']) { foreach ($GLOBALS['cfg']['Servers'] as $key => $val) { $PMA_Config->removeCookie('pmaAuth-' . $key); if ($PMA_Config->issetCookie('pmaAuth-' . $key)) { $PMA_Config->removeCookie('pmaAuth-' . $key); } } } else { $cookieName = 'pmaAuth-' . $GLOBALS['server']; $PMA_Config->removeCookie($cookieName); if ($PMA_Config->issetCookie($cookieName)) { $PMA_Config->removeCookie($cookieName); } } parent::logOut(); } } db/login/libraries/classes/Plugins/Auth/AuthenticationConfig.php000064400000012522151502156010021010 0ustar00isAjax()) { $response->setRequestStatus(false); // reload_flag removes the token parameter from the URL and reloads $response->addJSON('reload_flag', '1'); if (defined('TESTSUITE')) { return true; } else { exit; } } return true; } /** * Gets authentication credentials * * @return boolean always true */ public function readCredentials() { if ($GLOBALS['token_provided'] && $GLOBALS['token_mismatch']) { return false; } $this->user = $GLOBALS['cfg']['Server']['user']; $this->password = $GLOBALS['cfg']['Server']['password']; return true; } /** * User is not allowed to login to MySQL -> authentication failed * * @param string $failure String describing why authentication has failed * * @return void */ public function showFailure($failure) { parent::showFailure($failure); $conn_error = $GLOBALS['dbi']->getError(); if (!$conn_error) { $conn_error = __('Cannot connect: invalid settings.'); } /* HTML header */ $response = Response::getInstance(); $response->getFooter() ->setMinimal(); $header = $response->getHeader(); $header->setBodyId('loginform'); $header->setTitle(__('Access denied!')); $header->disableMenuAndConsole(); echo '

'; echo sprintf(__('Welcome to %s'), ' phpMyAdmin '); echo '


' , "\n"; if (count($GLOBALS['cfg']['Servers']) > 1) { // offer a chance to login to other servers if the current one failed echo '' , "\n"; echo ' ' , "\n"; echo '' , "\n"; } echo '
'; if (isset($GLOBALS['allowDeny_forbidden']) && $GLOBALS['allowDeny_forbidden'] ) { trigger_error(__('Access denied!'), E_USER_NOTICE); } else { // Check whether user has configured something if ($GLOBALS['PMA_Config']->source_mtime == 0) { echo '

' , sprintf( __( 'You probably did not create a configuration file.' . ' You might want to use the %1$ssetup script%2$s to' . ' create one.' ), '', '' ) , '

' , "\n"; } elseif (!isset($GLOBALS['errno']) || (isset($GLOBALS['errno']) && $GLOBALS['errno'] != 2002) && $GLOBALS['errno'] != 2003 ) { // if we display the "Server not responding" error, do not confuse // users by telling them they have a settings problem // (note: it's true that they could have a badly typed host name, // but anyway the current message tells that the server // rejected the connection, which is not really what happened) // 2002 is the error given by mysqli // 2003 is the error given by mysql trigger_error( __( 'phpMyAdmin tried to connect to the MySQL server, and the' . ' server rejected the connection. You should check the' . ' host, username and password in your configuration and' . ' make sure that they correspond to the information given' . ' by the administrator of the MySQL server.' ), E_USER_WARNING ); } echo Util::mysqlDie( $conn_error, '', true, '', false ); } $GLOBALS['error_handler']->dispUserErrors(); echo '
' , "\n"; echo '' , __('Retry to connect') , '' , "\n"; echo '
' , "\n"; echo Select::render(true, true); echo '
' , "\n"; if (!defined('TESTSUITE')) { exit; } } } db/login/libraries/classes/Plugins/Auth/AuthenticationSignon.php000064400000021052151502156010021036 0ustar00=')) { session_set_cookie_params($sessionCookieParams); } session_set_cookie_params( $sessionCookieParams['lifetime'], $sessionCookieParams['path'], $sessionCookieParams['domain'], $sessionCookieParams['secure'], $sessionCookieParams['httponly'] ); } /** * Gets authentication credentials * * @return boolean whether we get authentication settings or not */ public function readCredentials() { /* Check if we're using same signon server */ $signon_url = $GLOBALS['cfg']['Server']['SignonURL']; if (isset($_SESSION['LAST_SIGNON_URL']) && $_SESSION['LAST_SIGNON_URL'] != $signon_url ) { return false; } /* Script name */ $script_name = $GLOBALS['cfg']['Server']['SignonScript']; /* Session name */ $session_name = $GLOBALS['cfg']['Server']['SignonSession']; /* Login URL */ $signon_url = $GLOBALS['cfg']['Server']['SignonURL']; /* Current host */ $single_signon_host = $GLOBALS['cfg']['Server']['host']; /* Current port */ $single_signon_port = $GLOBALS['cfg']['Server']['port']; /* No configuration updates */ $single_signon_cfgupdate = array(); /* Handle script based auth */ if (!empty($script_name)) { if (!@file_exists($script_name)) { Core::fatalError( __('Can not find signon authentication script:') . ' ' . $script_name ); } include $script_name; list ($this->user, $this->password) = get_login_credentials($GLOBALS['cfg']['Server']['user']); } elseif (isset($_COOKIE[$session_name])) { /* Does session exist? */ /* End current session */ $old_session = session_name(); $old_id = session_id(); $oldCookieParams = session_get_cookie_params(); if (!defined('TESTSUITE')) { session_write_close(); } /* Load single signon session */ if (!defined('TESTSUITE')) { $this->setCookieParams(); session_name($session_name); session_id($_COOKIE[$session_name]); session_start(); } /* Clear error message */ unset($_SESSION['PMA_single_signon_error_message']); /* Grab credentials if they exist */ if (isset($_SESSION['PMA_single_signon_user'])) { $this->user = $_SESSION['PMA_single_signon_user']; } if (isset($_SESSION['PMA_single_signon_password'])) { $this->password = $_SESSION['PMA_single_signon_password']; } if (isset($_SESSION['PMA_single_signon_host'])) { $single_signon_host = $_SESSION['PMA_single_signon_host']; } if (isset($_SESSION['PMA_single_signon_port'])) { $single_signon_port = $_SESSION['PMA_single_signon_port']; } if (isset($_SESSION['PMA_single_signon_cfgupdate'])) { $single_signon_cfgupdate = $_SESSION['PMA_single_signon_cfgupdate']; } /* Also get token as it is needed to access subpages */ if (isset($_SESSION['PMA_single_signon_token'])) { /* No need to care about token on logout */ $pma_token = $_SESSION['PMA_single_signon_token']; } /* End single signon session */ if (!defined('TESTSUITE')) { session_write_close(); } /* Restart phpMyAdmin session */ if (!defined('TESTSUITE')) { $this->setCookieParams($oldCookieParams); session_name($old_session); if (!empty($old_id)) { session_id($old_id); } session_start(); } /* Set the single signon host */ $GLOBALS['cfg']['Server']['host'] = $single_signon_host; /* Set the single signon port */ $GLOBALS['cfg']['Server']['port'] = $single_signon_port; /* Configuration update */ $GLOBALS['cfg']['Server'] = array_merge( $GLOBALS['cfg']['Server'], $single_signon_cfgupdate ); /* Restore our token */ if (!empty($pma_token)) { $_SESSION[' PMA_token '] = $pma_token; $_SESSION[' HMAC_secret '] = Util::generateRandom(16); } /** * Clear user cache. */ Util::clearUserCache(); } // Returns whether we get authentication settings or not if (empty($this->user)) { unset($_SESSION['LAST_SIGNON_URL']); return false; } $_SESSION['LAST_SIGNON_URL'] = $GLOBALS['cfg']['Server']['SignonURL']; return true; } /** * User is not allowed to login to MySQL -> authentication failed * * @param string $failure String describing why authentication has failed * * @return void */ public function showFailure($failure) { parent::showFailure($failure); /* Session name */ $session_name = $GLOBALS['cfg']['Server']['SignonSession']; /* Does session exist? */ if (isset($_COOKIE[$session_name])) { if (!defined('TESTSUITE')) { /* End current session */ session_write_close(); /* Load single signon session */ $this->setCookieParams(); session_name($session_name); session_id($_COOKIE[$session_name]); session_start(); } /* Set error message */ $_SESSION['PMA_single_signon_error_message'] = $this->getErrorMessage($failure); } $this->showLoginForm(); } /** * Returns URL for login form. * * @return string */ public function getLoginFormURL() { return $GLOBALS['cfg']['Server']['SignonURL']; } } db/login/libraries/classes/Plugins/TwoFactor/Simple.php000064400000002355151502156010017146 0ustar00render(); } /** * Get user visible name * * @return string */ public static function getName() { return __('Simple two-factor authentication'); } /** * Get user visible description * * @return string */ public static function getDescription() { return __('For testing purposes only!'); } } db/login/libraries/classes/Plugins/TwoFactor/Invalid.php000064400000002306151502156010017277 0ustar00render(); } /** * Get user visible name * * @return string */ public static function getName() { return 'Invalid two-factor authentication'; } /** * Get user visible description * * @return string */ public static function getDescription() { return 'Error fallback only!'; } } db/login/libraries/classes/Plugins/TwoFactor/Key.php000064400000013032151502156010016437 0ustar00_twofactor->config['settings']['registrations'])) { $this->_twofactor->config['settings']['registrations'] = []; } } /** * Returns array of U2F registration objects * * @return array */ public function getRegistrations() { $result = []; foreach ($this->_twofactor->config['settings']['registrations'] as $index => $data) { $reg = new \StdClass; $reg->keyHandle = $data['keyHandle']; $reg->publicKey = $data['publicKey']; $reg->certificate = $data['certificate']; $reg->counter = $data['counter']; $reg->index = $index; $result[] = $reg; } return $result; } /** * Checks authentication, returns true on success * * @return boolean */ public function check() { $this->_provided = false; if (!isset($_POST['u2f_authentication_response']) || !isset($_SESSION['authenticationRequest'])) { return false; } $this->_provided = true; try { $response = json_decode($_POST['u2f_authentication_response']); if (is_null($response)) { return false; } $authentication = U2FServer::authenticate( $_SESSION['authenticationRequest'], $this->getRegistrations(), $response ); $this->_twofactor->config['settings']['registrations'][$authentication->index]['counter'] = $authentication->counter; $this->_twofactor->save(); return true; } catch (U2FException $e) { $this->_message = $e->getMessage(); return false; } } /** * Loads needed javascripts into the page * * @return void */ public function loadScripts() { $response = Response::getInstance(); $scripts = $response->getHeader()->getScripts(); $scripts->addFile('vendor/u2f-api-polyfill.js'); $scripts->addFile('u2f.js'); } /** * Renders user interface to enter two-factor authentication * * @return string HTML code */ public function render() { $request = U2FServer::makeAuthentication( $this->getRegistrations(), $this->getAppId(true) ); $_SESSION['authenticationRequest'] = $request; $this->loadScripts(); return Template::get('login/twofactor/key')->render([ 'request' => json_encode($request), 'is_https' => $GLOBALS['PMA_Config']->isHttps(), ]); } /** * Renders user interface to configure two-factor authentication * * @return string HTML code */ public function setup() { $registrationData = U2FServer::makeRegistration( $this->getAppId(true), $this->getRegistrations() ); $_SESSION['registrationRequest'] = $registrationData['request']; $this->loadScripts(); return Template::get('login/twofactor/key_configure')->render([ 'request' => json_encode($registrationData['request']), 'signatures' => json_encode($registrationData['signatures']), 'is_https' => $GLOBALS['PMA_Config']->isHttps(), ]); } /** * Performs backend configuration * * @return boolean */ public function configure() { $this->_provided = false; if (! isset($_POST['u2f_registration_response']) || ! isset($_SESSION['registrationRequest'])) { return false; } $this->_provided = true; try { $response = json_decode($_POST['u2f_registration_response']); if (is_null($response)) { return false; } $registration = U2FServer::register( $_SESSION['registrationRequest'], $response ); $this->_twofactor->config['settings']['registrations'][] = [ 'keyHandle' => $registration->getKeyHandle(), 'publicKey' => $registration->getPublicKey(), 'certificate' => $registration->getCertificate(), 'counter' => $registration->getCounter(), ]; return true; } catch (U2FException $e) { $this->_message = $e->getMessage(); return false; } } /** * Get user visible name * * @return string */ public static function getName() { return __('Hardware Security Key (FIDO U2F)'); } /** * Get user visible description * * @return string */ public static function getDescription() { return __('Provides authentication using hardware security tokens supporting FIDO U2F.'); } } db/login/libraries/classes/Plugins/TwoFactor/Application.php000064400000010061151502156010020151 0ustar00_google2fa = new Google2FA(); $this->_google2fa->setWindow(8); if (!isset($this->_twofactor->config['settings']['secret'])) { $this->_twofactor->config['settings']['secret'] = ''; } } /** * Get any property of this class * * @param string $property name of the property * * @return mixed|void if property exist, value of the relevant property */ public function __get($property) { switch ($property) { case 'google2fa': return $this->_google2fa; } } /** * Checks authentication, returns true on success * * @return boolean */ public function check() { $this->_provided = false; if (!isset($_POST['2fa_code'])) { return false; } $this->_provided = true; return $this->_google2fa->verifyKey( $this->_twofactor->config['settings']['secret'], $_POST['2fa_code'] ); } /** * Renders user interface to enter two-factor authentication * * @return string HTML code */ public function render() { return Template::get('login/twofactor/application')->render(); } /** * Renders user interface to configure two-factor authentication * * @return string HTML code */ public function setup() { $secret = $this->_twofactor->config['settings']['secret']; $renderArray = ['secret' => $secret]; if (extension_loaded('gd')) { $inlineUrl = $this->_google2fa->getQRCodeInline( 'phpMyAdmin (' . $this->getAppId(false) . ')', $this->_twofactor->user, $secret ); $renderArray['image'] = $inlineUrl; } else { $inlineUrl = $this->_google2fa->getQRCodeUrl( 'phpMyAdmin (' . $this->getAppId(false) . ')', $this->_twofactor->user, $secret ); trigger_error( __( 'The gd PHP extension was not found.' . ' The QRcode can not be displayed without the gd PHP extension.' ), E_USER_WARNING ); $renderArray['url'] = $inlineUrl; } return Template::get('login/twofactor/application_configure')->render($renderArray); } /** * Performs backend configuration * * @return boolean */ public function configure() { if (! isset($_SESSION['2fa_application_key'])) { $_SESSION['2fa_application_key'] = $this->_google2fa->generateSecretKey(); } $this->_twofactor->config['settings']['secret'] = $_SESSION['2fa_application_key']; $result = $this->check(); if ($result) { unset($_SESSION['2fa_application_key']); } return $result; } /** * Get user visible name * * @return string */ public static function getName() { return __('Authentication Application (2FA)'); } /** * Get user visible description * * @return string */ public static function getDescription() { return __('Provides authentication using HOTP and TOTP applications such as FreeOTP, Google Authenticator or Authy.'); } } db/login/libraries/classes/Plugins/Import/ImportLdi.php000064400000012072151502156010017157 0ustar00setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { if ($GLOBALS['cfg']['Import']['ldi_local_option'] == 'auto') { $GLOBALS['cfg']['Import']['ldi_local_option'] = false; $result = $GLOBALS['dbi']->tryQuery( 'SELECT @@local_infile;' ); if ($result != false && $GLOBALS['dbi']->numRows($result) > 0) { $tmp = $GLOBALS['dbi']->fetchRow($result); if ($tmp[0] == 'ON') { $GLOBALS['cfg']['Import']['ldi_local_option'] = true; } } $GLOBALS['dbi']->freeResult($result); unset($result); } $generalOptions = parent::setProperties(); $this->properties->setText('CSV using LOAD DATA'); $this->properties->setExtension('ldi'); $leaf = new TextPropertyItem( "columns", __('Column names: ') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "ignore", __('Do not abort on INSERT error') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "local_option", __('Use LOCAL keyword') ); $generalOptions->addProperty($leaf); } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $finished, $import_file, $charset_conversion, $table; global $ldi_local_option, $ldi_replace, $ldi_ignore, $ldi_terminated, $ldi_enclosed, $ldi_escaped, $ldi_new_line, $skip_queries, $ldi_columns; $compression = $GLOBALS['import_handle']->getCompression(); if ($import_file == 'none' || $compression != 'none' || $charset_conversion ) { // We handle only some kind of data! $GLOBALS['message'] = Message::error( __('This plugin does not support compressed imports!') ); $GLOBALS['error'] = true; return; } $sql = 'LOAD DATA'; if (isset($ldi_local_option)) { $sql .= ' LOCAL'; } $sql .= ' INFILE \'' . $GLOBALS['dbi']->escapeString($import_file) . '\''; if (isset($ldi_replace)) { $sql .= ' REPLACE'; } elseif (isset($ldi_ignore)) { $sql .= ' IGNORE'; } $sql .= ' INTO TABLE ' . Util::backquote($table); if (strlen($ldi_terminated) > 0) { $sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\''; } if (strlen($ldi_enclosed) > 0) { $sql .= ' ENCLOSED BY \'' . $GLOBALS['dbi']->escapeString($ldi_enclosed) . '\''; } if (strlen($ldi_escaped) > 0) { $sql .= ' ESCAPED BY \'' . $GLOBALS['dbi']->escapeString($ldi_escaped) . '\''; } if (strlen($ldi_new_line) > 0) { if ($ldi_new_line == 'auto') { $ldi_new_line = (PHP_EOL == "\n") ? '\n' : '\r\n'; } $sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\''; } if ($skip_queries > 0) { $sql .= ' IGNORE ' . $skip_queries . ' LINES'; $skip_queries = 0; } if (strlen($ldi_columns) > 0) { $sql .= ' ('; $tmp = preg_split('/,( ?)/', $ldi_columns); $cnt_tmp = count($tmp); for ($i = 0; $i < $cnt_tmp; $i++) { if ($i > 0) { $sql .= ', '; } /* Trim also `, if user already included backquoted fields */ $sql .= Util::backquote( trim($tmp[$i], " \t\r\n\0\x0B`") ); } // end for $sql .= ')'; } Import::runQuery($sql, $sql, $sql_data); Import::runQuery('', '', $sql_data); $finished = true; } } db/login/libraries/classes/Plugins/Import/ImportOds.php000064400000033020151502156010017170 0ustar00setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $importPluginProperties = new ImportPluginProperties(); $importPluginProperties->setText('OpenDocument Spreadsheet'); $importPluginProperties->setExtension('ods'); $importPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $importPluginProperties // this will be shown as "Format specific options" $importSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new BoolPropertyItem( "col_names", __( 'The first line of the file contains the table column names' . ' (if this is unchecked, the first line will become part' . ' of the data)' ) ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "empty_rows", __('Do not import empty rows') ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "recognize_percentages", __( 'Import percentages as proper decimals (ex. 12.00% to .12)' ) ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "recognize_currency", __('Import currencies (ex. $5.00 to 5.00)') ); $generalOptions->addProperty($leaf); // add the main group to the root group $importSpecificOptions->addProperty($generalOptions); // set the options for the import plugin property item $importPluginProperties->setOptions($importSpecificOptions); $this->properties = $importPluginProperties; } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $db, $error, $timeout_passed, $finished; $i = 0; $len = 0; $buffer = ""; /** * Read in the file via Import::getNextChunk so that * it can process compressed files */ while (!($finished && $i >= $len) && !$error && !$timeout_passed) { $data = Import::getNextChunk(); if ($data === false) { /* subtract data we didn't handle yet and stop processing */ $GLOBALS['offset'] -= strlen($buffer); break; } elseif ($data === true) { /* Handle rest of buffer */ } else { /* Append new data to buffer */ $buffer .= $data; unset($data); } } unset($data); /** * Disable loading of external XML entities. */ libxml_disable_entity_loader(); /** * Load the XML string * * The option LIBXML_COMPACT is specified because it can * result in increased performance without the need to * alter the code in any way. It's basically a freebee. */ $xml = @simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT); unset($buffer); if ($xml === false) { $sheets = array(); $GLOBALS['message'] = Message::error( __( 'The XML file specified was either malformed or incomplete.' . ' Please correct the issue and try again.' ) ); $GLOBALS['error'] = true; } else { /** @var SimpleXMLElement $root */ $root = $xml->children('office', true)->{'body'}->{'spreadsheet'}; if (empty($root)) { $sheets = array(); $GLOBALS['message'] = Message::error( __('Could not parse OpenDocument Spreadsheet!') ); $GLOBALS['error'] = true; } else { $sheets = $root->children('table', true); } } $tables = array(); $max_cols = 0; $col_count = 0; $col_names = array(); $tempRow = array(); $tempRows = array(); $rows = array(); /* Iterate over tables */ /** @var SimpleXMLElement $sheet */ foreach ($sheets as $sheet) { $col_names_in_first_row = isset($_REQUEST['ods_col_names']); /* Iterate over rows */ /** @var SimpleXMLElement $row */ foreach ($sheet as $row) { $type = $row->getName(); if (strcmp('table-row', $type)) { continue; } /* Iterate over columns */ $cellCount = count($row); $a = 0; /** @var SimpleXMLElement $cell */ foreach ($row as $cell) { $a++; $text = $cell->children('text', true); $cell_attrs = $cell->attributes('office', true); if (count($text) != 0) { $attr = $cell->attributes('table', true); $num_repeat = (int)$attr['number-columns-repeated']; $num_iterations = $num_repeat ? $num_repeat : 1; for ($k = 0; $k < $num_iterations; $k++) { $value = $this->getValue($cell_attrs, $text); if (!$col_names_in_first_row) { $tempRow[] = $value; } else { // MySQL column names can't end with a space // character. $col_names[] = rtrim($value); } ++$col_count; } continue; } // skip empty repeats in the last row if ($a == $cellCount) { continue; } $attr = $cell->attributes('table', true); $num_null = (int)$attr['number-columns-repeated']; if ($num_null) { if (!$col_names_in_first_row) { for ($i = 0; $i < $num_null; ++$i) { $tempRow[] = 'NULL'; ++$col_count; } } else { for ($i = 0; $i < $num_null; ++$i) { $col_names[] = Import::getColumnAlphaName( $col_count + 1 ); ++$col_count; } } } else { if (!$col_names_in_first_row) { $tempRow[] = 'NULL'; } else { $col_names[] = Import::getColumnAlphaName( $col_count + 1 ); } ++$col_count; } } //Endforeach /* Find the widest row */ if ($col_count > $max_cols) { $max_cols = $col_count; } /* Don't include a row that is full of NULL values */ if (!$col_names_in_first_row) { if ($_REQUEST['ods_empty_rows']) { foreach ($tempRow as $cell) { if (strcmp('NULL', $cell)) { $tempRows[] = $tempRow; break; } } } else { $tempRows[] = $tempRow; } } $col_count = 0; $col_names_in_first_row = false; $tempRow = array(); } /* Skip over empty sheets */ if (count($tempRows) == 0 || count($tempRows[0]) == 0) { $col_names = array(); $tempRow = array(); $tempRows = array(); continue; } /** * Fill out each row as necessary to make * every one exactly as wide as the widest * row. This included column names. */ /* Fill out column names */ for ($i = count($col_names); $i < $max_cols; ++$i) { $col_names[] = Import::getColumnAlphaName($i + 1); } /* Fill out all rows */ $num_rows = count($tempRows); for ($i = 0; $i < $num_rows; ++$i) { for ($j = count($tempRows[$i]); $j < $max_cols; ++$j) { $tempRows[$i][] = 'NULL'; } } /* Store the table name so we know where to place the row set */ $tbl_attr = $sheet->attributes('table', true); $tables[] = array((string)$tbl_attr['name']); /* Store the current sheet in the accumulator */ $rows[] = array((string)$tbl_attr['name'], $col_names, $tempRows); $tempRows = array(); $col_names = array(); $max_cols = 0; } unset($tempRow); unset($tempRows); unset($col_names); unset($sheets); unset($xml); /** * Bring accumulated rows into the corresponding table */ $num_tables = count($tables); for ($i = 0; $i < $num_tables; ++$i) { $num_rows = count($rows); for ($j = 0; $j < $num_rows; ++$j) { if (strcmp($tables[$i][Import::TBL_NAME], $rows[$j][Import::TBL_NAME])) { continue; } if (!isset($tables[$i][Import::COL_NAMES])) { $tables[$i][] = $rows[$j][Import::COL_NAMES]; } $tables[$i][Import::ROWS] = $rows[$j][Import::ROWS]; } } /* No longer needed */ unset($rows); /* Obtain the best-fit MySQL types for each column */ $analyses = array(); $len = count($tables); for ($i = 0; $i < $len; ++$i) { $analyses[] = Import::analyzeTable($tables[$i]); } /** * string $db_name (no backquotes) * * array $table = array(table_name, array() column_names, array()() rows) * array $tables = array of "$table"s * * array $analysis = array(array() column_types, array() column_sizes) * array $analyses = array of "$analysis"s * * array $create = array of SQL strings * * array $options = an associative array of options */ /* Set database name to the currently selected one, if applicable */ list($db_name, $options) = $this->getDbnameAndOptions($db, 'ODS_DB'); /* Non-applicable parameters */ $create = null; /* Created and execute necessary SQL statements from data */ Import::buildSql($db_name, $tables, $analyses, $create, $options, $sql_data); unset($tables); unset($analyses); /* Commit any possible data in buffers */ Import::runQuery('', '', $sql_data); } /** * Get value * * @param array $cell_attrs Cell attributes * @param array $text Texts * * @return float|string */ protected function getValue($cell_attrs, $text) { if ($_REQUEST['ods_recognize_percentages'] && !strcmp( 'percentage', $cell_attrs['value-type'] ) ) { $value = (double)$cell_attrs['value']; return $value; } elseif ($_REQUEST['ods_recognize_currency'] && !strcmp('currency', $cell_attrs['value-type']) ) { $value = (double)$cell_attrs['value']; return $value; } /* We need to concatenate all paragraphs */ $values = array(); foreach ($text as $paragraph) { $values[] = (string)$paragraph; } $value = implode("\n", $values); return $value; } } db/login/libraries/classes/Plugins/Import/ImportMediawiki.php000064400000052115151502156010020354 0ustar00setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $this->_setAnalyze(false); if ($GLOBALS['plugin_param'] !== 'table') { $this->_setAnalyze(true); } $importPluginProperties = new ImportPluginProperties(); $importPluginProperties->setText(__('MediaWiki Table')); $importPluginProperties->setExtension('txt'); $importPluginProperties->setMimeType('text/plain'); $importPluginProperties->setOptions(array()); $importPluginProperties->setOptionsText(__('Options')); $this->properties = $importPluginProperties; } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $error, $timeout_passed, $finished; // Defaults for parser // The buffer that will be used to store chunks read from the imported file $buffer = ''; // Used as storage for the last part of the current chunk data // Will be appended to the first line of the next chunk, if there is one $last_chunk_line = ''; // Remembers whether the current buffer line is part of a comment $inside_comment = false; // Remembers whether the current buffer line is part of a data comment $inside_data_comment = false; // Remembers whether the current buffer line is part of a structure comment $inside_structure_comment = false; // MediaWiki only accepts "\n" as row terminator $mediawiki_new_line = "\n"; // Initialize the name of the current table $cur_table_name = ""; while (!$finished && !$error && !$timeout_passed) { $data = Import::getNextChunk(); if ($data === false) { // Subtract data we didn't handle yet and stop processing $GLOBALS['offset'] -= mb_strlen($buffer); break; } elseif ($data === true) { // Handle rest of buffer } else { // Append new data to buffer $buffer = $data; unset($data); // Don't parse string if we're not at the end // and don't have a new line inside if (mb_strpos($buffer, $mediawiki_new_line) === false) { continue; } } // Because of reading chunk by chunk, the first line from the buffer // contains only a portion of an actual line from the imported file. // Therefore, we have to append it to the last line from the previous // chunk. If we are at the first chunk, $last_chunk_line should be empty. $buffer = $last_chunk_line . $buffer; // Process the buffer line by line $buffer_lines = explode($mediawiki_new_line, $buffer); $full_buffer_lines_count = count($buffer_lines); // If the reading is not finalised, the final line of the current chunk // will not be complete if (! $finished) { $last_chunk_line = $buffer_lines[--$full_buffer_lines_count]; } for ($line_nr = 0; $line_nr < $full_buffer_lines_count; ++$line_nr) { $cur_buffer_line = trim($buffer_lines[$line_nr]); // If the line is empty, go to the next one if ($cur_buffer_line === '') { continue; } $first_character = $cur_buffer_line[0]; $matches = array(); // Check beginning of comment if (!strcmp(mb_substr($cur_buffer_line, 0, 4), "") ) { // Only data comments are closed. The structure comments // will be closed when a data comment begins (in order to // skip structure tables) if ($inside_data_comment) { $inside_data_comment = false; } // End comments that are not related to table structure if (!$inside_structure_comment) { $inside_comment = false; } } else { // Check table name $match_table_name = array(); if (preg_match( "/^Table data for `(.*)`$/", $cur_buffer_line, $match_table_name ) ) { $cur_table_name = $match_table_name[1]; $inside_data_comment = true; $inside_structure_comment = $this->_mngInsideStructComm( $inside_structure_comment ); } elseif (preg_match( "/^Table structure for `(.*)`$/", $cur_buffer_line, $match_table_name ) ) { // The structure comments will be ignored $inside_structure_comment = true; } } continue; } elseif (preg_match('/^\{\|(.*)$/', $cur_buffer_line, $matches)) { // Check start of table // This will store all the column info on all rows from // the current table read from the buffer $cur_temp_table = array(); // Will be used as storage for the current row in the buffer // Once all its columns are read, it will be added to // $cur_temp_table and then it will be emptied $cur_temp_line = array(); // Helps us differentiate the header columns // from the normal columns $in_table_header = false; // End processing because the current line does not // contain any column information } elseif (mb_substr($cur_buffer_line, 0, 2) === '|-' || mb_substr($cur_buffer_line, 0, 2) === '|+' || mb_substr($cur_buffer_line, 0, 2) === '|}' ) { // Check begin row or end table // Add current line to the values storage if (!empty($cur_temp_line)) { // If the current line contains header cells // ( marked with '!' ), // it will be marked as table header if ($in_table_header) { // Set the header columns $cur_temp_table_headers = $cur_temp_line; } else { // Normal line, add it to the table $cur_temp_table [] = $cur_temp_line; } } // Empty the temporary buffer $cur_temp_line = array(); // No more processing required at the end of the table if (mb_substr($cur_buffer_line, 0, 2) === '|}') { $current_table = array( $cur_table_name, $cur_temp_table_headers, $cur_temp_table, ); // Import the current table data into the database $this->_importDataOneTable($current_table, $sql_data); // Reset table name $cur_table_name = ""; } // What's after the row tag is now only attributes } elseif (($first_character === '|') || ($first_character === '!')) { // Check cell elements // Header cells if ($first_character === '!') { // Mark as table header, but treat as normal row $cur_buffer_line = str_replace('!!', '||', $cur_buffer_line); // Will be used to set $cur_temp_line as table header $in_table_header = true; } else { $in_table_header = false; } // Loop through each table cell $cells = $this->_explodeMarkup($cur_buffer_line); foreach ($cells as $cell) { $cell = $this->_getCellData($cell); // Delete the beginning of the column, if there is one $cell = trim($cell); $col_start_chars = array("|", "!"); foreach ($col_start_chars as $col_start_char) { $cell = $this->_getCellContent($cell, $col_start_char); } // Add the cell to the row $cur_temp_line [] = $cell; } // foreach $cells } else { // If it's none of the above, then the current line has a bad // format $message = Message::error( __('Invalid format of mediawiki input on line:
%s.') ); $message->addParam($cur_buffer_line); $error = true; } } // End treating full buffer lines } // while - finished parsing buffer } /** * Imports data from a single table * * @param array $table containing all table info: * * $table[0] - string containing table name * $table[1] - array[] of table headers * $table[2] - array[][] of table content rows * * * @param array &$sql_data 2-element array with sql data * * @global bool $analyze whether to scan for column types * * @return void */ private function _importDataOneTable(array $table, array &$sql_data) { $analyze = $this->_getAnalyze(); if ($analyze) { // Set the table name $this->_setTableName($table[0]); // Set generic names for table headers if they don't exist $this->_setTableHeaders($table[1], $table[2][0]); // Create the tables array to be used in Import::buildSql() $tables = array(); $tables [] = array($table[0], $table[1], $table[2]); // Obtain the best-fit MySQL types for each column $analyses = array(); $analyses [] = Import::analyzeTable($tables[0]); $this->_executeImportTables($tables, $analyses, $sql_data); } // Commit any possible data in buffers Import::runQuery('', '', $sql_data); } /** * Sets the table name * * @param string &$table_name reference to the name of the table * * @return void */ private function _setTableName(&$table_name) { if (empty($table_name)) { $result = $GLOBALS['dbi']->fetchResult('SHOW TABLES'); // todo check if the name below already exists $table_name = 'TABLE ' . (count($result) + 1); } } /** * Set generic names for table headers, if they don't exist * * @param array &$table_headers reference to the array containing the headers * of a table * @param array $table_row array containing the first content row * * @return void */ private function _setTableHeaders(array &$table_headers, array $table_row) { if (empty($table_headers)) { // The first table row should contain the number of columns // If they are not set, generic names will be given (COL 1, COL 2, etc) $num_cols = count($table_row); for ($i = 0; $i < $num_cols; ++$i) { $table_headers [$i] = 'COL ' . ($i + 1); } } } /** * Sets the database name and additional options and calls Import::buildSql() * Used in PMA_importDataAllTables() and $this->_importDataOneTable() * * @param array &$tables structure: * array( * array(table_name, array() column_names, array()() * rows) * ) * @param array &$analyses structure: * $analyses = array( * array(array() column_types, array() column_sizes) * ) * @param array &$sql_data 2-element array with sql data * * @global string $db name of the database to import in * * @return void */ private function _executeImportTables(array &$tables, array &$analyses, array &$sql_data) { global $db; // $db_name : The currently selected database name, if applicable // No backquotes // $options : An associative array of options list($db_name, $options) = $this->getDbnameAndOptions($db, 'mediawiki_DB'); // Array of SQL strings // Non-applicable parameters $create = null; // Create and execute necessary SQL statements from data Import::buildSql($db_name, $tables, $analyses, $create, $options, $sql_data); unset($tables); unset($analyses); } /** * Replaces all instances of the '||' separator between delimiters * in a given string * * @param string $replace the string to be replaced with * @param string $subject the text to be replaced * * @return string with replacements */ private function _delimiterReplace($replace, $subject) { // String that will be returned $cleaned = ""; // Possible states of current character $inside_tag = false; $inside_attribute = false; // Attributes can be declared with either " or ' $start_attribute_character = false; // The full separator is "||"; // This remembers if the previous character was '|' $partial_separator = false; // Parse text char by char for ($i = 0; $i < strlen($subject); $i++) { $cur_char = $subject[$i]; // Check for separators if ($cur_char == '|') { // If we're not inside a tag, then this is part of a real separator, // so we append it to the current segment if (!$inside_attribute) { $cleaned .= $cur_char; if ($partial_separator) { $inside_tag = false; $inside_attribute = false; } } elseif ($partial_separator) { // If we are inside a tag, we replace the current char with // the placeholder and append that to the current segment $cleaned .= $replace; } // If the previous character was also '|', then this ends a // full separator. If not, this may be the beginning of one $partial_separator = !$partial_separator; } else { // If we're inside a tag attribute and the current character is // not '|', but the previous one was, it means that the single '|' // was not appended, so we append it now if ($partial_separator && $inside_attribute) { $cleaned .= "|"; } // If the char is different from "|", no separator can be formed $partial_separator = false; // any other character should be appended to the current segment $cleaned .= $cur_char; if ($cur_char == '<' && !$inside_attribute) { // start of a tag $inside_tag = true; } elseif ($cur_char == '>' && !$inside_attribute) { // end of a tag $inside_tag = false; } elseif (($cur_char == '"' || $cur_char == "'") && $inside_tag) { // start or end of an attribute if (!$inside_attribute) { $inside_attribute = true; // remember the attribute`s declaration character (" or ') $start_attribute_character = $cur_char; } else { if ($cur_char == $start_attribute_character) { $inside_attribute = false; // unset attribute declaration character $start_attribute_character = false; } } } } } // end for each character in $subject return $cleaned; } /** * Separates a string into items, similarly to explode * Uses the '||' separator (which is standard in the mediawiki format) * and ignores any instances of it inside markup tags * Used in parsing buffer lines containing data cells * * @param string $text text to be split * * @return array */ private function _explodeMarkup($text) { $separator = "||"; $placeholder = "\x00"; // Remove placeholder instances $text = str_replace($placeholder, '', $text); // Replace instances of the separator inside HTML-like // tags with the placeholder $cleaned = $this->_delimiterReplace($placeholder, $text); // Explode, then put the replaced separators back in $items = explode($separator, $cleaned); foreach ($items as $i => $str) { $items[$i] = str_replace($placeholder, $separator, $str); } return $items; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Returns true if the table should be analyzed, false otherwise * * @return bool */ private function _getAnalyze() { return $this->_analyze; } /** * Sets to true if the table should be analyzed, false otherwise * * @param bool $analyze status * * @return void */ private function _setAnalyze($analyze) { $this->_analyze = $analyze; } /** * Get cell * * @param string $cell Cell * * @return mixed */ private function _getCellData($cell) { // A cell could contain both parameters and data $cell_data = explode('|', $cell, 2); // A '|' inside an invalid link should not // be mistaken as delimiting cell parameters if (mb_strpos($cell_data[0], '[[') === false) { return $cell; } if (count($cell_data) == 1) { return $cell_data[0]; } return $cell_data[1]; } /** * Manage $inside_structure_comment * * @param boolean $inside_structure_comment Value to test * * @return bool */ private function _mngInsideStructComm($inside_structure_comment) { // End ignoring structure rows if ($inside_structure_comment) { $inside_structure_comment = false; } return $inside_structure_comment; } /** * Get cell content * * @param string $cell Cell * @param string $col_start_char Start char * * @return string */ private function _getCellContent($cell, $col_start_char) { if (mb_strpos($cell, $col_start_char) === 0) { $cell = trim(mb_substr($cell, 1)); } return $cell; } } db/login/libraries/classes/Plugins/Import/Upload/UploadProgress.php000064400000004372151502156010021455 0ustar00 $id, 'finished' => false, 'percent' => 0, 'total' => 0, 'complete' => 0, 'plugin' => UploadProgress::getIdKey(), ); } $ret = $_SESSION[$SESSION_KEY][$id]; if (!ImportAjax::progressCheck() || $ret['finished']) { return $ret; } $status = uploadprogress_get_info($id); if ($status) { if ($status['bytes_uploaded'] == $status['bytes_total']) { $ret['finished'] = true; } else { $ret['finished'] = false; } $ret['total'] = $status['bytes_total']; $ret['complete'] = $status['bytes_uploaded']; if ($ret['total'] > 0) { $ret['percent'] = $ret['complete'] / $ret['total'] * 100; } } else { $ret = array( 'id' => $id, 'finished' => true, 'percent' => 100, 'total' => $ret['total'], 'complete' => $ret['total'], 'plugin' => UploadProgress::getIdKey(), ); } $_SESSION[$SESSION_KEY][$id] = $ret; return $ret; } } db/login/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php000064400000002461151502156010021441 0ustar00 $id, 'finished' => false, 'percent' => 0, 'total' => 0, 'complete' => 0, 'plugin' => UploadNoplugin::getIdKey(), ); } $ret = $_SESSION[$SESSION_KEY][$id]; return $ret; } } db/login/libraries/classes/Plugins/Import/Upload/UploadSession.php000064400000004444151502156010021274 0ustar00 $id, 'finished' => false, 'percent' => 0, 'total' => 0, 'complete' => 0, 'plugin' => UploadSession::getIdKey(), ); } $ret = $_SESSION[$SESSION_KEY][$id]; if (!ImportAjax::sessionCheck() || $ret['finished']) { return $ret; } $status = false; $sessionkey = ini_get('session.upload_progress.prefix') . $id; if (isset($_SESSION[$sessionkey])) { $status = $_SESSION[$sessionkey]; } if ($status) { $ret['finished'] = $status['done']; $ret['total'] = $status['content_length']; $ret['complete'] = $status['bytes_processed']; if ($ret['total'] > 0) { $ret['percent'] = $ret['complete'] / $ret['total'] * 100; } } else { $ret = array( 'id' => $id, 'finished' => true, 'percent' => 100, 'total' => $ret['total'], 'complete' => $ret['total'], 'plugin' => UploadSession::getIdKey(), ); } $_SESSION[$SESSION_KEY][$id] = $ret; return $ret; } } db/login/libraries/classes/Plugins/Import/Upload/UploadApc.php000064400000003612151502156010020350 0ustar00 $id, 'finished' => false, 'percent' => 0, 'total' => 0, 'complete' => 0, 'plugin' => UploadApc::getIdKey(), ); } $ret = $_SESSION[$SESSION_KEY][$id]; if (!ImportAjax::apcCheck() || $ret['finished']) { return $ret; } $status = apc_fetch('upload_' . $id); if ($status) { $ret['finished'] = (bool)$status['done']; $ret['total'] = $status['total']; $ret['complete'] = $status['current']; if ($ret['total'] > 0) { $ret['percent'] = $ret['complete'] / $ret['total'] * 100; } if ($ret['percent'] == 100) { $ret['finished'] = (bool)true; } $_SESSION[$SESSION_KEY][$id] = $ret; } return $ret; } } db/login/libraries/classes/Plugins/Import/ImportCsv.php000064400000064373151502156010017215 0ustar00setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $this->_setAnalyze(false); if ($GLOBALS['plugin_param'] !== 'table') { $this->_setAnalyze(true); } $generalOptions = parent::setProperties(); $this->properties->setText('CSV'); $this->properties->setExtension('csv'); if ($GLOBALS['plugin_param'] !== 'table') { $leaf = new BoolPropertyItem( "col_names", __( 'The first line of the file contains the table column names' . ' (if this is unchecked, the first line will become part' . ' of the data)' ) ); $generalOptions->addProperty($leaf); } else { $hint = new Message( __( 'If the data in each row of the file is not' . ' in the same order as in the database, list the corresponding' . ' column names here. Column names must be separated by commas' . ' and not enclosed in quotations.' ) ); $leaf = new TextPropertyItem( "columns", __('Column names: ') . Util::showHint($hint) ); $generalOptions->addProperty($leaf); } $leaf = new BoolPropertyItem( "ignore", __('Do not abort on INSERT error') ); $generalOptions->addProperty($leaf); } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $db, $table, $csv_terminated, $csv_enclosed, $csv_escaped, $csv_new_line, $csv_columns, $err_url; // $csv_replace and $csv_ignore should have been here, // but we use directly from $_POST global $error, $timeout_passed, $finished, $message; $replacements = array( '\\n' => "\n", '\\t' => "\t", '\\r' => "\r", ); $csv_terminated = strtr($csv_terminated, $replacements); $csv_enclosed = strtr($csv_enclosed, $replacements); $csv_escaped = strtr($csv_escaped, $replacements); $csv_new_line = strtr($csv_new_line, $replacements); $param_error = false; if (strlen($csv_terminated) === 0) { $message = Message::error( __('Invalid parameter for CSV import: %s') ); $message->addParam(__('Columns terminated with')); $error = true; $param_error = true; // The default dialog of MS Excel when generating a CSV produces a // semi-colon-separated file with no chance of specifying the // enclosing character. Thus, users who want to import this file // tend to remove the enclosing character on the Import dialog. // I could not find a test case where having no enclosing characters // confuses this script. // But the parser won't work correctly with strings so we allow just // one character. } elseif (mb_strlen($csv_enclosed) > 1) { $message = Message::error( __('Invalid parameter for CSV import: %s') ); $message->addParam(__('Columns enclosed with')); $error = true; $param_error = true; // I could not find a test case where having no escaping characters // confuses this script. // But the parser won't work correctly with strings so we allow just // one character. } elseif (mb_strlen($csv_escaped) > 1) { $message = Message::error( __('Invalid parameter for CSV import: %s') ); $message->addParam(__('Columns escaped with')); $error = true; $param_error = true; } elseif (mb_strlen($csv_new_line) != 1 && $csv_new_line != 'auto' ) { $message = Message::error( __('Invalid parameter for CSV import: %s') ); $message->addParam(__('Lines terminated with')); $error = true; $param_error = true; } // If there is an error in the parameters entered, // indicate that immediately. if ($param_error) { Util::mysqlDie( $message->getMessage(), '', false, $err_url ); } $buffer = ''; $required_fields = 0; if (!$this->_getAnalyze()) { $sql_template = 'INSERT'; if (isset($_POST['csv_ignore'])) { $sql_template .= ' IGNORE'; } $sql_template .= ' INTO ' . Util::backquote($table); $tmp_fields = $GLOBALS['dbi']->getColumns($db, $table); if (empty($csv_columns)) { $fields = $tmp_fields; } else { $sql_template .= ' ('; $fields = array(); $tmp = preg_split('/,( ?)/', $csv_columns); foreach ($tmp as $key => $val) { if (count($fields) > 0) { $sql_template .= ', '; } /* Trim also `, if user already included backquoted fields */ $val = trim($val, " \t\r\n\0\x0B`"); $found = false; foreach ($tmp_fields as $field) { if ($field['Field'] == $val) { $found = true; break; } } if (!$found) { $message = Message::error( __( 'Invalid column (%s) specified! Ensure that columns' . ' names are spelled correctly, separated by commas' . ', and not enclosed in quotes.' ) ); $message->addParam($val); $error = true; break; } $fields[] = $field; $sql_template .= Util::backquote($val); } $sql_template .= ') '; } $required_fields = count($fields); $sql_template .= ' VALUES ('; } // Defaults for parser $i = 0; $len = 0; $lastlen = null; $line = 1; $lasti = -1; $values = array(); $csv_finish = false; $tempRow = array(); $rows = array(); $col_names = array(); $tables = array(); $col_count = 0; $max_cols = 0; $csv_terminated_len = mb_strlen($csv_terminated); while (!($finished && $i >= $len) && !$error && !$timeout_passed) { $data = Import::getNextChunk(); if ($data === false) { // subtract data we didn't handle yet and stop processing $GLOBALS['offset'] -= strlen($buffer); break; } elseif ($data === true) { // Handle rest of buffer } else { // Append new data to buffer $buffer .= $data; unset($data); // Force a trailing new line at EOF to prevent parsing problems if ($finished && $buffer) { $finalch = mb_substr($buffer, -1); if ($csv_new_line == 'auto' && $finalch != "\r" && $finalch != "\n" ) { $buffer .= "\n"; } elseif ($csv_new_line != 'auto' && $finalch != $csv_new_line ) { $buffer .= $csv_new_line; } } // Do not parse string when we're not at the end // and don't have new line inside if (($csv_new_line == 'auto' && mb_strpos($buffer, "\r") === false && mb_strpos($buffer, "\n") === false) || ($csv_new_line != 'auto' && mb_strpos($buffer, $csv_new_line) === false) ) { continue; } } // Current length of our buffer $len = mb_strlen($buffer); // Currently parsed char $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } while ($i < $len) { // Deadlock protection if ($lasti == $i && $lastlen == $len) { $message = Message::error( __('Invalid format of CSV input on line %d.') ); $message->addParam($line); $error = true; break; } $lasti = $i; $lastlen = $len; // This can happen with auto EOL and \r at the end of buffer if (!$csv_finish) { // Grab empty field if ($ch == $csv_terminated) { if ($i == $len - 1) { break; } $values[] = ''; $i++; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } continue; } // Grab one field $fallbacki = $i; if ($ch == $csv_enclosed) { if ($i == $len - 1) { break; } $need_end = true; $i++; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } } else { $need_end = false; } $fail = false; $value = ''; while (($need_end && ($ch != $csv_enclosed || $csv_enclosed == $csv_escaped)) || (!$need_end && !($ch == $csv_terminated || $ch == $csv_new_line || ($csv_new_line == 'auto' && ($ch == "\r" || $ch == "\n")))) ) { if ($ch == $csv_escaped) { if ($i == $len - 1) { $fail = true; break; } $i++; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0] ) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } if ($csv_enclosed == $csv_escaped && ($ch == $csv_terminated || $ch == $csv_new_line || ($csv_new_line == 'auto' && ($ch == "\r" || $ch == "\n"))) ) { break; } } $value .= $ch; if ($i == $len - 1) { if (!$finished) { $fail = true; } break; } $i++; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } } // unquoted NULL string if (false === $need_end && $value === 'NULL') { $value = null; } if ($fail) { $i = $fallbacki; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0]) { $i += $csv_terminated_len - 1; } break; } // Need to strip trailing enclosing char? if ($need_end && $ch == $csv_enclosed) { if ($finished && $i == $len - 1) { $ch = null; } elseif ($i == $len - 1) { $i = $fallbacki; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0] ) { $i += $csv_terminated_len - 1; } break; } else { $i++; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0] ) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } } } // Are we at the end? if ($ch == $csv_new_line || ($csv_new_line == 'auto' && ($ch == "\r" || $ch == "\n")) || ($finished && $i == $len - 1) ) { $csv_finish = true; } // Go to next char if ($ch == $csv_terminated) { if ($i == $len - 1) { $i = $fallbacki; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0] ) { $i += $csv_terminated_len - 1; } break; } $i++; $ch = mb_substr($buffer, $i, 1); if ($csv_terminated_len > 1 && $ch == $csv_terminated[0] ) { $ch = $this->readCsvTerminatedString( $buffer, $ch, $i, $csv_terminated_len ); $i += $csv_terminated_len - 1; } } // If everything went okay, store value $values[] = $value; } // End of line if ($csv_finish || $ch == $csv_new_line || ($csv_new_line == 'auto' && ($ch == "\r" || $ch == "\n")) ) { if ($csv_new_line == 'auto' && $ch == "\r") { // Handle "\r\n" if ($i >= ($len - 2) && !$finished) { break; // We need more data to decide new line } if (mb_substr($buffer, $i + 1, 1) == "\n") { $i++; } } // We didn't parse value till the end of line, so there was // empty one if (!$csv_finish) { $values[] = ''; } if ($this->_getAnalyze()) { foreach ($values as $val) { $tempRow[] = $val; ++$col_count; } if ($col_count > $max_cols) { $max_cols = $col_count; } $col_count = 0; $rows[] = $tempRow; $tempRow = array(); } else { // Do we have correct count of values? if (count($values) != $required_fields) { // Hack for excel if ($values[count($values) - 1] == ';') { unset($values[count($values) - 1]); } else { $message = Message::error( __( 'Invalid column count in CSV input' . ' on line %d.' ) ); $message->addParam($line); $error = true; break; } } $first = true; $sql = $sql_template; foreach ($values as $key => $val) { if (!$first) { $sql .= ', '; } if ($val === null) { $sql .= 'NULL'; } else { $sql .= '\'' . $GLOBALS['dbi']->escapeString($val) . '\''; } $first = false; } $sql .= ')'; if (isset($_POST['csv_replace'])) { $sql .= " ON DUPLICATE KEY UPDATE "; foreach ($fields as $field) { $fieldName = Util::backquote( $field['Field'] ); $sql .= $fieldName . " = VALUES(" . $fieldName . "), "; } $sql = rtrim($sql, ', '); } /** * @todo maybe we could add original line to verbose * SQL in comment */ Import::runQuery($sql, $sql, $sql_data); } $line++; $csv_finish = false; $values = array(); $buffer = mb_substr($buffer, $i + 1); $len = mb_strlen($buffer); $i = 0; $lasti = -1; $ch = mb_substr($buffer, 0, 1); } } // End of parser loop } // End of import loop if ($this->_getAnalyze()) { /* Fill out all rows */ $num_rows = count($rows); for ($i = 0; $i < $num_rows; ++$i) { for ($j = count($rows[$i]); $j < $max_cols; ++$j) { $rows[$i][] = 'NULL'; } } if (isset($_REQUEST['csv_col_names'])) { $col_names = array_splice($rows, 0, 1); $col_names = $col_names[0]; // MySQL column names can't end with a space character. foreach ($col_names as $key => $col_name) { $col_names[$key] = rtrim($col_name); } } if ((isset($col_names) && count($col_names) != $max_cols) || !isset($col_names) ) { // Fill out column names for ($i = 0; $i < $max_cols; ++$i) { $col_names[] = 'COL ' . ($i + 1); } } if (mb_strlen($db)) { $result = $GLOBALS['dbi']->fetchResult('SHOW TABLES'); $tbl_name = 'TABLE ' . (count($result) + 1); } else { $tbl_name = 'TBL_NAME'; } $tables[] = array($tbl_name, $col_names, $rows); /* Obtain the best-fit MySQL types for each column */ $analyses = array(); $analyses[] = Import::analyzeTable($tables[0]); /** * string $db_name (no backquotes) * * array $table = array(table_name, array() column_names, array()() rows) * array $tables = array of "$table"s * * array $analysis = array(array() column_types, array() column_sizes) * array $analyses = array of "$analysis"s * * array $create = array of SQL strings * * array $options = an associative array of options */ /* Set database name to the currently selected one, if applicable */ list($db_name, $options) = $this->getDbnameAndOptions($db, 'CSV_DB'); /* Non-applicable parameters */ $create = null; /* Created and execute necessary SQL statements from data */ Import::buildSql($db_name, $tables, $analyses, $create, $options, $sql_data); unset($tables); unset($analyses); } // Commit any possible data in buffers Import::runQuery('', '', $sql_data); if (count($values) != 0 && !$error) { $message = Message::error( __('Invalid format of CSV input on line %d.') ); $message->addParam($line); $error = true; } } /** * Read the expected column_separated_with String of length * $csv_terminated_len from the $buffer * into variable $ch and return the read string $ch * * @param string $buffer The original string buffer read from * csv file * @param string $ch Partially read "column Separated with" * string, also used to return after * reading length equal $csv_terminated_len * @param int $i Current read counter of buffer string * @param int $csv_terminated_len The length of "column separated with" * String * * @return string */ public function readCsvTerminatedString($buffer, $ch, $i, $csv_terminated_len) { for ($j = 0; $j < $csv_terminated_len - 1; $j++) { $i++; $ch .= mb_substr($buffer, $i, 1); } return $ch; } /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Returns true if the table should be analyzed, false otherwise * * @return bool */ private function _getAnalyze() { return $this->_analyze; } /** * Sets to true if the table should be analyzed, false otherwise * * @param bool $analyze status * * @return void */ private function _setAnalyze($analyze) { $this->_analyze = $analyze; } } db/login/libraries/classes/Plugins/Import/README000064400000010670151502156010015425 0ustar00This directory holds import plugins for phpMyAdmin. Any new plugin should basically follow the structure presented here. The messages must use our gettext mechanism, see https://wiki.phpmyadmin.net/pma/Gettext_for_developers. setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $importPluginProperties = new PhpMyAdmin\Properties\Plugins\ImportPluginProperties(); $importPluginProperties->setText('[name]'); // the name of your plug-in $importPluginProperties->setExtension('[ext]'); // extension this plug-in can handle $importPluginProperties->setOptionsText(__('Options')); // create the root group that will be the options field for // $importPluginProperties // this will be shown as "Format specific options" $importSpecificOptions = new PhpMyAdmin\Properties\Options\Groups\OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new PhpMyAdmin\Properties\Options\Groups\OptionsPropertyMainGroup( "general_opts" ); // optional : // create primary items and add them to the group // type - one of the classes listed in libraries/properties/options/items/ // name - form element name // text - description in GUI // size - size of text element // len - maximal size of input // values - possible values of the item $leaf = new PhpMyAdmin\Properties\Options\Items\RadioPropertyItem( "structure_or_data" ); $leaf->setValues( array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data') ) ); $generalOptions->addProperty($leaf); // add the main group to the root group $importSpecificOptions->addProperty($generalOptions); // set the options for the import plugin property item $importPluginProperties->setOptions($importSpecificOptions); $this->properties = $importPluginProperties; } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(&$sql_data = array()) { // get globals (others are optional) global $error, $timeout_passed, $finished; $buffer = ''; while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) { $data = Import::getNextChunk(); if ($data === false) { // subtract data we didn't handle yet and stop processing $GLOBALS['offset'] -= strlen($buffer); break; } elseif ($data === true) { // Handle rest of buffer } else { // Append new data to buffer $buffer .= $data; } // PARSE $buffer here, post sql queries using: Import::runQuery($sql, $verbose_sql_with_comments, $sql_data); } // End of import loop // Commit any possible data in buffers Import::runQuery('', '', $sql_data); } // optional: /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ /** * Getter description * * @return type */ private function _getMyOptionalVariable() { return $this->_myOptionalVariable; } /** * Setter description * * @param type $my_optional_variable description * * @return void */ private function _setMyOptionalVariable($my_optional_variable) { $this->_myOptionalVariable = $my_optional_variable; } } ?> db/login/libraries/classes/Plugins/Import/ImportShp.php000064400000023676151502156010017215 0ustar00setProperties(); if (extension_loaded('zip')) { $this->zipExtension = new ZipExtension(); } } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $importPluginProperties = new ImportPluginProperties(); $importPluginProperties->setText(__('ESRI Shape File')); $importPluginProperties->setExtension('shp'); $importPluginProperties->setOptions(array()); $importPluginProperties->setOptionsText(__('Options')); $this->properties = $importPluginProperties; } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $db, $error, $finished, $import_file, $local_import_file, $message; $GLOBALS['finished'] = false; $compression = $GLOBALS['import_handle']->getCompression(); $shp = new ShapeFileImport(1); // If the zip archive has more than one file, // get the correct content to the buffer from .shp file. if ($compression == 'application/zip' && $this->zipExtension->getNumberOfFiles($import_file) > 1 ) { if ($GLOBALS['import_handle']->openZip('/^.*\.shp$/i') === false) { $message = Message::error( __('There was an error importing the ESRI shape file: "%s".') ); $message->addParam($GLOBALS['import_handle']->getError()); return; } } $temp_dbf_file = false; // We need dbase extension to handle .dbf file if (extension_loaded('dbase')) { $temp = $GLOBALS['PMA_Config']->getTempDir('shp'); // If we can extract the zip archive to 'TempDir' // and use the files in it for import if ($compression == 'application/zip' && ! is_null($temp)) { $dbf_file_name = $this->zipExtension->findFile( $import_file, '/^.*\.dbf$/i' ); // If the corresponding .dbf file is in the zip archive if ($dbf_file_name) { // Extract the .dbf file and point to it. $extracted = $this->zipExtension->extract( $import_file, $dbf_file_name ); if ($extracted !== false) { $dbf_file_path = $temp . (PMA_IS_WINDOWS ? '\\' : '/') . Sanitize::sanitizeFilename($dbf_file_name, true); $handle = fopen($dbf_file_path, 'wb'); if ($handle !== false) { fwrite($handle, $extracted); fclose($handle); $temp_dbf_file = true; // Replace the .dbf with .*, as required // by the bsShapeFiles library. $file_name = substr( $dbf_file_path, 0, strlen($dbf_file_path) - 4 ) . '.*'; $shp->FileName = $file_name; } } } } elseif (!empty($local_import_file) && !empty($GLOBALS['cfg']['UploadDir']) && $compression == 'none' ) { // If file is in UploadDir, use .dbf file in the same UploadDir // to load extra data. // Replace the .shp with .*, // so the bsShapeFiles library correctly locates .dbf file. $file_name = mb_substr( $import_file, 0, mb_strlen($import_file) - 4 ) . '.*'; $shp->FileName = $file_name; } } // Delete the .dbf file extracted to 'TempDir' if ($temp_dbf_file && isset($dbf_file_path) && @file_exists($dbf_file_path) ) { unlink($dbf_file_path); } // Load data $shp->loadFromFile(''); if ($shp->lastError != "") { $error = true; $message = Message::error( __('There was an error importing the ESRI shape file: "%s".') ); $message->addParam($shp->lastError); return; } switch ($shp->shapeType) { // ESRI Null Shape case 0: break; // ESRI Point case 1: $gis_type = 'point'; break; // ESRI PolyLine case 3: $gis_type = 'multilinestring'; break; // ESRI Polygon case 5: $gis_type = 'multipolygon'; break; // ESRI MultiPoint case 8: $gis_type = 'multipoint'; break; default: $error = true; $message = Message::error( __('MySQL Spatial Extension does not support ESRI type "%s".') ); $message->addParam($shp->getShapeName()); return; } if (isset($gis_type)) { /** @var GisMultiLineString|\PhpMyAdmin\Gis\GisMultiPoint|\PhpMyAdmin\Gis\GisPoint|GisPolygon $gis_obj */ $gis_obj = GisFactory::factory($gis_type); } else { $gis_obj = null; } $num_rows = count($shp->records); // If .dbf file is loaded, the number of extra data columns $num_data_cols = isset($shp->DBFHeader) ? count($shp->DBFHeader) : 0; $rows = array(); $col_names = array(); if ($num_rows != 0) { foreach ($shp->records as $record) { $tempRow = array(); if ($gis_obj == null) { $tempRow[] = null; } else { $tempRow[] = "GeomFromText('" . $gis_obj->getShape($record->SHPData) . "')"; } if (isset($shp->DBFHeader)) { foreach ($shp->DBFHeader as $c) { $cell = trim($record->DBFData[$c[0]]); if (!strcmp($cell, '')) { $cell = 'NULL'; } $tempRow[] = $cell; } } $rows[] = $tempRow; } } if (count($rows) == 0) { $error = true; $message = Message::error( __('The imported file does not contain any data!') ); return; } // Column names for spatial column and the rest of the columns, // if they are available $col_names[] = 'SPATIAL'; for ($n = 0; $n < $num_data_cols; $n++) { $col_names[] = $shp->DBFHeader[$n][0]; } // Set table name based on the number of tables if (strlen($db) > 0) { $result = $GLOBALS['dbi']->fetchResult('SHOW TABLES'); $table_name = 'TABLE ' . (count($result) + 1); } else { $table_name = 'TBL_NAME'; } $tables = array(array($table_name, $col_names, $rows)); // Use data from shape file to chose best-fit MySQL types for each column $analyses = array(); $analyses[] = Import::analyzeTable($tables[0]); $table_no = 0; $spatial_col = 0; $analyses[$table_no][Import::TYPES][$spatial_col] = Import::GEOMETRY; $analyses[$table_no][Import::FORMATTEDSQL][$spatial_col] = true; // Set database name to the currently selected one, if applicable if (strlen($db) > 0) { $db_name = $db; $options = array('create_db' => false); } else { $db_name = 'SHP_DB'; $options = null; } // Created and execute necessary SQL statements from data $null_param = null; Import::buildSql($db_name, $tables, $analyses, $null_param, $options, $sql_data); unset($tables); unset($analyses); $finished = true; $error = false; // Commit any possible data in buffers Import::runQuery('', '', $sql_data); } /** * Returns specified number of bytes from the buffer. * Buffer automatically fetches next chunk of data when the buffer * falls short. * Sets $eof when $GLOBALS['finished'] is set and the buffer falls short. * * @param int $length number of bytes * * @return string */ public static function readFromBuffer($length) { global $buffer, $eof; if (strlen($buffer) < $length) { if ($GLOBALS['finished']) { $eof = true; } else { $buffer .= Import::getNextChunk(); } } $result = substr($buffer, 0, $length); $buffer = substr($buffer, $length); return $result; } } db/login/libraries/classes/Plugins/Import/ShapeFileImport.php000064400000001445151502156010020311 0ustar00setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $importPluginProperties = new ImportPluginProperties(); $importPluginProperties->setText(__('XML')); $importPluginProperties->setExtension('xml'); $importPluginProperties->setMimeType('text/xml'); $importPluginProperties->setOptions(array()); $importPluginProperties->setOptionsText(__('Options')); $this->properties = $importPluginProperties; } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $error, $timeout_passed, $finished, $db; $i = 0; $len = 0; $buffer = ""; /** * Read in the file via Import::getNextChunk so that * it can process compressed files */ while (!($finished && $i >= $len) && !$error && !$timeout_passed) { $data = Import::getNextChunk(); if ($data === false) { /* subtract data we didn't handle yet and stop processing */ $GLOBALS['offset'] -= strlen($buffer); break; } elseif ($data === true) { /* Handle rest of buffer */ } else { /* Append new data to buffer */ $buffer .= $data; unset($data); } } unset($data); /** * Disable loading of external XML entities. */ libxml_disable_entity_loader(); /** * Load the XML string * * The option LIBXML_COMPACT is specified because it can * result in increased performance without the need to * alter the code in any way. It's basically a freebee. */ $xml = @simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT); unset($buffer); /** * The XML was malformed */ if ($xml === false) { Message::error( __( 'The XML file specified was either malformed or incomplete.' . ' Please correct the issue and try again.' ) ) ->display(); unset($xml); $GLOBALS['finished'] = false; return; } /** * Table accumulator */ $tables = array(); /** * Row accumulator */ $rows = array(); /** * Temp arrays */ $tempRow = array(); $tempCells = array(); /** * CREATE code included (by default: no) */ $struct_present = false; /** * Analyze the data in each table */ $namespaces = $xml->getNameSpaces(true); /** * Get the database name, collation and charset */ $db_attr = $xml->children(isset($namespaces['pma']) ? $namespaces['pma'] : null) ->{'structure_schemas'}->{'database'}; if ($db_attr instanceof SimpleXMLElement) { $db_attr = $db_attr->attributes(); $db_name = (string)$db_attr['name']; $collation = (string)$db_attr['collation']; $charset = (string)$db_attr['charset']; } else { /** * If the structure section is not present * get the database name from the data section */ $db_attr = $xml->children() ->attributes(); $db_name = (string)$db_attr['name']; $collation = null; $charset = null; } /** * The XML was malformed */ if ($db_name === null) { Message::error( __( 'The XML file specified was either malformed or incomplete.' . ' Please correct the issue and try again.' ) ) ->display(); unset($xml); $GLOBALS['finished'] = false; return; } /** * Retrieve the structure information */ if (isset($namespaces['pma'])) { /** * Get structures for all tables * * @var SimpleXMLElement $struct */ $struct = $xml->children($namespaces['pma']); $create = array(); /** @var SimpleXMLElement $val1 */ foreach ($struct as $val1) { /** @var SimpleXMLElement $val2 */ foreach ($val1 as $val2) { // Need to select the correct database for the creation of // tables, views, triggers, etc. /** * @todo Generating a USE here blocks importing of a table * into another database. */ $attrs = $val2->attributes(); $create[] = "USE " . Util::backquote( $attrs["name"] ); foreach ($val2 as $val3) { /** * Remove the extra cosmetic spacing */ $val3 = str_replace(" ", "", (string)$val3); $create[] = $val3; } } } $struct_present = true; } /** * Move down the XML tree to the actual data */ $xml = $xml->children() ->children(); $data_present = false; /** * Only attempt to analyze/collect data if there is data present */ if ($xml && @count($xml->children())) { $data_present = true; /** * Process all database content */ foreach ($xml as $v1) { $tbl_attr = $v1->attributes(); $isInTables = false; $num_tables = count($tables); for ($i = 0; $i < $num_tables; ++$i) { if (!strcmp($tables[$i][Import::TBL_NAME], (string)$tbl_attr['name'])) { $isInTables = true; break; } } if (!$isInTables) { $tables[] = array((string)$tbl_attr['name']); } foreach ($v1 as $v2) { $row_attr = $v2->attributes(); if (!array_search((string)$row_attr['name'], $tempRow)) { $tempRow[] = (string)$row_attr['name']; } $tempCells[] = (string)$v2; } $rows[] = array((string)$tbl_attr['name'], $tempRow, $tempCells); $tempRow = array(); $tempCells = array(); } unset($tempRow); unset($tempCells); unset($xml); /** * Bring accumulated rows into the corresponding table */ $num_tables = count($tables); for ($i = 0; $i < $num_tables; ++$i) { $num_rows = count($rows); for ($j = 0; $j < $num_rows; ++$j) { if (!strcmp($tables[$i][Import::TBL_NAME], $rows[$j][Import::TBL_NAME])) { if (!isset($tables[$i][Import::COL_NAMES])) { $tables[$i][] = $rows[$j][Import::COL_NAMES]; } $tables[$i][Import::ROWS][] = $rows[$j][Import::ROWS]; } } } unset($rows); if (!$struct_present) { $analyses = array(); $len = count($tables); for ($i = 0; $i < $len; ++$i) { $analyses[] = Import::analyzeTable($tables[$i]); } } } unset($xml); unset($tempCells); unset($rows); /** * Only build SQL from data if there is data present */ if ($data_present) { /** * Set values to NULL if they were not present * to maintain Import::buildSql() call integrity */ if (!isset($analyses)) { $analyses = null; if (!$struct_present) { $create = null; } } } /** * string $db_name (no backquotes) * * array $table = array(table_name, array() column_names, array()() rows) * array $tables = array of "$table"s * * array $analysis = array(array() column_types, array() column_sizes) * array $analyses = array of "$analysis"s * * array $create = array of SQL strings * * array $options = an associative array of options */ /* Set database name to the currently selected one, if applicable */ if (strlen($db)) { /* Override the database name in the XML file, if one is selected */ $db_name = $db; $options = array('create_db' => false); } else { if ($db_name === null) { $db_name = 'XML_DB'; } /* Set database collation/charset */ $options = array( 'db_collation' => $collation, 'db_charset' => $charset, ); } /* Created and execute necessary SQL statements from data */ Import::buildSql($db_name, $tables, $analyses, $create, $options, $sql_data); unset($analyses); unset($tables); unset($create); /* Commit any possible data in buffers */ Import::runQuery('', '', $sql_data); } } db/login/libraries/classes/Plugins/Import/ImportSql.php000064400000014022151502156010017203 0ustar00setProperties(); } /** * Sets the import plugin properties. * Called in the constructor. * * @return void */ protected function setProperties() { $importPluginProperties = new ImportPluginProperties(); $importPluginProperties->setText('SQL'); $importPluginProperties->setExtension('sql'); $importPluginProperties->setOptionsText(__('Options')); $compats = $GLOBALS['dbi']->getCompatibilities(); if (count($compats) > 0) { $values = array(); foreach ($compats as $val) { $values[$val] = $val; } // create the root group that will be the options field for // $importPluginProperties // this will be shown as "Format specific options" $importSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create primary items and add them to the group $leaf = new SelectPropertyItem( "compatibility", __('SQL compatibility mode:') ); $leaf->setValues($values); $leaf->setDoc( array( 'manual_MySQL_Database_Administration', 'Server_SQL_mode', ) ); $generalOptions->addProperty($leaf); $leaf = new BoolPropertyItem( "no_auto_value_on_zero", __('Do not use AUTO_INCREMENT for zero values') ); $leaf->setDoc( array( 'manual_MySQL_Database_Administration', 'Server_SQL_mode', 'sqlmode_no_auto_value_on_zero', ) ); $generalOptions->addProperty($leaf); // add the main group to the root group $importSpecificOptions->addProperty($generalOptions); // set the options for the import plugin property item $importPluginProperties->setOptions($importSpecificOptions); } $this->properties = $importPluginProperties; } /** * Handles the whole import logic * * @param array &$sql_data 2-element array with sql data * * @return void */ public function doImport(array &$sql_data = array()) { global $error, $timeout_passed; // Handle compatibility options. $this->_setSQLMode($GLOBALS['dbi'], $_REQUEST); $bq = new BufferedQuery(); if (isset($_POST['sql_delimiter'])) { $bq->setDelimiter($_POST['sql_delimiter']); } /** * Will be set in Import::getNextChunk(). * * @global bool $GLOBALS ['finished'] */ $GLOBALS['finished'] = false; while ((!$error) && (!$timeout_passed)) { // Getting the first statement, the remaining data and the last // delimiter. $statement = $bq->extract(); // If there is no full statement, we are looking for more data. if (empty($statement)) { // Importing new data. $newData = Import::getNextChunk(); // Subtract data we didn't handle yet and stop processing. if ($newData === false) { $GLOBALS['offset'] -= mb_strlen($bq->query); break; } // Checking if the input buffer has finished. if ($newData === true) { $GLOBALS['finished'] = true; break; } // Convert CR (but not CRLF) to LF otherwise all queries may // not get executed on some platforms. $bq->query .= preg_replace("/\r($|[^\n])/", "\n$1", $newData); continue; } // Executing the query. Import::runQuery($statement, $statement, $sql_data); } // Extracting remaining statements. while ((!$error) && (!$timeout_passed) && (!empty($bq->query))) { $statement = $bq->extract(true); if (!empty($statement)) { Import::runQuery($statement, $statement, $sql_data); } } // Finishing. Import::runQuery('', '', $sql_data); } /** * Handle compatibility options * * @param PhpMyAdmin\DatabaseInterface $dbi Database interface * @param array $request Request array * * @return void */ private function _setSQLMode($dbi, array $request) { $sql_modes = array(); if (isset($request['sql_compatibility']) && 'NONE' != $request['sql_compatibility'] ) { $sql_modes[] = $request['sql_compatibility']; } if (isset($request['sql_no_auto_value_on_zero'])) { $sql_modes[] = 'NO_AUTO_VALUE_ON_ZERO'; } if (count($sql_modes) > 0) { $dbi->tryQuery( 'SET SQL_MODE="' . implode(',', $sql_modes) . '"' ); } } } db/login/libraries/classes/Plugins/Import/AbstractImportCsv.php000064400000005666151502156010020701 0ustar00setOptionsText(__('Options')); // create the root group that will be the options field for // $importPluginProperties // this will be shown as "Format specific options" $importSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // general options main group $generalOptions = new OptionsPropertyMainGroup("general_opts"); // create common items and add them to the group $leaf = new BoolPropertyItem( "replace", __( 'Update data when duplicate keys found on import (add ON DUPLICATE ' . 'KEY UPDATE)' ) ); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "terminated", __('Columns separated with:') ); $leaf->setSize(2); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "enclosed", __('Columns enclosed with:') ); $leaf->setSize(2); $leaf->setLen(2); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "escaped", __('Columns escaped with:') ); $leaf->setSize(2); $leaf->setLen(2); $generalOptions->addProperty($leaf); $leaf = new TextPropertyItem( "new_line", __('Lines terminated with:') ); $leaf->setSize(2); $generalOptions->addProperty($leaf); // add the main group to the root group $importSpecificOptions->addProperty($generalOptions); // set the options for the import plugin property item $importPluginProperties->setOptions($importSpecificOptions); $this->properties = $importPluginProperties; return $generalOptions; } } db/login/libraries/classes/Plugins/Schema/ExportRelationSchema.php000064400000015355151502156010021311 0ustar00db = $db; $this->diagram = $diagram; $this->setPageNumber($_REQUEST['page_number']); $this->setOffline(isset($_REQUEST['offline_export'])); $this->relation = new Relation(); } /** * Set Page Number * * @param integer $value Page Number of the document to be created * * @return void */ public function setPageNumber($value) { $this->pageNumber = intval($value); } /** * Returns the schema page number * * @return integer schema page number */ public function getPageNumber() { return $this->pageNumber; } /** * Sets showColor * * @param boolean $value whether to show colors * * @return void */ public function setShowColor($value) { $this->showColor = $value; } /** * Returns whether to show colors * * @return boolean whether to show colors */ public function isShowColor() { return $this->showColor; } /** * Set Table Dimension * * @param boolean $value show table co-ordinates or not * * @return void */ public function setTableDimension($value) { $this->tableDimension = $value; } /** * Returns whether to show table dimensions * * @return boolean whether to show table dimensions */ public function isTableDimension() { return $this->tableDimension; } /** * Set same width of All Tables * * @param boolean $value set same width of all tables or not * * @return void */ public function setAllTablesSameWidth($value) { $this->sameWide = $value; } /** * Returns whether to use same width for all tables or not * * @return boolean whether to use same width for all tables or not */ public function isAllTableSameWidth() { return $this->sameWide; } /** * Set Show only keys * * @param boolean $value show only keys or not * * @return void * * @access public */ public function setShowKeys($value) { $this->showKeys = $value; } /** * Returns whether to show keys * * @return boolean whether to show keys */ public function isShowKeys() { return $this->showKeys; } /** * Set Orientation * * @param string $value Orientation will be portrait or landscape * * @return void * * @access public */ public function setOrientation($value) { $this->orientation = ($value == 'P') ? 'P' : 'L'; } /** * Returns orientation * * @return string orientation */ public function getOrientation() { return $this->orientation; } /** * Set type of paper * * @param string $value paper type can be A4 etc * * @return void * * @access public */ public function setPaper($value) { $this->paper = $value; } /** * Returns the paper size * * @return string paper size */ public function getPaper() { return $this->paper; } /** * Set whether the document is generated from client side DB * * @param boolean $value offline or not * * @return void * * @access public */ public function setOffline($value) { $this->offline = $value; } /** * Returns whether the client side database is used * * @return boolean * * @access public */ public function isOffline() { return $this->offline; } /** * Get the table names from the request * * @return array an array of table names */ protected function getTablesFromRequest() { $tables = []; if (isset($_POST['t_tbl'])) { foreach($_POST['t_tbl'] as $table) { $tables[] = rawurldecode($table); } } return $tables; } /** * Returns the file name * * @param String $extension file extension * * @return string file name */ protected function getFileName($extension) { $filename = $this->db . $extension; // Get the name of this page to use as filename if ($this->pageNumber != -1 && !$this->offline) { $_name_sql = 'SELECT page_descr FROM ' . Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . Util::backquote($GLOBALS['cfgRelation']['pdf_pages']) . ' WHERE page_nr = ' . $this->pageNumber; $_name_rs = $this->relation->queryAsControlUser($_name_sql); $_name_row = $GLOBALS['dbi']->fetchRow($_name_rs); $filename = $_name_row[0] . $extension; } return $filename; } /** * Displays an error message * * @param integer $pageNumber ID of the chosen page * @param string $type Schema Type * @param string $error_message The error message * * @access public * * @return void */ public static function dieSchema($pageNumber, $type = '', $error_message = '') { echo "

" , __("SCHEMA ERROR: ") , $type , "

" , "\n"; if (!empty($error_message)) { $error_message = htmlspecialchars($error_message); } echo '

' , "\n"; echo ' ' , $error_message , "\n"; echo '

' , "\n"; echo '' , __('Back') , ''; echo "\n"; exit; } } db/login/libraries/classes/Plugins/Schema/Eps/TableStatsEps.php000064400000011540151502156010020446 0ustar00_setHeightTable($fontSize); // setWidth must me after setHeight, because title // can include table height which changes table width $this->_setWidthTable($font, $fontSize); if ($same_wide_width < $this->width) { $same_wide_width = $this->width; } } /** * Displays an error when the table cannot be found. * * @return void */ protected function showMissingTableError() { ExportRelationSchema::dieSchema( $this->pageNumber, "EPS", sprintf(__('The %s table doesn\'t exist!'), $this->tableName) ); } /** * Sets the width of the table * * @param string $font The font name * @param integer $fontSize The font size * * @return void * * @see PMA_EPS */ private function _setWidthTable($font, $fontSize) { foreach ($this->fields as $field) { $this->width = max( $this->width, Font::getStringWidth($field, $font, $fontSize) ); } $this->width += Font::getStringWidth( ' ', $font, $fontSize ); /* * it is unknown what value must be added, because * table title is affected by the table width value */ while ($this->width < Font::getStringWidth( $this->getTitle(), $font, $fontSize )) { $this->width += 7; } } /** * Sets the height of the table * * @param integer $fontSize The font size * * @return void */ private function _setHeightTable($fontSize) { $this->heightCell = $fontSize + 4; $this->height = (count($this->fields) + 1) * $this->heightCell; } /** * Draw the table * * @param boolean $showColor Whether to display color * * @return void * * @see PMA_EPS,PMA_EPS::line,PMA_EPS::rect */ public function tableDraw($showColor) { //echo $this->tableName.'
'; $this->diagram->rect( $this->x, $this->y + 12, $this->width, $this->heightCell, 1 ); $this->diagram->showXY($this->getTitle(), $this->x + 5, $this->y + 14); foreach ($this->fields as $field) { $this->currentCell += $this->heightCell; $this->diagram->rect( $this->x, $this->y + 12 + $this->currentCell, $this->width, $this->heightCell, 1 ); $this->diagram->showXY( $field, $this->x + 5, $this->y + 14 + $this->currentCell ); } } } db/login/libraries/classes/Plugins/Schema/Eps/Eps.php000064400000017430151502156010016463 0ustar00stringCommands = ""; $this->stringCommands .= "%!PS-Adobe-3.0 EPSF-3.0 \n"; } /** * Set document title * * @param string $value sets the title text * * @return void */ public function setTitle($value) { $this->stringCommands .= '%%Title: ' . $value . "\n"; } /** * Set document author * * @param string $value sets the author * * @return void */ public function setAuthor($value) { $this->stringCommands .= '%%Creator: ' . $value . "\n"; } /** * Set document creation date * * @param string $value sets the date * * @return void */ public function setDate($value) { $this->stringCommands .= '%%CreationDate: ' . $value . "\n"; } /** * Set document orientation * * @param string $orientation sets the orientation * * @return void */ public function setOrientation($orientation) { $this->stringCommands .= "%%PageOrder: Ascend \n"; if ($orientation == "L") { $orientation = "Landscape"; $this->stringCommands .= '%%Orientation: ' . $orientation . "\n"; } else { $orientation = "Portrait"; $this->stringCommands .= '%%Orientation: ' . $orientation . "\n"; } $this->stringCommands .= "%%EndComments \n"; $this->stringCommands .= "%%Pages 1 \n"; $this->stringCommands .= "%%BoundingBox: 72 150 144 170 \n"; } /** * Set the font and size * * font can be set whenever needed in EPS * * @param string $value sets the font name e.g Arial * @param integer $size sets the size of the font e.g 10 * * @return void */ public function setFont($value, $size) { $this->font = $value; $this->fontSize = $size; $this->stringCommands .= "/" . $value . " findfont % Get the basic font\n"; $this->stringCommands .= "" . $size . " scalefont % Scale the font to $size points\n"; $this->stringCommands .= "setfont % Make it the current font\n"; } /** * Get the font * * @return string return the font name e.g Arial */ public function getFont() { return $this->font; } /** * Get the font Size * * @return string return the size of the font e.g 10 */ public function getFontSize() { return $this->fontSize; } /** * Draw the line * * drawing the lines from x,y source to x,y destination and set the * width of the line. lines helps in showing relationships of tables * * @param integer $x_from The x_from attribute defines the start * left position of the element * @param integer $y_from The y_from attribute defines the start * right position of the element * @param integer $x_to The x_to attribute defines the end * left position of the element * @param integer $y_to The y_to attribute defines the end * right position of the element * @param integer $lineWidth Sets the width of the line e.g 2 * * @return void */ public function line( $x_from = 0, $y_from = 0, $x_to = 0, $y_to = 0, $lineWidth = 0 ) { $this->stringCommands .= $lineWidth . " setlinewidth \n"; $this->stringCommands .= $x_from . ' ' . $y_from . " moveto \n"; $this->stringCommands .= $x_to . ' ' . $y_to . " lineto \n"; $this->stringCommands .= "stroke \n"; } /** * Draw the rectangle * * drawing the rectangle from x,y source to x,y destination and set the * width of the line. rectangles drawn around the text shown of fields * * @param integer $x_from The x_from attribute defines the start * left position of the element * @param integer $y_from The y_from attribute defines the start * right position of the element * @param integer $x_to The x_to attribute defines the end * left position of the element * @param integer $y_to The y_to attribute defines the end * right position of the element * @param integer $lineWidth Sets the width of the line e.g 2 * * @return void */ public function rect($x_from, $y_from, $x_to, $y_to, $lineWidth) { $this->stringCommands .= $lineWidth . " setlinewidth \n"; $this->stringCommands .= "newpath \n"; $this->stringCommands .= $x_from . " " . $y_from . " moveto \n"; $this->stringCommands .= "0 " . $y_to . " rlineto \n"; $this->stringCommands .= $x_to . " 0 rlineto \n"; $this->stringCommands .= "0 -" . $y_to . " rlineto \n"; $this->stringCommands .= "closepath \n"; $this->stringCommands .= "stroke \n"; } /** * Set the current point * * The moveto operator takes two numbers off the stack and treats * them as x and y coordinates to which to move. The coordinates * specified become the current point. * * @param integer $x The x attribute defines the left position of the element * @param integer $y The y attribute defines the right position of the element * * @return void */ public function moveTo($x, $y) { $this->stringCommands .= $x . ' ' . $y . " moveto \n"; } /** * Output/Display the text * * @param string $text The string to be displayed * * @return void */ public function show($text) { $this->stringCommands .= '(' . $text . ") show \n"; } /** * Output the text at specified co-ordinates * * @param string $text String to be displayed * @param integer $x X attribute defines the left position of the element * @param integer $y Y attribute defines the right position of the element * * @return void */ public function showXY($text, $x, $y) { $this->moveTo($x, $y); $this->show($text); } /** * Ends EPS Document * * @return void */ public function endEpsDoc() { $this->stringCommands .= "showpage \n"; } /** * Output EPS Document for download * * @param string $fileName name of the eps document * * @return void */ public function showOutput($fileName) { // if(ob_get_clean()){ //ob_end_clean(); //} $output = $this->stringCommands; Response::getInstance() ->disable(); Core::downloadHeader( $fileName, 'image/x-eps', strlen($output) ); print $output; } } db/login/libraries/classes/Plugins/Schema/Eps/RelationStatsEps.php000064400000006571151502156010021204 0ustar00wTick = 10; parent::__construct( $diagram, $master_table, $master_field, $foreign_table, $foreign_field ); $this->ySrc += 10; $this->yDest += 10; } /** * draws relation links and arrows * shows foreign key relations * * @see PMA_EPS * * @return void */ public function relationDraw() { // draw a line like -- to foreign field $this->diagram->line( $this->xSrc, $this->ySrc, $this->xSrc + $this->srcDir * $this->wTick, $this->ySrc, 1 ); // draw a line like -- to master field $this->diagram->line( $this->xDest + $this->destDir * $this->wTick, $this->yDest, $this->xDest, $this->yDest, 1 ); // draw a line that connects to master field line and foreign field line $this->diagram->line( $this->xSrc + $this->srcDir * $this->wTick, $this->ySrc, $this->xDest + $this->destDir * $this->wTick, $this->yDest, 1 ); $root2 = 2 * sqrt(2); $this->diagram->line( $this->xSrc + $this->srcDir * $this->wTick * 0.75, $this->ySrc, $this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick, $this->ySrc + $this->wTick / $root2, 1 ); $this->diagram->line( $this->xSrc + $this->srcDir * $this->wTick * 0.75, $this->ySrc, $this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick, $this->ySrc - $this->wTick / $root2, 1 ); $this->diagram->line( $this->xDest + $this->destDir * $this->wTick / 2, $this->yDest, $this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick, $this->yDest + $this->wTick / $root2, 1 ); $this->diagram->line( $this->xDest + $this->destDir * $this->wTick / 2, $this->yDest, $this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick, $this->yDest - $this->wTick / $root2, 1 ); } } db/login/libraries/classes/Plugins/Schema/Eps/EpsRelationSchema.php000064400000016451151502156010021304 0ustar00setShowColor(isset($_REQUEST['eps_show_color'])); $this->setShowKeys(isset($_REQUEST['eps_show_keys'])); $this->setTableDimension(isset($_REQUEST['eps_show_table_dimension'])); $this->setAllTablesSameWidth(isset($_REQUEST['eps_all_tables_same_width'])); $this->setOrientation($_REQUEST['eps_orientation']); $this->diagram->setTitle( sprintf( __('Schema of the %s database - Page %s'), $this->db, $this->pageNumber ) ); $this->diagram->setAuthor('phpMyAdmin ' . PMA_VERSION); $this->diagram->setDate(date("j F Y, g:i a")); $this->diagram->setOrientation($this->orientation); $this->diagram->setFont('Verdana', '10'); $alltables = $this->getTablesFromRequest(); foreach ($alltables as $table) { if (! isset($this->_tables[$table])) { $this->_tables[$table] = new TableStatsEps( $this->diagram, $this->db, $table, $this->diagram->getFont(), $this->diagram->getFontSize(), $this->pageNumber, $this->_tablewidth, $this->showKeys, $this->tableDimension, $this->offline ); } if ($this->sameWide) { $this->_tables[$table]->width = $this->_tablewidth; } } $seen_a_relation = false; foreach ($alltables as $one_table) { $exist_rel = $this->relation->getForeigners($this->db, $one_table, '', 'both'); if (!$exist_rel) { continue; } $seen_a_relation = true; foreach ($exist_rel as $master_field => $rel) { /* put the foreign table on the schema only if selected * by the user * (do not use array_search() because we would have to * to do a === false and this is not PHP3 compatible) */ if ($master_field != 'foreign_keys_data') { if (in_array($rel['foreign_table'], $alltables)) { $this->_addRelation( $one_table, $this->diagram->getFont(), $this->diagram->getFontSize(), $master_field, $rel['foreign_table'], $rel['foreign_field'], $this->tableDimension ); } continue; } foreach ($rel as $one_key) { if (!in_array($one_key['ref_table_name'], $alltables)) { continue; } foreach ($one_key['index_list'] as $index => $one_field ) { $this->_addRelation( $one_table, $this->diagram->getFont(), $this->diagram->getFontSize(), $one_field, $one_key['ref_table_name'], $one_key['ref_index_list'][$index], $this->tableDimension ); } } } } if ($seen_a_relation) { $this->_drawRelations(); } $this->_drawTables(); $this->diagram->endEpsDoc(); } /** * Output Eps Document for download * * @return void */ public function showOutput() { $this->diagram->showOutput($this->getFileName('.eps')); } /** * Defines relation objects * * @param string $masterTable The master table name * @param string $font The font * @param int $fontSize The font size * @param string $masterField The relation field in the master table * @param string $foreignTable The foreign table name * @param string $foreignField The relation field in the foreign table * @param boolean $tableDimension Whether to display table position or not * * @return void * * @see _setMinMax,Table_Stats_Eps::__construct(), * PhpMyAdmin\Plugins\Schema\Eps\RelationStatsEps::__construct() */ private function _addRelation( $masterTable, $font, $fontSize, $masterField, $foreignTable, $foreignField, $tableDimension ) { if (! isset($this->_tables[$masterTable])) { $this->_tables[$masterTable] = new TableStatsEps( $this->diagram, $this->db, $masterTable, $font, $fontSize, $this->pageNumber, $this->_tablewidth, false, $tableDimension ); } if (! isset($this->_tables[$foreignTable])) { $this->_tables[$foreignTable] = new TableStatsEps( $this->diagram, $this->db, $foreignTable, $font, $fontSize, $this->pageNumber, $this->_tablewidth, false, $tableDimension ); } $this->_relations[] = new RelationStatsEps( $this->diagram, $this->_tables[$masterTable], $masterField, $this->_tables[$foreignTable], $foreignField ); } /** * Draws relation arrows and lines connects master table's master field to * foreign table's foreign field * * @return void * * @see Relation_Stats_Eps::relationDraw() */ private function _drawRelations() { foreach ($this->_relations as $relation) { $relation->relationDraw(); } } /** * Draws tables * * @return void * * @see Table_Stats_Eps::Table_Stats_tableDraw() */ private function _drawTables() { foreach ($this->_tables as $table) { $table->tableDraw($this->showColor); } } } db/login/libraries/classes/Plugins/Schema/SchemaPdf.php000064400000007177151502156010017046 0ustar00setProperties(); } /** * Sets the schema export PDF properties * * @return void */ protected function setProperties() { $schemaPluginProperties = new SchemaPluginProperties(); $schemaPluginProperties->setText('PDF'); $schemaPluginProperties->setExtension('pdf'); $schemaPluginProperties->setMimeType('application/pdf'); // create the root group that will be the options field for // $schemaPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // specific options main group $specificOptions = new OptionsPropertyMainGroup("general_opts"); // add options common to all plugins $this->addCommonOptions($specificOptions); // create leaf items and add them to the group $leaf = new BoolPropertyItem( 'all_tables_same_width', __('Same width for all tables') ); $specificOptions->addProperty($leaf); $leaf = new SelectPropertyItem( "orientation", __('Orientation') ); $leaf->setValues( array( 'L' => __('Landscape'), 'P' => __('Portrait'), ) ); $specificOptions->addProperty($leaf); $leaf = new SelectPropertyItem( "paper", __('Paper size') ); $leaf->setValues($this->getPaperSizeArray()); $specificOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'show_grid', __('Show grid') ); $specificOptions->addProperty($leaf); $leaf = new BoolPropertyItem( 'with_doc', __('Data dictionary') ); $specificOptions->addProperty($leaf); $leaf = new SelectPropertyItem( "table_order", __('Order of the tables') ); $leaf->setValues( array( '' => __('None'), 'name_asc' => __('Name (Ascending)'), 'name_desc' => __('Name (Descending)'), ) ); $specificOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($specificOptions); // set the options for the schema export plugin property item $schemaPluginProperties->setOptions($exportSpecificOptions); $this->properties = $schemaPluginProperties; } /** * Exports the schema into PDF format. * * @param string $db database name * * @return bool Whether it succeeded */ public function exportSchema($db) { $export = new PdfRelationSchema($db); $export->showOutput(); } } db/login/libraries/classes/Plugins/Schema/SchemaDia.php000064400000005253151502156010017023 0ustar00setProperties(); } /** * Sets the schema export Dia properties * * @return void */ protected function setProperties() { $schemaPluginProperties = new SchemaPluginProperties(); $schemaPluginProperties->setText('Dia'); $schemaPluginProperties->setExtension('dia'); $schemaPluginProperties->setMimeType('application/dia'); // create the root group that will be the options field for // $schemaPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // specific options main group $specificOptions = new OptionsPropertyMainGroup("general_opts"); // add options common to all plugins $this->addCommonOptions($specificOptions); $leaf = new SelectPropertyItem( "orientation", __('Orientation') ); $leaf->setValues( array( 'L' => __('Landscape'), 'P' => __('Portrait'), ) ); $specificOptions->addProperty($leaf); $leaf = new SelectPropertyItem( "paper", __('Paper size') ); $leaf->setValues($this->getPaperSizeArray()); $specificOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($specificOptions); // set the options for the schema export plugin property item $schemaPluginProperties->setOptions($exportSpecificOptions); $this->properties = $schemaPluginProperties; } /** * Exports the schema into DIA format. * * @param string $db database name * * @return bool Whether it succeeded */ public function exportSchema($db) { $export = new DiaRelationSchema($db); $export->showOutput(); } } db/login/libraries/classes/Plugins/Schema/TableStats.php000064400000012404151502156010017247 0ustar00diagram = $diagram; $this->db = $db; $this->pageNumber = $pageNumber; $this->tableName = $tableName; $this->showKeys = $showKeys; $this->tableDimension = $tableDimension; $this->offline = $offline; $this->relation = new Relation(); // checks whether the table exists // and loads fields $this->validateTableAndLoadFields(); // load table coordinates $this->loadCoordinates(); // loads display field $this->loadDisplayField(); // loads primary keys $this->loadPrimaryKey(); } /** * Validate whether the table exists. * * @return void */ protected function validateTableAndLoadFields() { $sql = 'DESCRIBE ' . Util::backquote($this->tableName); $result = $GLOBALS['dbi']->tryQuery( $sql, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_STORE ); if (! $result || ! $GLOBALS['dbi']->numRows($result)) { $this->showMissingTableError(); } if ($this->showKeys) { $indexes = Index::getFromTable($this->tableName, $this->db); $all_columns = array(); foreach ($indexes as $index) { $all_columns = array_merge( $all_columns, array_flip(array_keys($index->getColumns())) ); } $this->fields = array_keys($all_columns); } else { while ($row = $GLOBALS['dbi']->fetchRow($result)) { $this->fields[] = $row[0]; } } } /** * Displays an error when the table cannot be found. * * @return void * @abstract */ protected abstract function showMissingTableError(); /** * Loads coordinates of a table * * @return void */ protected function loadCoordinates() { if (isset($_POST['t_h'])) { foreach ($_POST['t_h'] as $key => $value) { $db = rawurldecode($_POST['t_db'][$key]); $tbl = rawurldecode($_POST['t_tbl'][$key]); if ($this->db . '.' . $this->tableName === $db . '.' . $tbl) { $this->x = (double) $_POST['t_x'][$key]; $this->y = (double) $_POST['t_y'][$key]; break; } } } } /** * Loads the table's display field * * @return void */ protected function loadDisplayField() { $this->displayfield = $this->relation->getDisplayField($this->db, $this->tableName); } /** * Loads the PRIMARY key. * * @return void */ protected function loadPrimaryKey() { $result = $GLOBALS['dbi']->query( 'SHOW INDEX FROM ' . Util::backquote($this->tableName) . ';', DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_STORE ); if ($GLOBALS['dbi']->numRows($result) > 0) { while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { if ($row['Key_name'] == 'PRIMARY') { $this->primary[] = $row['Column_name']; } } } } /** * Returns title of the current table, * title can have the dimensions/co-ordinates of the table * * @return string title of the current table */ protected function getTitle() { return ($this->tableDimension ? sprintf('%.0fx%0.f', $this->width, $this->heightCell) : '' ) . ' ' . $this->tableName; } } db/login/libraries/classes/Plugins/Schema/Svg/Svg.php000064400000017401151502156010016501 0ustar00openMemory(); /* * Set indenting using three spaces, * so output is formatted */ $this->setIndent(true); $this->setIndentString(' '); /* * Create the XML document */ $this->startDocument('1.0', 'UTF-8'); $this->startDtd( 'svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' ); $this->endDtd(); } /** * Set document title * * @param string $value sets the title text * * @return void */ public function setTitle($value) { $this->title = $value; } /** * Set document author * * @param string $value sets the author * * @return void */ public function setAuthor($value) { $this->author = $value; } /** * Set document font * * @param string $value sets the font e.g Arial, Sans-serif etc * * @return void */ public function setFont($value) { $this->font = $value; } /** * Get document font * * @return string returns the font name */ public function getFont() { return $this->font; } /** * Set document font size * * @param integer $value sets the font size in pixels * * @return void */ public function setFontSize($value) { $this->fontSize = $value; } /** * Get document font size * * @return integer returns the font size */ public function getFontSize() { return $this->fontSize; } /** * Starts RelationStatsSvg Document * * svg document starts by first initializing svg tag * which contains all the attributes and namespace that needed * to define the svg document * * @param integer $width total width of the RelationStatsSvg document * @param integer $height total height of the RelationStatsSvg document * @param integer $x min-x of the view box * @param integer $y min-y of the view box * * @return void * * @see XMLWriter::startElement(),XMLWriter::writeAttribute() */ public function startSvgDoc($width, $height, $x = 0, $y = 0) { $this->startElement('svg'); if (!is_int($width)) { $width = intval($width); } if (!is_int($height)) { $height = intval($height); } if ($x != 0 || $y != 0) { $this->writeAttribute('viewBox', "$x $y $width $height"); } $this->writeAttribute('width', ($width - $x) . 'px'); $this->writeAttribute('height', ($height - $y) . 'px'); $this->writeAttribute('xmlns', 'http://www.w3.org/2000/svg'); $this->writeAttribute('version', '1.1'); } /** * Ends RelationStatsSvg Document * * @return void * @see XMLWriter::endElement(),XMLWriter::endDocument() */ public function endSvgDoc() { $this->endElement(); $this->endDocument(); } /** * output RelationStatsSvg Document * * svg document prompted to the user for download * RelationStatsSvg document saved in .svg extension and can be * easily changeable by using any svg IDE * * @param string $fileName file name * * @return void * @see XMLWriter::startElement(),XMLWriter::writeAttribute() */ public function showOutput($fileName) { //ob_get_clean(); $output = $this->flush(); Response::getInstance()->disable(); Core::downloadHeader( $fileName, 'image/svg+xml', strlen($output) ); print $output; } /** * Draws RelationStatsSvg elements * * SVG has some predefined shape elements like rectangle & text * and other elements who have x,y co-ordinates are drawn. * specify their width and height and can give styles too. * * @param string $name RelationStatsSvg element name * @param int $x The x attr defines the left position of the element * (e.g. x="0" places the element 0 pixels from the * left of the browser window) * @param integer $y The y attribute defines the top position of the * element (e.g. y="0" places the element 0 pixels * from the top of the browser window) * @param int|string $width The width attribute defines the width the element * @param int|string $height The height attribute defines the height the element * @param string $text The text attribute defines the text the element * @param string $styles The style attribute defines the style the element * styles can be defined like CSS styles * * @return void * * @see XMLWriter::startElement(), XMLWriter::writeAttribute(), * XMLWriter::text(), XMLWriter::endElement() */ public function printElement( $name, $x, $y, $width = '', $height = '', $text = '', $styles = '' ) { $this->startElement($name); $this->writeAttribute('width', $width); $this->writeAttribute('height', $height); $this->writeAttribute('x', $x); $this->writeAttribute('y', $y); $this->writeAttribute('style', $styles); if (isset($text)) { $this->writeAttribute('font-family', $this->font); $this->writeAttribute('font-size', $this->fontSize . 'px'); $this->text($text); } $this->endElement(); } /** * Draws RelationStatsSvg Line element * * RelationStatsSvg line element is drawn for connecting the tables. * arrows are also drawn by specify its start and ending * co-ordinates * * @param string $name RelationStatsSvg element name i.e line * @param integer $x1 Defines the start of the line on the x-axis * @param integer $y1 Defines the start of the line on the y-axis * @param integer $x2 Defines the end of the line on the x-axis * @param integer $y2 Defines the end of the line on the y-axis * @param string $styles The style attribute defines the style the element * styles can be defined like CSS styles * * @return void * * @see XMLWriter::startElement(), XMLWriter::writeAttribute(), * XMLWriter::endElement() */ public function printElementLine($name, $x1, $y1, $x2, $y2, $styles) { $this->startElement($name); $this->writeAttribute('x1', $x1); $this->writeAttribute('y1', $y1); $this->writeAttribute('x2', $x2); $this->writeAttribute('y2', $y2); $this->writeAttribute('style', $styles); $this->endElement(); } } db/login/libraries/classes/Plugins/Schema/Svg/RelationStatsSvg.php000064400000010312151502156010021210 0ustar00wTick = 10; parent::__construct( $diagram, $master_table, $master_field, $foreign_table, $foreign_field ); } /** * draws relation links and arrows shows foreign key relations * * @param boolean $showColor Whether to use one color per relation or not * * @return void * @access public * * @see PMA_SVG */ public function relationDraw($showColor) { if ($showColor) { $listOfColors = array( '#c00', '#bbb', '#333', '#cb0', '#0b0', '#0bf', '#b0b', ); shuffle($listOfColors); $color = $listOfColors[0]; } else { $color = '#333'; } $this->diagram->printElementLine( 'line', $this->xSrc, $this->ySrc, $this->xSrc + $this->srcDir * $this->wTick, $this->ySrc, 'stroke:' . $color . ';stroke-width:1;' ); $this->diagram->printElementLine( 'line', $this->xDest + $this->destDir * $this->wTick, $this->yDest, $this->xDest, $this->yDest, 'stroke:' . $color . ';stroke-width:1;' ); $this->diagram->printElementLine( 'line', $this->xSrc + $this->srcDir * $this->wTick, $this->ySrc, $this->xDest + $this->destDir * $this->wTick, $this->yDest, 'stroke:' . $color . ';stroke-width:1;' ); $root2 = 2 * sqrt(2); $this->diagram->printElementLine( 'line', $this->xSrc + $this->srcDir * $this->wTick * 0.75, $this->ySrc, $this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick, $this->ySrc + $this->wTick / $root2, 'stroke:' . $color . ';stroke-width:2;' ); $this->diagram->printElementLine( 'line', $this->xSrc + $this->srcDir * $this->wTick * 0.75, $this->ySrc, $this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick, $this->ySrc - $this->wTick / $root2, 'stroke:' . $color . ';stroke-width:2;' ); $this->diagram->printElementLine( 'line', $this->xDest + $this->destDir * $this->wTick / 2, $this->yDest, $this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick, $this->yDest + $this->wTick / $root2, 'stroke:' . $color . ';stroke-width:2;' ); $this->diagram->printElementLine( 'line', $this->xDest + $this->destDir * $this->wTick / 2, $this->yDest, $this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick, $this->yDest - $this->wTick / $root2, 'stroke:' . $color . ';stroke-width:2;' ); } } db/login/libraries/classes/Plugins/Schema/Svg/SvgRelationSchema.php000064400000021134151502156010021316 0ustar00setShowColor(isset($_REQUEST['svg_show_color'])); $this->setShowKeys(isset($_REQUEST['svg_show_keys'])); $this->setTableDimension(isset($_REQUEST['svg_show_table_dimension'])); $this->setAllTablesSameWidth(isset($_REQUEST['svg_all_tables_same_width'])); $this->diagram->setTitle( sprintf( __('Schema of the %s database - Page %s'), $this->db, $this->pageNumber ) ); $this->diagram->SetAuthor('phpMyAdmin ' . PMA_VERSION); $this->diagram->setFont('Arial'); $this->diagram->setFontSize(16); $alltables = $this->getTablesFromRequest(); foreach ($alltables as $table) { if (!isset($this->_tables[$table])) { $this->_tables[$table] = new TableStatsSvg( $this->diagram, $this->db, $table, $this->diagram->getFont(), $this->diagram->getFontSize(), $this->pageNumber, $this->_tablewidth, $this->showKeys, $this->tableDimension, $this->offline ); } if ($this->sameWide) { $this->_tables[$table]->width = &$this->_tablewidth; } $this->_setMinMax($this->_tables[$table]); } $border = 15; $this->diagram->startSvgDoc( $this->_xMax + $border, $this->_yMax + $border, $this->_xMin - $border, $this->_yMin - $border ); $seen_a_relation = false; foreach ($alltables as $one_table) { $exist_rel = $this->relation->getForeigners($this->db, $one_table, '', 'both'); if (!$exist_rel) { continue; } $seen_a_relation = true; foreach ($exist_rel as $master_field => $rel) { /* put the foreign table on the schema only if selected * by the user * (do not use array_search() because we would have to * to do a === false and this is not PHP3 compatible) */ if ($master_field != 'foreign_keys_data') { if (in_array($rel['foreign_table'], $alltables)) { $this->_addRelation( $one_table, $this->diagram->getFont(), $this->diagram->getFontSize(), $master_field, $rel['foreign_table'], $rel['foreign_field'], $this->tableDimension ); } continue; } foreach ($rel as $one_key) { if (!in_array($one_key['ref_table_name'], $alltables)) { continue; } foreach ( $one_key['index_list'] as $index => $one_field ) { $this->_addRelation( $one_table, $this->diagram->getFont(), $this->diagram->getFontSize(), $one_field, $one_key['ref_table_name'], $one_key['ref_index_list'][$index], $this->tableDimension ); } } } } if ($seen_a_relation) { $this->_drawRelations(); } $this->_drawTables(); $this->diagram->endSvgDoc(); } /** * Output RelationStatsSvg Document for download * * @return void */ public function showOutput() { $this->diagram->showOutput($this->getFileName('.svg')); } /** * Sets X and Y minimum and maximum for a table cell * * @param string $table The table name * * @return void */ private function _setMinMax($table) { $this->_xMax = max($this->_xMax, $table->x + $table->width); $this->_yMax = max($this->_yMax, $table->y + $table->height); $this->_xMin = min($this->_xMin, $table->x); $this->_yMin = min($this->_yMin, $table->y); } /** * Defines relation objects * * @param string $masterTable The master table name * @param string $font The font face * @param int $fontSize Font size * @param string $masterField The relation field in the master table * @param string $foreignTable The foreign table name * @param string $foreignField The relation field in the foreign table * @param boolean $tableDimension Whether to display table position or not * * @return void * * @see _setMinMax,Table_Stats_Svg::__construct(), * PhpMyAdmin\Plugins\Schema\Svg\RelationStatsSvg::__construct() */ private function _addRelation( $masterTable, $font, $fontSize, $masterField, $foreignTable, $foreignField, $tableDimension ) { if (!isset($this->_tables[$masterTable])) { $this->_tables[$masterTable] = new TableStatsSvg( $this->diagram, $this->db, $masterTable, $font, $fontSize, $this->pageNumber, $this->_tablewidth, false, $tableDimension ); $this->_setMinMax($this->_tables[$masterTable]); } if (!isset($this->_tables[$foreignTable])) { $this->_tables[$foreignTable] = new TableStatsSvg( $this->diagram, $this->db, $foreignTable, $font, $fontSize, $this->pageNumber, $this->_tablewidth, false, $tableDimension ); $this->_setMinMax($this->_tables[$foreignTable]); } $this->_relations[] = new RelationStatsSvg( $this->diagram, $this->_tables[$masterTable], $masterField, $this->_tables[$foreignTable], $foreignField ); } /** * Draws relation arrows and lines * connects master table's master field to * foreign table's foreign field * * @return void * * @see Relation_Stats_Svg::relationDraw() */ private function _drawRelations() { foreach ($this->_relations as $relation) { $relation->relationDraw($this->showColor); } } /** * Draws tables * * @return void * * @see Table_Stats_Svg::Table_Stats_tableDraw() */ private function _drawTables() { foreach ($this->_tables as $table) { $table->tableDraw($this->showColor); } } } db/login/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php000064400000012703151502156010020470 0ustar00_setHeightTable($fontSize); // setWidth must me after setHeight, because title // can include table height which changes table width $this->_setWidthTable($font, $fontSize); if ($same_wide_width < $this->width) { $same_wide_width = $this->width; } } /** * Displays an error when the table cannot be found. * * @return void */ protected function showMissingTableError() { ExportRelationSchema::dieSchema( $this->pageNumber, "SVG", sprintf(__('The %s table doesn\'t exist!'), $this->tableName) ); } /** * Sets the width of the table * * @param string $font The font size * @param integer $fontSize The font size * * @return void * @access private * * @see PMA_SVG */ private function _setWidthTable($font, $fontSize) { foreach ($this->fields as $field) { $this->width = max( $this->width, Font::getStringWidth($field, $font, $fontSize) ); } $this->width += Font::getStringWidth(' ', $font, $fontSize); /* * it is unknown what value must be added, because * table title is affected by the table width value */ while ($this->width < Font::getStringWidth($this->getTitle(), $font, $fontSize) ) { $this->width += 7; } } /** * Sets the height of the table * * @param integer $fontSize font size * * @return void */ private function _setHeightTable($fontSize) { $this->heightCell = $fontSize + 4; $this->height = (count($this->fields) + 1) * $this->heightCell; } /** * draw the table * * @param boolean $showColor Whether to display color * * @access public * @return void * * @see PMA_SVG,PMA_SVG::printElement */ public function tableDraw($showColor) { $this->diagram->printElement( 'rect', $this->x, $this->y, $this->width, $this->heightCell, null, 'fill:#007;stroke:black;' ); $this->diagram->printElement( 'text', $this->x + 5, $this->y + 14, $this->width, $this->heightCell, $this->getTitle(), 'fill:#fff;' ); foreach ($this->fields as $field) { $this->currentCell += $this->heightCell; $fillColor = 'none'; if ($showColor) { if (in_array($field, $this->primary)) { $fillColor = '#aea'; } if ($field == $this->displayfield) { $fillColor = 'none'; } } $this->diagram->printElement( 'rect', $this->x, $this->y + $this->currentCell, $this->width, $this->heightCell, null, 'fill:' . $fillColor . ';stroke:black;' ); $this->diagram->printElement( 'text', $this->x + 5, $this->y + 14 + $this->currentCell, $this->width, $this->heightCell, $field, 'fill:black;' ); } } } db/login/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php000064400000060033151502156010021243 0ustar00setShowGrid(isset($_REQUEST['pdf_show_grid'])); $this->setShowColor(isset($_REQUEST['pdf_show_color'])); $this->setShowKeys(isset($_REQUEST['pdf_show_keys'])); $this->setTableDimension(isset($_REQUEST['pdf_show_table_dimension'])); $this->setAllTablesSameWidth(isset($_REQUEST['pdf_all_tables_same_width'])); $this->setWithDataDictionary(isset($_REQUEST['pdf_with_doc'])); $this->setTableOrder($_REQUEST['pdf_table_order']); $this->setOrientation($_REQUEST['pdf_orientation']); $this->setPaper($_REQUEST['pdf_paper']); // Initializes a new document parent::__construct( $db, new Pdf( $this->orientation, 'mm', $this->paper, $this->pageNumber, $this->_withDoc, $db ) ); $this->diagram->SetTitle( sprintf( __('Schema of the %s database'), $this->db ) ); $this->diagram->setCMargin(0); $this->diagram->Open(); $this->diagram->SetAutoPageBreak('auto'); $this->diagram->setOffline($this->offline); $alltables = $this->getTablesFromRequest(); if ($this->getTableOrder() == 'name_asc') { sort($alltables); } elseif ($this->getTableOrder() == 'name_desc') { rsort($alltables); } if ($this->_withDoc) { $this->diagram->SetAutoPageBreak('auto', 15); $this->diagram->setCMargin(1); $this->dataDictionaryDoc($alltables); $this->diagram->SetAutoPageBreak('auto'); $this->diagram->setCMargin(0); } $this->diagram->Addpage(); if ($this->_withDoc) { $this->diagram->SetLink($this->diagram->PMA_links['RT']['-'], -1); $this->diagram->Bookmark(__('Relational schema')); $this->diagram->setAlias('{00}', $this->diagram->PageNo()); $this->_topMargin = 28; $this->_bottomMargin = 28; } /* snip */ foreach ($alltables as $table) { if (! isset($this->_tables[$table])) { $this->_tables[$table] = new TableStatsPdf( $this->diagram, $this->db, $table, null, $this->pageNumber, $this->_tablewidth, $this->showKeys, $this->tableDimension, $this->offline ); } if ($this->sameWide) { $this->_tables[$table]->width = $this->_tablewidth; } $this->_setMinMax($this->_tables[$table]); } // Defines the scale factor $innerWidth = $this->diagram->getPageWidth() - $this->_rightMargin - $this->_leftMargin; $innerHeight = $this->diagram->getPageHeight() - $this->_topMargin - $this->_bottomMargin; $this->_scale = ceil( max( ($this->_xMax - $this->_xMin) / $innerWidth, ($this->_yMax - $this->_yMin) / $innerHeight ) * 100 ) / 100; $this->diagram->setScale( $this->_scale, $this->_xMin, $this->_yMin, $this->_leftMargin, $this->_topMargin ); // Builds and save the PDF document $this->diagram->setLineWidthScale(0.1); if ($this->_showGrid) { $this->diagram->SetFontSize(10); $this->_strokeGrid(); } $this->diagram->setFontSizeScale(14); // previous logic was checking master tables and foreign tables // but I think that looping on every table of the pdf page as a master // and finding its foreigns is OK (then we can support innodb) $seen_a_relation = false; foreach ($alltables as $one_table) { $exist_rel = $this->relation->getForeigners($this->db, $one_table, '', 'both'); if (!$exist_rel) { continue; } $seen_a_relation = true; foreach ($exist_rel as $master_field => $rel) { // put the foreign table on the schema only if selected // by the user // (do not use array_search() because we would have to // to do a === false and this is not PHP3 compatible) if ($master_field != 'foreign_keys_data') { if (in_array($rel['foreign_table'], $alltables)) { $this->_addRelation( $one_table, $master_field, $rel['foreign_table'], $rel['foreign_field'] ); } continue; } foreach ($rel as $one_key) { if (!in_array($one_key['ref_table_name'], $alltables)) { continue; } foreach ($one_key['index_list'] as $index => $one_field ) { $this->_addRelation( $one_table, $one_field, $one_key['ref_table_name'], $one_key['ref_index_list'][$index] ); } } } // end while } // end while if ($seen_a_relation) { $this->_drawRelations(); } $this->_drawTables(); } /** * Set Show Grid * * @param boolean $value show grid of the document or not * * @return void */ public function setShowGrid($value) { $this->_showGrid = $value; } /** * Returns whether to show grid * * @return boolean whether to show grid */ public function isShowGrid() { return $this->_showGrid; } /** * Set Data Dictionary * * @param boolean $value show selected database data dictionary or not * * @return void */ public function setWithDataDictionary($value) { $this->_withDoc = $value; } /** * Return whether to show selected database data dictionary or not * * @return boolean whether to show selected database data dictionary or not */ public function isWithDataDictionary() { return $this->_withDoc; } /** * Sets the order of the table in data dictionary * * @param string $value table order * * @return void */ public function setTableOrder($value) { $this->_tableOrder = $value; } /** * Returns the order of the table in data dictionary * * @return string table order */ public function getTableOrder() { return $this->_tableOrder; } /** * Output Pdf Document for download * * @return void */ public function showOutput() { $this->diagram->download($this->getFileName('.pdf')); } /** * Sets X and Y minimum and maximum for a table cell * * @param TableStatsPdf $table The table name of which sets XY co-ordinates * * @return void */ private function _setMinMax($table) { $this->_xMax = max($this->_xMax, $table->x + $table->width); $this->_yMax = max($this->_yMax, $table->y + $table->height); $this->_xMin = min($this->_xMin, $table->x); $this->_yMin = min($this->_yMin, $table->y); } /** * Defines relation objects * * @param string $masterTable The master table name * @param string $masterField The relation field in the master table * @param string $foreignTable The foreign table name * @param string $foreignField The relation field in the foreign table * * @return void * * @see _setMinMax */ private function _addRelation($masterTable, $masterField, $foreignTable, $foreignField ) { if (! isset($this->_tables[$masterTable])) { $this->_tables[$masterTable] = new TableStatsPdf( $this->diagram, $this->db, $masterTable, null, $this->pageNumber, $this->_tablewidth, $this->showKeys, $this->tableDimension ); $this->_setMinMax($this->_tables[$masterTable]); } if (! isset($this->_tables[$foreignTable])) { $this->_tables[$foreignTable] = new TableStatsPdf( $this->diagram, $this->db, $foreignTable, null, $this->pageNumber, $this->_tablewidth, $this->showKeys, $this->tableDimension ); $this->_setMinMax($this->_tables[$foreignTable]); } $this->relations[] = new RelationStatsPdf( $this->diagram, $this->_tables[$masterTable], $masterField, $this->_tables[$foreignTable], $foreignField ); } /** * Draws the grid * * @return void * * @see PMA_Schema_PDF */ private function _strokeGrid() { $gridSize = 10; $labelHeight = 4; $labelWidth = 5; if ($this->_withDoc) { $topSpace = 6; $bottomSpace = 15; } else { $topSpace = 0; $bottomSpace = 0; } $this->diagram->SetMargins(0, 0); $this->diagram->SetDrawColor(200, 200, 200); // Draws horizontal lines $innerHeight = $this->diagram->getPageHeight() - $topSpace - $bottomSpace; for ($l = 0, $size = intval($innerHeight / $gridSize); $l <= $size; $l++ ) { $this->diagram->line( 0, $l * $gridSize + $topSpace, $this->diagram->getPageWidth(), $l * $gridSize + $topSpace ); // Avoid duplicates if ($l > 0 && $l <= intval(($innerHeight - $labelHeight) / $gridSize) ) { $this->diagram->SetXY(0, $l * $gridSize + $topSpace); $label = (string) sprintf( '%.0f', ($l * $gridSize + $topSpace - $this->_topMargin) * $this->_scale + $this->_yMin ); $this->diagram->Cell($labelWidth, $labelHeight, ' ' . $label); } // end if } // end for // Draws vertical lines for ( $j = 0, $size = intval($this->diagram->getPageWidth() / $gridSize); $j <= $size; $j++ ) { $this->diagram->line( $j * $gridSize, $topSpace, $j * $gridSize, $this->diagram->getPageHeight() - $bottomSpace ); $this->diagram->SetXY($j * $gridSize, $topSpace); $label = (string) sprintf( '%.0f', ($j * $gridSize - $this->_leftMargin) * $this->_scale + $this->_xMin ); $this->diagram->Cell($labelWidth, $labelHeight, $label); } } /** * Draws relation arrows * * @return void * * @see Relation_Stats_Pdf::relationdraw() */ private function _drawRelations() { $i = 0; foreach ($this->relations as $relation) { $relation->relationDraw($this->showColor, $i); $i++; } } /** * Draws tables * * @return void * * @see Table_Stats_Pdf::tableDraw() */ private function _drawTables() { foreach ($this->_tables as $table) { $table->tableDraw(null, $this->_withDoc, $this->showColor); } } /** * Generates data dictionary pages. * * @param array $alltables Tables to document. * * @return void */ public function dataDictionaryDoc(array $alltables) { // TOC $this->diagram->addpage($this->orientation); $this->diagram->Cell(0, 9, __('Table of contents'), 1, 0, 'C'); $this->diagram->Ln(15); $i = 1; foreach ($alltables as $table) { $this->diagram->PMA_links['doc'][$table]['-'] = $this->diagram->AddLink(); $this->diagram->SetX(10); // $this->diagram->Ln(1); $this->diagram->Cell( 0, 6, __('Page number:') . ' {' . sprintf("%02d", $i) . '}', 0, 0, 'R', 0, $this->diagram->PMA_links['doc'][$table]['-'] ); $this->diagram->SetX(10); $this->diagram->Cell( 0, 6, $i . ' ' . $table, 0, 1, 'L', 0, $this->diagram->PMA_links['doc'][$table]['-'] ); // $this->diagram->Ln(1); $fields = $GLOBALS['dbi']->getColumns($this->db, $table); foreach ($fields as $row) { $this->diagram->SetX(20); $field_name = $row['Field']; $this->diagram->PMA_links['doc'][$table][$field_name] = $this->diagram->AddLink(); //$this->diagram->Cell( // 0, 6, $field_name, 0, 1, // 'L', 0, $this->diagram->PMA_links['doc'][$table][$field_name] //); } $i++; } $this->diagram->PMA_links['RT']['-'] = $this->diagram->AddLink(); $this->diagram->SetX(10); $this->diagram->Cell( 0, 6, __('Page number:') . ' {00}', 0, 0, 'R', 0, $this->diagram->PMA_links['RT']['-'] ); $this->diagram->SetX(10); $this->diagram->Cell( 0, 6, $i . ' ' . __('Relational schema'), 0, 1, 'L', 0, $this->diagram->PMA_links['RT']['-'] ); $z = 0; foreach ($alltables as $table) { $z++; $this->diagram->SetAutoPageBreak(true, 15); $this->diagram->addpage($this->orientation); $this->diagram->Bookmark($table); $this->diagram->setAlias( '{' . sprintf("%02d", $z) . '}', $this->diagram->PageNo() ); $this->diagram->PMA_links['RT'][$table]['-'] = $this->diagram->AddLink(); $this->diagram->SetLink( $this->diagram->PMA_links['doc'][$table]['-'], -1 ); $this->diagram->SetFont($this->_ff, 'B', 18); $this->diagram->Cell( 0, 8, $z . ' ' . $table, 1, 1, 'C', 0, $this->diagram->PMA_links['RT'][$table]['-'] ); $this->diagram->SetFont($this->_ff, '', 8); $this->diagram->ln(); $cfgRelation = $this->relation->getRelationsParam(); $comments = $this->relation->getComments($this->db, $table); if ($cfgRelation['mimework']) { $mime_map = Transformations::getMIME($this->db, $table, true); } /** * Gets table information */ $showtable = $GLOBALS['dbi']->getTable($this->db, $table) ->getStatusInfo(); $show_comment = isset($showtable['Comment']) ? $showtable['Comment'] : ''; $create_time = isset($showtable['Create_time']) ? Util::localisedDate( strtotime($showtable['Create_time']) ) : ''; $update_time = isset($showtable['Update_time']) ? Util::localisedDate( strtotime($showtable['Update_time']) ) : ''; $check_time = isset($showtable['Check_time']) ? Util::localisedDate( strtotime($showtable['Check_time']) ) : ''; /** * Gets fields properties */ $columns = $GLOBALS['dbi']->getColumns($this->db, $table); // Find which tables are related with the current one and write it in // an array $res_rel = $this->relation->getForeigners($this->db, $table); /** * Displays the comments of the table if MySQL >= 3.23 */ $break = false; if (! empty($show_comment)) { $this->diagram->Cell( 0, 3, __('Table comments:') . ' ' . $show_comment, 0, 1 ); $break = true; } if (! empty($create_time)) { $this->diagram->Cell( 0, 3, __('Creation:') . ' ' . $create_time, 0, 1 ); $break = true; } if (! empty($update_time)) { $this->diagram->Cell( 0, 3, __('Last update:') . ' ' . $update_time, 0, 1 ); $break = true; } if (! empty($check_time)) { $this->diagram->Cell( 0, 3, __('Last check:') . ' ' . $check_time, 0, 1 ); $break = true; } if ($break == true) { $this->diagram->Cell(0, 3, '', 0, 1); $this->diagram->Ln(); } $this->diagram->SetFont($this->_ff, 'B'); if (isset($this->orientation) && $this->orientation == 'L') { $this->diagram->Cell(25, 8, __('Column'), 1, 0, 'C'); $this->diagram->Cell(20, 8, __('Type'), 1, 0, 'C'); $this->diagram->Cell(20, 8, __('Attributes'), 1, 0, 'C'); $this->diagram->Cell(10, 8, __('Null'), 1, 0, 'C'); $this->diagram->Cell(20, 8, __('Default'), 1, 0, 'C'); $this->diagram->Cell(25, 8, __('Extra'), 1, 0, 'C'); $this->diagram->Cell(45, 8, __('Links to'), 1, 0, 'C'); if ($this->paper == 'A4') { $comments_width = 67; } else { // this is really intended for 'letter' /** * @todo find optimal width for all formats */ $comments_width = 50; } $this->diagram->Cell($comments_width, 8, __('Comments'), 1, 0, 'C'); $this->diagram->Cell(45, 8, 'MIME', 1, 1, 'C'); $this->diagram->setWidths( array(25, 20, 20, 10, 20, 25, 45, $comments_width, 45) ); } else { $this->diagram->Cell(20, 8, __('Column'), 1, 0, 'C'); $this->diagram->Cell(20, 8, __('Type'), 1, 0, 'C'); $this->diagram->Cell(20, 8, __('Attributes'), 1, 0, 'C'); $this->diagram->Cell(10, 8, __('Null'), 1, 0, 'C'); $this->diagram->Cell(15, 8, __('Default'), 1, 0, 'C'); $this->diagram->Cell(15, 8, __('Extra'), 1, 0, 'C'); $this->diagram->Cell(30, 8, __('Links to'), 1, 0, 'C'); $this->diagram->Cell(30, 8, __('Comments'), 1, 0, 'C'); $this->diagram->Cell(30, 8, 'MIME', 1, 1, 'C'); $this->diagram->setWidths(array(20, 20, 20, 10, 15, 15, 30, 30, 30)); } $this->diagram->SetFont($this->_ff, ''); foreach ($columns as $row) { $extracted_columnspec = Util::extractColumnSpec($row['Type']); $type = $extracted_columnspec['print_type']; $attribute = $extracted_columnspec['attribute']; if (! isset($row['Default'])) { if ($row['Null'] != '' && $row['Null'] != 'NO') { $row['Default'] = 'NULL'; } } $field_name = $row['Field']; // $this->diagram->Ln(); $this->diagram->PMA_links['RT'][$table][$field_name] = $this->diagram->AddLink(); $this->diagram->Bookmark($field_name, 1, -1); $this->diagram->SetLink( $this->diagram->PMA_links['doc'][$table][$field_name], -1 ); $foreigner = $this->relation->searchColumnInForeigners($res_rel, $field_name); $linksTo = ''; if ($foreigner) { $linksTo = '-> '; if ($foreigner['foreign_db'] != $this->db) { $linksTo .= $foreigner['foreign_db'] . '.'; } $linksTo .= $foreigner['foreign_table'] . '.' . $foreigner['foreign_field']; if (isset($foreigner['on_update'])) { // not set for internal $linksTo .= "\n" . 'ON UPDATE ' . $foreigner['on_update']; $linksTo .= "\n" . 'ON DELETE ' . $foreigner['on_delete']; } } $this->diagram_row = array( $field_name, $type, $attribute, (($row['Null'] == '' || $row['Null'] == 'NO') ? __('No') : __('Yes')), (isset($row['Default']) ? $row['Default'] : ''), $row['Extra'], $linksTo, (isset($comments[$field_name]) ? $comments[$field_name] : ''), (isset($mime_map) && isset($mime_map[$field_name]) ? str_replace('_', '/', $mime_map[$field_name]['mimetype']) : '') ); $links = array(); $links[0] = $this->diagram->PMA_links['RT'][$table][$field_name]; if ($foreigner && isset($this->diagram->PMA_links['doc'][$foreigner['foreign_table']][$foreigner['foreign_field']]) ) { $links[6] = $this->diagram->PMA_links['doc'] [$foreigner['foreign_table']][$foreigner['foreign_field']]; } else { unset($links[6]); } $this->diagram->row($this->diagram_row, $links); } // end foreach $this->diagram->SetFont($this->_ff, '', 14); } //end each } } db/login/libraries/classes/Plugins/Schema/Pdf/TableStatsPdf.php000064400000015107151502156010020415 0ustar00heightCell = 6; $this->_setHeight(); /* * setWidth must me after setHeight, because title * can include table height which changes table width */ $this->_setWidth($fontSize); if ($sameWideWidth < $this->width) { $sameWideWidth = $this->width; } } /** * Displays an error when the table cannot be found. * * @return void */ protected function showMissingTableError() { ExportRelationSchema::dieSchema( $this->pageNumber, "PDF", sprintf(__('The %s table doesn\'t exist!'), $this->tableName) ); } /** * Returns title of the current table, * title can have the dimensions of the table * * @return string */ protected function getTitle() { $ret = ''; if ($this->tableDimension) { $ret = sprintf('%.0fx%0.f', $this->width, $this->height); } return $ret . ' ' . $this->tableName; } /** * Sets the width of the table * * @param integer $fontSize The font size * * @access private * * @return void * * @see PMA_Schema_PDF */ private function _setWidth($fontSize) { foreach ($this->fields as $field) { $this->width = max($this->width, $this->diagram->GetStringWidth($field)); } $this->width += $this->diagram->GetStringWidth(' '); $this->diagram->SetFont($this->_ff, 'B', $fontSize); /* * it is unknown what value must be added, because * table title is affected by the table width value */ while ($this->width < $this->diagram->GetStringWidth($this->getTitle())) { $this->width += 5; } $this->diagram->SetFont($this->_ff, '', $fontSize); } /** * Sets the height of the table * * @return void * * @access private */ private function _setHeight() { $this->height = (count($this->fields) + 1) * $this->heightCell; } /** * Do draw the table * * @param integer $fontSize The font size * @param boolean $withDoc Whether to include links to documentation * @param boolean|integer $setColor Whether to display color * * @access public * * @return void * * @see PMA_Schema_PDF */ public function tableDraw($fontSize, $withDoc, $setColor = 0) { $this->diagram->setXyScale($this->x, $this->y); $this->diagram->SetFont($this->_ff, 'B', $fontSize); if ($setColor) { $this->diagram->SetTextColor(200); $this->diagram->SetFillColor(0, 0, 128); } if ($withDoc) { $this->diagram->SetLink( $this->diagram->PMA_links['RT'][$this->tableName]['-'], -1 ); } else { $this->diagram->PMA_links['doc'][$this->tableName]['-'] = ''; } $this->diagram->cellScale( $this->width, $this->heightCell, $this->getTitle(), 1, 1, 'C', $setColor, $this->diagram->PMA_links['doc'][$this->tableName]['-'] ); $this->diagram->setXScale($this->x); $this->diagram->SetFont($this->_ff, '', $fontSize); $this->diagram->SetTextColor(0); $this->diagram->SetFillColor(255); foreach ($this->fields as $field) { if ($setColor) { if (in_array($field, $this->primary)) { $this->diagram->SetFillColor(215, 121, 123); } if ($field == $this->displayfield) { $this->diagram->SetFillColor(142, 159, 224); } } if ($withDoc) { $this->diagram->SetLink( $this->diagram->PMA_links['RT'][$this->tableName][$field], -1 ); } else { $this->diagram->PMA_links['doc'][$this->tableName][$field] = ''; } $this->diagram->cellScale( $this->width, $this->heightCell, ' ' . $field, 1, 1, 'L', $setColor, $this->diagram->PMA_links['doc'][$this->tableName][$field] ); $this->diagram->setXScale($this->x); $this->diagram->SetFillColor(255); } } } db/login/libraries/classes/Plugins/Schema/Pdf/Pdf.php000064400000024434151502156010016431 0ustar00_pageNumber = $pageNumber; $this->_withDoc = $withDoc; $this->_db = $db; $this->relation = new Relation(); } /** * Sets the value for margins * * @param float $c_margin margin * * @return void */ public function setCMargin($c_margin) { $this->cMargin = $c_margin; } /** * Sets the scaling factor, defines minimum coordinates and margins * * @param float|int $scale The scaling factor * @param float|int $xMin The minimum X coordinate * @param float|int $yMin The minimum Y coordinate * @param float|int $leftMargin The left margin * @param float|int $topMargin The top margin * * @return void */ public function setScale($scale = 1, $xMin = 0, $yMin = 0, $leftMargin = -1, $topMargin = -1 ) { $this->scale = $scale; $this->_xMin = $xMin; $this->_yMin = $yMin; if ($this->leftMargin != -1) { $this->leftMargin = $leftMargin; } if ($this->topMargin != -1) { $this->topMargin = $topMargin; } } /** * Outputs a scaled cell * * @param float|int $w The cell width * @param float|int $h The cell height * @param string $txt The text to output * @param mixed $border Whether to add borders or not * @param integer $ln Where to put the cursor once the output is done * @param string $align Align mode * @param integer $fill Whether to fill the cell with a color or not * @param string $link Link * * @return void * * @see TCPDF::Cell() */ public function cellScale($w, $h = 0, $txt = '', $border = 0, $ln = 0, $align = '', $fill = 0, $link = '' ) { $h = $h / $this->scale; $w = $w / $this->scale; $this->Cell($w, $h, $txt, $border, $ln, $align, $fill, $link); } /** * Draws a scaled line * * @param float $x1 The horizontal position of the starting point * @param float $y1 The vertical position of the starting point * @param float $x2 The horizontal position of the ending point * @param float $y2 The vertical position of the ending point * * @return void * * @see TCPDF::Line() */ public function lineScale($x1, $y1, $x2, $y2) { $x1 = ($x1 - $this->_xMin) / $this->scale + $this->leftMargin; $y1 = ($y1 - $this->_yMin) / $this->scale + $this->topMargin; $x2 = ($x2 - $this->_xMin) / $this->scale + $this->leftMargin; $y2 = ($y2 - $this->_yMin) / $this->scale + $this->topMargin; $this->Line($x1, $y1, $x2, $y2); } /** * Sets x and y scaled positions * * @param float $x The x position * @param float $y The y position * * @return void * * @see TCPDF::SetXY() */ public function setXyScale($x, $y) { $x = ($x - $this->_xMin) / $this->scale + $this->leftMargin; $y = ($y - $this->_yMin) / $this->scale + $this->topMargin; $this->SetXY($x, $y); } /** * Sets the X scaled positions * * @param float $x The x position * * @return void * * @see TCPDF::SetX() */ public function setXScale($x) { $x = ($x - $this->_xMin) / $this->scale + $this->leftMargin; $this->SetX($x); } /** * Sets the scaled font size * * @param float $size The font size (in points) * * @return void * * @see TCPDF::SetFontSize() */ public function setFontSizeScale($size) { // Set font size in points $size = $size / $this->scale; $this->SetFontSize($size); } /** * Sets the scaled line width * * @param float $width The line width * * @return void * * @see TCPDF::SetLineWidth() */ public function setLineWidthScale($width) { $width = $width / $this->scale; $this->SetLineWidth($width); } /** * This method is used to render the page header. * * @return void * * @see TCPDF::Header() */ // @codingStandardsIgnoreLine public function Header() { // We only show this if we find something in the new pdf_pages table // This function must be named "Header" to work with the TCPDF library if ($this->_withDoc) { if ($this->_offline || $this->_pageNumber == -1) { $pg_name = __("PDF export page"); } else { $test_query = 'SELECT * FROM ' . Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . Util::backquote($GLOBALS['cfgRelation']['pdf_pages']) . ' WHERE db_name = \'' . $GLOBALS['dbi']->escapeString($this->_db) . '\' AND page_nr = \'' . $this->_pageNumber . '\''; $test_rs = $this->relation->queryAsControlUser($test_query); $pages = @$GLOBALS['dbi']->fetchAssoc($test_rs); $pg_name = ucfirst($pages['page_descr']); } $this->SetFont($this->_ff, 'B', 14); $this->Cell(0, 6, $pg_name, 'B', 1, 'C'); $this->SetFont($this->_ff, ''); $this->Ln(); } } /** * This function must be named "Footer" to work with the TCPDF library * * @return void * * @see PDF::Footer() */ // @codingStandardsIgnoreLine public function Footer() { if ($this->_withDoc) { parent::Footer(); } } /** * Sets widths * * @param array $w array of widths * * @return void */ public function setWidths(array $w) { // column widths $this->widths = $w; } /** * Generates table row. * * @param array $data Data for table * @param array $links Links for table cells * * @return void */ public function row(array $data, array $links) { // line height $nb = 0; $data_cnt = count($data); for ($i = 0;$i < $data_cnt;$i++) { $nb = max($nb, $this->numLines($this->widths[$i], $data[$i])); } $il = $this->FontSize; $h = ($il + 1) * $nb; // page break if necessary $this->CheckPageBreak($h); // draw the cells $data_cnt = count($data); for ($i = 0;$i < $data_cnt;$i++) { $w = $this->widths[$i]; // save current position $x = $this->GetX(); $y = $this->GetY(); // draw the border $this->Rect($x, $y, $w, $h); if (isset($links[$i])) { $this->Link($x, $y, $w, $h, $links[$i]); } // print text $this->MultiCell($w, $il + 1, $data[$i], 0, 'L'); // go to right side $this->SetXY($x + $w, $y); } // go to line $this->Ln($h); } /** * Compute number of lines used by a multicell of width w * * @param int $w width * @param string $txt text * * @return int */ public function numLines($w, $txt) { $cw = &$this->CurrentFont['cw']; if ($w == 0) { $w = $this->w - $this->rMargin - $this->x; } $wmax = ($w-2 * $this->cMargin) * 1000 / $this->FontSize; $s = str_replace("\r", '', $txt); $nb = strlen($s); if ($nb > 0 && $s[$nb-1] == "\n") { $nb--; } $sep = -1; $i = 0; $j = 0; $l = 0; $nl = 1; while ($i < $nb) { $c = $s[$i]; if ($c == "\n") { $i++; $sep = -1; $j = $i; $l = 0; $nl++; continue; } if ($c == ' ') { $sep = $i; } $l += isset($cw[mb_ord($c)])?$cw[mb_ord($c)]:0 ; if ($l > $wmax) { if ($sep == -1) { if ($i == $j) { $i++; } } else { $i = $sep + 1; } $sep = -1; $j = $i; $l = 0; $nl++; } else { $i++; } } return $nl; } /** * Set whether the document is generated from client side DB * * @param string $value whether offline * * @return void * * @access private */ public function setOffline($value) { $this->_offline = $value; } } db/login/libraries/classes/Plugins/Schema/Pdf/RelationStatsPdf.php000064400000010151151502156010021135 0ustar00wTick = 5; parent::__construct( $diagram, $master_table, $master_field, $foreign_table, $foreign_field ); } /** * draws relation links and arrows shows foreign key relations * * @param boolean $showColor Whether to use one color per relation or not * @param integer $i The id of the link to draw * * @access public * * @return void * * @see Pdf */ public function relationDraw($showColor, $i) { if ($showColor) { $d = $i % 6; $j = ($i - $d) / 6; $j = $j % 4; $j++; $case = array( array(1, 0, 0), array(0, 1, 0), array(0, 0, 1), array(1, 1, 0), array(1, 0, 1), array(0, 1, 1) ); list ($a, $b, $c) = $case[$d]; $e = (1 - ($j - 1) / 6); $this->diagram->SetDrawColor($a * 255 * $e, $b * 255 * $e, $c * 255 * $e); } else { $this->diagram->SetDrawColor(0); } $this->diagram->setLineWidthScale(0.2); $this->diagram->lineScale( $this->xSrc, $this->ySrc, $this->xSrc + $this->srcDir * $this->wTick, $this->ySrc ); $this->diagram->lineScale( $this->xDest + $this->destDir * $this->wTick, $this->yDest, $this->xDest, $this->yDest ); $this->diagram->setLineWidthScale(0.1); $this->diagram->lineScale( $this->xSrc + $this->srcDir * $this->wTick, $this->ySrc, $this->xDest + $this->destDir * $this->wTick, $this->yDest ); /* * Draws arrows -> */ $root2 = 2 * sqrt(2); $this->diagram->lineScale( $this->xSrc + $this->srcDir * $this->wTick * 0.75, $this->ySrc, $this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick, $this->ySrc + $this->wTick / $root2 ); $this->diagram->lineScale( $this->xSrc + $this->srcDir * $this->wTick * 0.75, $this->ySrc, $this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick, $this->ySrc - $this->wTick / $root2 ); $this->diagram->lineScale( $this->xDest + $this->destDir * $this->wTick / 2, $this->yDest, $this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick, $this->yDest + $this->wTick / $root2 ); $this->diagram->lineScale( $this->xDest + $this->destDir * $this->wTick / 2, $this->yDest, $this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick, $this->yDest - $this->wTick / $root2 ); $this->diagram->SetDrawColor(0); } } db/login/libraries/classes/Plugins/Schema/SchemaSvg.php000064400000004627151502156010017071 0ustar00setProperties(); } /** * Sets the schema export SVG properties * * @return void */ protected function setProperties() { $schemaPluginProperties = new SchemaPluginProperties(); $schemaPluginProperties->setText('SVG'); $schemaPluginProperties->setExtension('svg'); $schemaPluginProperties->setMimeType('application/svg'); // create the root group that will be the options field for // $schemaPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // specific options main group $specificOptions = new OptionsPropertyMainGroup("general_opts"); // add options common to all plugins $this->addCommonOptions($specificOptions); // create leaf items and add them to the group $leaf = new BoolPropertyItem( 'all_tables_same_width', __('Same width for all tables') ); $specificOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($specificOptions); // set the options for the schema export plugin property item $schemaPluginProperties->setOptions($exportSpecificOptions); $this->properties = $schemaPluginProperties; } /** * Exports the schema into SVG format. * * @param string $db database name * * @return bool Whether it succeeded */ public function exportSchema($db) { $export = new SvgRelationSchema($db); $export->showOutput(); } } db/login/libraries/classes/Plugins/Schema/SchemaEps.php000064400000005403151502156010017052 0ustar00setProperties(); } /** * Sets the schema export EPS properties * * @return void */ protected function setProperties() { $schemaPluginProperties = new SchemaPluginProperties(); $schemaPluginProperties->setText('EPS'); $schemaPluginProperties->setExtension('eps'); $schemaPluginProperties->setMimeType('application/eps'); // create the root group that will be the options field for // $schemaPluginProperties // this will be shown as "Format specific options" $exportSpecificOptions = new OptionsPropertyRootGroup( "Format Specific Options" ); // specific options main group $specificOptions = new OptionsPropertyMainGroup("general_opts"); // add options common to all plugins $this->addCommonOptions($specificOptions); // create leaf items and add them to the group $leaf = new BoolPropertyItem( 'all_tables_same_width', __('Same width for all tables') ); $specificOptions->addProperty($leaf); $leaf = new SelectPropertyItem( "orientation", __('Orientation') ); $leaf->setValues( array( 'L' => __('Landscape'), 'P' => __('Portrait'), ) ); $specificOptions->addProperty($leaf); // add the main group to the root group $exportSpecificOptions->addProperty($specificOptions); // set the options for the schema export plugin property item $schemaPluginProperties->setOptions($exportSpecificOptions); $this->properties = $schemaPluginProperties; } /** * Exports the schema into EPS format. * * @param string $db database name * * @return bool Whether it succeeded */ public function exportSchema($db) { $export = new EpsRelationSchema($db); $export->showOutput(); } } db/login/libraries/classes/Plugins/Schema/Dia/DiaRelationSchema.php000064400000015705151502156010021221 0ustar00setShowColor(isset($_REQUEST['dia_show_color'])); $this->setShowKeys(isset($_REQUEST['dia_show_keys'])); $this->setOrientation($_REQUEST['dia_orientation']); $this->setPaper($_REQUEST['dia_paper']); $this->diagram->startDiaDoc( $this->paper, $this->_topMargin, $this->_bottomMargin, $this->_leftMargin, $this->_rightMargin, $this->orientation ); $alltables = $this->getTablesFromRequest(); foreach ($alltables as $table) { if (!isset($this->tables[$table])) { $this->_tables[$table] = new TableStatsDia( $this->diagram, $this->db, $table, $this->pageNumber, $this->showKeys, $this->offline ); } } $seen_a_relation = false; foreach ($alltables as $one_table) { $exist_rel = $this->relation->getForeigners($this->db, $one_table, '', 'both'); if (!$exist_rel) { continue; } $seen_a_relation = true; foreach ($exist_rel as $master_field => $rel) { /* put the foreign table on the schema only if selected * by the user * (do not use array_search() because we would have to * to do a === false and this is not PHP3 compatible) */ if ($master_field != 'foreign_keys_data') { if (in_array($rel['foreign_table'], $alltables)) { $this->_addRelation( $one_table, $master_field, $rel['foreign_table'], $rel['foreign_field'], $this->showKeys ); } continue; } foreach ($rel as $one_key) { if (!in_array($one_key['ref_table_name'], $alltables)) { continue; } foreach ($one_key['index_list'] as $index => $one_field) { $this->_addRelation( $one_table, $one_field, $one_key['ref_table_name'], $one_key['ref_index_list'][$index], $this->showKeys ); } } } } $this->_drawTables(); if ($seen_a_relation) { $this->_drawRelations(); } $this->diagram->endDiaDoc(); } /** * Output Dia Document for download * * @return void * @access public */ public function showOutput() { $this->diagram->showOutput($this->getFileName('.dia')); } /** * Defines relation objects * * @param string $masterTable The master table name * @param string $masterField The relation field in the master table * @param string $foreignTable The foreign table name * @param string $foreignField The relation field in the foreign table * @param bool $showKeys Whether to display ONLY keys or not * * @return void * * @access private * @see TableStatsDia::__construct(),RelationStatsDia::__construct() */ private function _addRelation( $masterTable, $masterField, $foreignTable, $foreignField, $showKeys ) { if (!isset($this->_tables[$masterTable])) { $this->_tables[$masterTable] = new TableStatsDia( $this->diagram, $this->db, $masterTable, $this->pageNumber, $showKeys ); } if (!isset($this->_tables[$foreignTable])) { $this->_tables[$foreignTable] = new TableStatsDia( $this->diagram, $this->db, $foreignTable, $this->pageNumber, $showKeys ); } $this->_relations[] = new RelationStatsDia( $this->diagram, $this->_tables[$masterTable], $masterField, $this->_tables[$foreignTable], $foreignField ); } /** * Draws relation references * * connects master table's master field to * foreign table's foreign field using Dia object * type Database - Reference * * @return void * * @access private * @see RelationStatsDia::relationDraw() */ private function _drawRelations() { foreach ($this->_relations as $relation) { $relation->relationDraw($this->showColor); } } /** * Draws tables * * Tables are generated using Dia object type Database - Table * primary fields are underlined and bold in tables * * @return void * * @access private * @see TableStatsDia::tableDraw() */ private function _drawTables() { foreach ($this->_tables as $table) { $table->tableDraw($this->showColor); } } } db/login/libraries/classes/Plugins/Schema/Dia/TableStatsDia.php000064400000017530151502156010020367 0ustar00tableId = ++DiaRelationSchema::$objectId; } /** * Displays an error when the table cannot be found. * * @return void */ protected function showMissingTableError() { ExportRelationSchema::dieSchema( $this->pageNumber, "DIA", sprintf(__('The %s table doesn\'t exist!'), $this->tableName) ); } /** * Do draw the table * * Tables are generated using object type Database - Table * primary fields are underlined in tables. Dia object * is used to generate the XML of Dia Document. Database Table * Object and their attributes are involved in the combination * of displaying Database - Table on Dia Document. * * @param boolean $showColor Whether to show color for tables text or not * if showColor is true then an array of $listOfColors * will be used to choose the random colors for tables * text we can change/add more colors to this array * * @return void * * @access public * @see Dia */ public function tableDraw($showColor) { if ($showColor) { $listOfColors = array( 'FF0000', '000099', '00FF00' ); shuffle($listOfColors); $this->tableColor = '#' . $listOfColors[0] . ''; } else { $this->tableColor = '#000000'; } $factor = 0.1; $this->diagram->startElement('dia:object'); $this->diagram->writeAttribute('type', 'Database - Table'); $this->diagram->writeAttribute('version', '0'); $this->diagram->writeAttribute('id', '' . $this->tableId . ''); $this->diagram->writeRaw( ' #' . $this->tableName . '# ## ' ); $this->diagram->startElement('dia:attribute'); $this->diagram->writeAttribute('name', 'attributes'); foreach ($this->fields as $field) { $this->diagram->writeRaw( ' #' . $field . '# ## ## ' ); unset($pm); $pm = 'false'; if (in_array($field, $this->primary)) { $pm = 'true'; } if ($field == $this->displayfield) { $pm = 'false'; } $this->diagram->writeRaw( ' ' ); } $this->diagram->endElement(); $this->diagram->endElement(); } } db/login/libraries/classes/Plugins/Schema/Dia/Dia.php000064400000013511151502156010016373 0ustar00openMemory(); /* * Set indenting using three spaces, * so output is formatted */ $this->setIndent(true); $this->setIndentString(' '); /* * Create the XML document */ $this->startDocument('1.0', 'UTF-8'); } /** * Starts Dia Document * * dia document starts by first initializing dia:diagram tag * then dia:diagramdata contains all the attributes that needed * to define the document, then finally a Layer starts which * holds all the objects. * * @param string $paper the size of the paper/document * @param float $topMargin top margin of the paper/document in cm * @param float $bottomMargin bottom margin of the paper/document in cm * @param float $leftMargin left margin of the paper/document in cm * @param float $rightMargin right margin of the paper/document in cm * @param string $orientation orientation of the document, portrait or landscape * * @return void * * @access public * @see XMLWriter::startElement(),XMLWriter::writeAttribute(), * XMLWriter::writeRaw() */ public function startDiaDoc( $paper, $topMargin, $bottomMargin, $leftMargin, $rightMargin, $orientation ) { if ($orientation == 'P') { $isPortrait = 'true'; } else { $isPortrait = 'false'; } $this->startElement('dia:diagram'); $this->writeAttribute('xmlns:dia', 'http://www.lysator.liu.se/~alla/dia/'); $this->startElement('dia:diagramdata'); $this->writeRaw( ' #' . $paper . '# ' ); $this->endElement(); $this->startElement('dia:layer'); $this->writeAttribute('name', 'Background'); $this->writeAttribute('visible', 'true'); $this->writeAttribute('active', 'true'); } /** * Ends Dia Document * * @return void * @access public * @see XMLWriter::endElement(),XMLWriter::endDocument() */ public function endDiaDoc() { $this->endElement(); $this->endDocument(); } /** * Output Dia Document for download * * @param string $fileName name of the dia document * * @return void * @access public * @see XMLWriter::flush() */ public function showOutput($fileName) { if (ob_get_clean()) { ob_end_clean(); } $output = $this->flush(); Response::getInstance()->disable(); Core::downloadHeader( $fileName, 'application/x-dia-diagram', strlen($output) ); print $output; } } db/login/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php000064400000017035151502156010021115 0ustar00diagram = $diagram; $src_pos = $this->_getXy($master_table, $master_field); $dest_pos = $this->_getXy($foreign_table, $foreign_field); $this->srcConnPointsLeft = $src_pos[0]; $this->srcConnPointsRight = $src_pos[1]; $this->destConnPointsLeft = $dest_pos[0]; $this->destConnPointsRight = $dest_pos[1]; $this->masterTablePos = $src_pos[2]; $this->foreignTablePos = $dest_pos[2]; $this->masterTableId = $master_table->tableId; $this->foreignTableId = $foreign_table->tableId; } /** * Each Table object have connection points * which is used to connect to other objects in Dia * we detect the position of key in fields and * then determines its left and right connection * points. * * @param string $table The current table name * @param string $column The relation column name * * @return array Table right,left connection points and key position * * @access private */ private function _getXy($table, $column) { $pos = array_search($column, $table->fields); // left, right, position $value = 12; if ($pos != 0) { return array($pos + $value + $pos, $pos + $value + $pos + 1, $pos); } return array($pos + $value , $pos + $value + 1, $pos); } /** * Draws relation references * * connects master table's master field to foreign table's * foreign field using Dia object type Database - Reference * Dia object is used to generate the XML of Dia Document. * Database reference Object and their attributes are involved * in the combination of displaying Database - reference on Dia Document. * * @param boolean $showColor Whether to use one color per relation or not * if showColor is true then an array of $listOfColors * will be used to choose the random colors for * references lines. we can change/add more colors to * this * * @return boolean|void * * @access public * @see PDF */ public function relationDraw($showColor) { ++DiaRelationSchema::$objectId; /* * if source connection points and destination connection * points are same then return it false and don't draw that * relation */ if ($this->srcConnPointsRight == $this->destConnPointsRight) { if ($this->srcConnPointsLeft == $this->destConnPointsLeft) { return false; } } if ($showColor) { $listOfColors = array( 'FF0000', '000099', '00FF00', ); shuffle($listOfColors); $this->referenceColor = '#' . $listOfColors[0] . ''; } else { $this->referenceColor = '#000000'; } $this->diagram->writeRaw( ' #1# #n# ' ); } } db/login/libraries/classes/Plugins/Schema/RelationStats.php000064400000006142151502156010017777 0ustar00diagram = $diagram; $src_pos = $this->_getXy($master_table, $master_field); $dest_pos = $this->_getXy($foreign_table, $foreign_field); /* * [0] is x-left * [1] is x-right * [2] is y */ $src_left = $src_pos[0] - $this->wTick; $src_right = $src_pos[1] + $this->wTick; $dest_left = $dest_pos[0] - $this->wTick; $dest_right = $dest_pos[1] + $this->wTick; $d1 = abs($src_left - $dest_left); $d2 = abs($src_right - $dest_left); $d3 = abs($src_left - $dest_right); $d4 = abs($src_right - $dest_right); $d = min($d1, $d2, $d3, $d4); if ($d == $d1) { $this->xSrc = $src_pos[0]; $this->srcDir = -1; $this->xDest = $dest_pos[0]; $this->destDir = -1; } elseif ($d == $d2) { $this->xSrc = $src_pos[1]; $this->srcDir = 1; $this->xDest = $dest_pos[0]; $this->destDir = -1; } elseif ($d == $d3) { $this->xSrc = $src_pos[0]; $this->srcDir = -1; $this->xDest = $dest_pos[1]; $this->destDir = 1; } else { $this->xSrc = $src_pos[1]; $this->srcDir = 1; $this->xDest = $dest_pos[1]; $this->destDir = 1; } $this->ySrc = $src_pos[2]; $this->yDest = $dest_pos[2]; } /** * Gets arrows coordinates * * @param string $table The current table name * @param string $column The relation column name * * @return array Arrows coordinates * * @access private */ private function _getXy($table, $column) { $pos = array_search($column, $table->fields); // x_left, x_right, y return array( $table->x, $table->x + $table->width, $table->y + ($pos + 1.5) * $table->heightCell, ); } } db/login/libraries/classes/Plugins/TwoFactorPlugin.php000064400000006631151502156010017075 0ustar00_twofactor = $twofactor; $this->_provided = false; $this->_message = ''; } /** * Returns authentication error message * * @return string */ public function getError() { if ($this->_provided) { if (!empty($this->_message)) { return Message::rawError( sprintf(__('Two-factor authentication failed: %s'), $this->_message) )->getDisplay(); } return Message::rawError( __('Two-factor authentication failed.') )->getDisplay(); } return ''; } /** * Checks authentication, returns true on success * * @return boolean */ public function check() { return true; } /** * Renders user interface to enter two-factor authentication * * @return string HTML code */ public function render() { return ''; } /** * Renders user interface to configure two-factor authentication * * @return string HTML code */ public function setup() { return ''; } /** * Performs backend configuration * * @return boolean */ public function configure() { return true; } /** * Get user visible name * * @return string */ public static function getName() { return __('No Two-Factor'); } /** * Get user visible description * * @return string */ public static function getDescription() { return __('Login using password only.'); } /** * Return an applicaiton ID * * Either hostname or hostname with scheme. * * @param boolean $return_url Whether to generate URL * * @return string */ public function getAppId($return_url) { global $PMA_Config; $url = $PMA_Config->get('PmaAbsoluteUri'); $parsed = []; if (!empty($url)) { $parsed = parse_url($url); } if (empty($parsed['scheme'])) { $parsed['scheme'] = $PMA_Config->isHttps() ? 'https' : 'http'; } if (empty($parsed['host'])) { $parsed['host'] = Core::getenv('HTTP_HOST'); } if ($return_url) { return $parsed['scheme'] . '://' . $parsed['host'] . (!empty($parsed['port']) ? ':' . $parsed['port'] : ''); } else { return $parsed['host']; } } } db/login/libraries/classes/Plugins/ImportPlugin.php000064400000003260151502156010016432 0ustar00properties; } /** * Sets the export plugins properties and is implemented by each import * plugin * * @return void */ abstract protected function setProperties(); /** * Define DB name and options * * @param string $currentDb DB * @param string $defaultDb Default DB name * * @return array DB name and options (an associative array of options) */ protected function getDbnameAndOptions($currentDb, $defaultDb) { if (strlen($currentDb) > 0) { $db_name = $currentDb; $options = array('create_db' => false); } else { $db_name = $defaultDb; $options = null; } return array($db_name, $options); } } db/login/libraries/classes/DatabaseInterface.php000064400000317561151502156010015721 0ustar00_extension = $ext; $this->_links = array(); if (defined('TESTSUITE')) { $this->_links[DatabaseInterface::CONNECT_USER] = 1; $this->_links[DatabaseInterface::CONNECT_CONTROL] = 2; } $this->_table_cache = array(); $this->_current_user = array(); $this->types = new Types($this); $this->relation = new Relation(); } /** * Checks whether database extension is loaded * * @param string $extension mysql extension to check * * @return bool */ public static function checkDbExtension($extension = 'mysql') { return function_exists($extension . '_connect'); } /** * runs a query * * @param string $query SQL query to execute * @param mixed $link optional database link to use * @param int $options optional query options * @param bool $cache_affected_rows whether to cache affected rows * * @return mixed */ public function query($query, $link = DatabaseInterface::CONNECT_USER, $options = 0, $cache_affected_rows = true ) { $res = $this->tryQuery($query, $link, $options, $cache_affected_rows) or Util::mysqlDie($this->getError($link), $query); return $res; } /** * Get a cached value from table cache. * * @param array $contentPath Array of the name of the target value * @param mixed $default Return value on cache miss * * @return mixed cached value or default */ public function getCachedTableContent(array $contentPath, $default = null) { return Util::getValueByKey($this->_table_cache, $contentPath, $default); } /** * Set an item in table cache using dot notation. * * @param array $contentPath Array with the target path * @param mixed $value Target value * * @return void */ public function cacheTableContent(array $contentPath, $value) { $loc = &$this->_table_cache; if (!isset($contentPath)) { $loc = $value; return; } while (count($contentPath) > 1) { $key = array_shift($contentPath); // If the key doesn't exist at this depth, we will just create an empty // array to hold the next value, allowing us to create the arrays to hold // final values at the correct depth. Then we'll keep digging into the // array. if (!isset($loc[$key]) || !is_array($loc[$key])) { $loc[$key] = array(); } $loc = &$loc[$key]; } $loc[array_shift($contentPath)] = $value; } /** * Clear the table cache. * * @return void */ public function clearTableCache() { $this->_table_cache = array(); } /** * Caches table data so Table does not require to issue * SHOW TABLE STATUS again * * @param array $tables information for tables of some databases * @param string $table table name * * @return void */ private function _cacheTableData(array $tables, $table) { // Note: I don't see why we would need array_merge_recursive() here, // as it creates double entries for the same table (for example a double // entry for Comment when changing the storage engine in Operations) // Note 2: Instead of array_merge(), simply use the + operator because // array_merge() renumbers numeric keys starting with 0, therefore // we would lose a db name that consists only of numbers foreach ($tables as $one_database => $its_tables) { if (isset($this->_table_cache[$one_database])) { // the + operator does not do the intended effect // when the cache for one table already exists if ($table && isset($this->_table_cache[$one_database][$table]) ) { unset($this->_table_cache[$one_database][$table]); } $this->_table_cache[$one_database] = $this->_table_cache[$one_database] + $tables[$one_database]; } else { $this->_table_cache[$one_database] = $tables[$one_database]; } } } /** * Stores query data into session data for debugging purposes * * @param string $query Query text * @param integer $link link type * @param object|boolean $result Query result * @param integer $time Time to execute query * * @return void */ private function _dbgQuery($query, $link, $result, $time) { $dbgInfo = array(); $error_message = $this->getError($link); if ($result == false && is_string($error_message)) { $dbgInfo['error'] = '' . htmlspecialchars($error_message) . ''; } $dbgInfo['query'] = htmlspecialchars($query); $dbgInfo['time'] = $time; // Get and slightly format backtrace, this is used // in the javascript console. // Strip call to _dbgQuery $dbgInfo['trace'] = Error::processBacktrace( array_slice(debug_backtrace(), 1) ); $dbgInfo['hash'] = md5($query); $_SESSION['debug']['queries'][] = $dbgInfo; } /** * runs a query and returns the result * * @param string $query query to run * @param integer $link link type * @param integer $options query options * @param bool $cache_affected_rows whether to cache affected row * * @return mixed */ public function tryQuery($query, $link = DatabaseInterface::CONNECT_USER, $options = 0, $cache_affected_rows = true ) { $debug = isset($GLOBALS['cfg']['DBG']) ? $GLOBALS['cfg']['DBG']['sql'] : false; if (! isset($this->_links[$link])) { return false; } if ($debug) { $time = microtime(true); } $result = $this->_extension->realQuery($query, $this->_links[$link], $options); if ($cache_affected_rows) { $GLOBALS['cached_affected_rows'] = $this->affectedRows($link, false); } if ($debug) { $time = microtime(true) - $time; $this->_dbgQuery($query, $link, $result, $time); if ($GLOBALS['cfg']['DBG']['sqllog']) { $warningsCount = ''; if (($options & DatabaseInterface::QUERY_STORE) == DatabaseInterface::QUERY_STORE) { if (isset($this->_links[$link]->warning_count)) { $warningsCount = $this->_links[$link]->warning_count; } } openlog('phpMyAdmin', LOG_NDELAY | LOG_PID, LOG_USER); syslog( LOG_INFO, 'SQL[' . basename($_SERVER['SCRIPT_NAME']) . ']: ' . sprintf('%0.3f', $time) . '(W:' . $warningsCount . ') > ' . $query ); closelog(); } } if ($result !== false && Tracker::isActive()) { Tracker::handleQuery($query); } return $result; } /** * Run multi query statement and return results * * @param string $multi_query multi query statement to execute * @param mysqli $link mysqli object * * @return mysqli_result collection | boolean(false) */ public function tryMultiQuery($multi_query = '', $link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->realMultiQuery($this->_links[$link], $multi_query); } /** * returns array with table names for given db * * @param string $database name of database * @param mixed $link mysql link resource|object * * @return array tables names */ public function getTables($database, $link = DatabaseInterface::CONNECT_USER) { $tables = $this->fetchResult( 'SHOW TABLES FROM ' . Util::backquote($database) . ';', null, 0, $link, self::QUERY_STORE ); if ($GLOBALS['cfg']['NaturalOrder']) { usort($tables, 'strnatcasecmp'); } return $tables; } /** * returns * * @param string $database name of database * @param array $tables list of tables to search for for relations * @param int $link mysql link resource|object * * @return array array of found foreign keys */ public function getForeignKeyConstrains($database, array $tables, $link = DatabaseInterface::CONNECT_USER) { $tablesListForQuery = ''; foreach($tables as $table){ $tablesListForQuery .= "'" . $this->escapeString($table) . "',"; } $tablesListForQuery = rtrim($tablesListForQuery, ','); $foreignKeyConstrains = $this->fetchResult( "SELECT" . " TABLE_NAME," . " COLUMN_NAME," . " REFERENCED_TABLE_NAME," . " REFERENCED_COLUMN_NAME" . " FROM information_schema.key_column_usage" . " WHERE referenced_table_name IS NOT NULL" . " AND TABLE_SCHEMA = '" . $this->escapeString($database) . "'" . " AND TABLE_NAME IN (" . $tablesListForQuery . ")" . " AND REFERENCED_TABLE_NAME IN (" . $tablesListForQuery . ");", null, null, $link, self::QUERY_STORE ); return $foreignKeyConstrains; } /** * returns a segment of the SQL WHERE clause regarding table name and type * * @param array|string $table table(s) * @param boolean $tbl_is_group $table is a table group * @param string $table_type whether table or view * * @return string a segment of the WHERE clause */ private function _getTableCondition($table, $tbl_is_group, $table_type) { // get table information from information_schema if ($table) { if (is_array($table)) { $sql_where_table = 'AND t.`TABLE_NAME` ' . Util::getCollateForIS() . ' IN (\'' . implode( '\', \'', array_map( array($this, 'escapeString'), $table ) ) . '\')'; } elseif (true === $tbl_is_group) { $sql_where_table = 'AND t.`TABLE_NAME` LIKE \'' . Util::escapeMysqlWildcards( $GLOBALS['dbi']->escapeString($table) ) . '%\''; } else { $sql_where_table = 'AND t.`TABLE_NAME` ' . Util::getCollateForIS() . ' = \'' . $GLOBALS['dbi']->escapeString($table) . '\''; } } else { $sql_where_table = ''; } if ($table_type) { if ($table_type == 'view') { $sql_where_table .= " AND t.`TABLE_TYPE` NOT IN ('BASE TABLE', 'SYSTEM VERSIONED')"; } elseif ($table_type == 'table') { $sql_where_table .= " AND t.`TABLE_TYPE` IN ('BASE TABLE', 'SYSTEM VERSIONED')"; } } return $sql_where_table; } /** * returns the beginning of the SQL statement to fetch the list of tables * * @param string[] $this_databases databases to list * @param string $sql_where_table additional condition * * @return string the SQL statement */ private function _getSqlForTablesFull($this_databases, $sql_where_table) { $sql = ' SELECT *, `TABLE_SCHEMA` AS `Db`, `TABLE_NAME` AS `Name`, `TABLE_TYPE` AS `TABLE_TYPE`, `ENGINE` AS `Engine`, `ENGINE` AS `Type`, `VERSION` AS `Version`, `ROW_FORMAT` AS `Row_format`, `TABLE_ROWS` AS `Rows`, `AVG_ROW_LENGTH` AS `Avg_row_length`, `DATA_LENGTH` AS `Data_length`, `MAX_DATA_LENGTH` AS `Max_data_length`, `INDEX_LENGTH` AS `Index_length`, `DATA_FREE` AS `Data_free`, `AUTO_INCREMENT` AS `Auto_increment`, `CREATE_TIME` AS `Create_time`, `UPDATE_TIME` AS `Update_time`, `CHECK_TIME` AS `Check_time`, `TABLE_COLLATION` AS `Collation`, `CHECKSUM` AS `Checksum`, `CREATE_OPTIONS` AS `Create_options`, `TABLE_COMMENT` AS `Comment` FROM `information_schema`.`TABLES` t WHERE `TABLE_SCHEMA` ' . Util::getCollateForIS() . ' IN (\'' . implode("', '", $this_databases) . '\') ' . $sql_where_table; return $sql; } /** * returns array of all tables in given db or dbs * this function expects unquoted names: * RIGHT: my_database * WRONG: `my_database` * WRONG: my\_database * if $tbl_is_group is true, $table is used as filter for table names * * * $GLOBALS['dbi']->getTablesFull('my_database'); * $GLOBALS['dbi']->getTablesFull('my_database', 'my_table')); * $GLOBALS['dbi']->getTablesFull('my_database', 'my_tables_', true)); * * * @param string $database database * @param string|array $table table name(s) * @param boolean $tbl_is_group $table is a table group * @param integer $limit_offset zero-based offset for the count * @param boolean|integer $limit_count number of tables to return * @param string $sort_by table attribute to sort by * @param string $sort_order direction to sort (ASC or DESC) * @param string $table_type whether table or view * @param integer $link link type * * @todo move into Table * * @return array list of tables in given db(s) */ public function getTablesFull($database, $table = '', $tbl_is_group = false, $limit_offset = 0, $limit_count = false, $sort_by = 'Name', $sort_order = 'ASC', $table_type = null, $link = DatabaseInterface::CONNECT_USER ) { if (true === $limit_count) { $limit_count = $GLOBALS['cfg']['MaxTableList']; } // prepare and check parameters if (! is_array($database)) { $databases = array($database); } else { $databases = $database; } $tables = array(); if (! $GLOBALS['cfg']['Server']['DisableIS']) { $sql_where_table = $this->_getTableCondition( $table, $tbl_is_group, $table_type ); // for PMA bc: // `SCHEMA_FIELD_NAME` AS `SHOW_TABLE_STATUS_FIELD_NAME` // // on non-Windows servers, // added BINARY in the WHERE clause to force a case sensitive // comparison (if we are looking for the db Aa we don't want // to find the db aa) $this_databases = array_map( array($this, 'escapeString'), $databases ); $sql = $this->_getSqlForTablesFull($this_databases, $sql_where_table); // Sort the tables $sql .= " ORDER BY $sort_by $sort_order"; if ($limit_count) { $sql .= ' LIMIT ' . $limit_count . ' OFFSET ' . $limit_offset; } $tables = $this->fetchResult( $sql, array('TABLE_SCHEMA', 'TABLE_NAME'), null, $link ); if ($sort_by == 'Name' && $GLOBALS['cfg']['NaturalOrder']) { // here, the array's first key is by schema name foreach ($tables as $one_database_name => $one_database_tables) { uksort($one_database_tables, 'strnatcasecmp'); if ($sort_order == 'DESC') { $one_database_tables = array_reverse($one_database_tables); } $tables[$one_database_name] = $one_database_tables; } } elseif ($sort_by == 'Data_length') { // Size = Data_length + Index_length foreach ($tables as $one_database_name => $one_database_tables) { uasort( $one_database_tables, function ($a, $b) { $aLength = $a['Data_length'] + $a['Index_length']; $bLength = $b['Data_length'] + $b['Index_length']; return $aLength == $bLength ? 0 : ($aLength < $bLength ? -1 : 1); } ); if ($sort_order == 'DESC') { $one_database_tables = array_reverse($one_database_tables); } $tables[$one_database_name] = $one_database_tables; } } } // end (get information from table schema) // If permissions are wrong on even one database directory, // information_schema does not return any table info for any database // this is why we fall back to SHOW TABLE STATUS even for MySQL >= 50002 if (empty($tables)) { foreach ($databases as $each_database) { if ($table || (true === $tbl_is_group) || ! empty($table_type)) { $sql = 'SHOW TABLE STATUS FROM ' . Util::backquote($each_database) . ' WHERE'; $needAnd = false; if ($table || (true === $tbl_is_group)) { if (is_array($table)) { $sql .= ' `Name` IN (\'' . implode( '\', \'', array_map( array($this, 'escapeString'), $table, $link ) ) . '\')'; } else { $sql .= " `Name` LIKE '" . Util::escapeMysqlWildcards( $this->escapeString($table, $link) ) . "%'"; } $needAnd = true; } if (! empty($table_type)) { if ($needAnd) { $sql .= " AND"; } if ($table_type == 'view') { $sql .= " `Comment` = 'VIEW'"; } elseif ($table_type == 'table') { $sql .= " `Comment` != 'VIEW'"; } } } else { $sql = 'SHOW TABLE STATUS FROM ' . Util::backquote($each_database); } $each_tables = $this->fetchResult($sql, 'Name', null, $link); // Sort naturally if the config allows it and we're sorting // the Name column. if ($sort_by == 'Name' && $GLOBALS['cfg']['NaturalOrder']) { uksort($each_tables, 'strnatcasecmp'); if ($sort_order == 'DESC') { $each_tables = array_reverse($each_tables); } } else { // Prepare to sort by creating array of the selected sort // value to pass to array_multisort // Size = Data_length + Index_length if ($sort_by == 'Data_length') { foreach ($each_tables as $table_name => $table_data) { ${$sort_by}[$table_name] = strtolower( $table_data['Data_length'] + $table_data['Index_length'] ); } } else { foreach ($each_tables as $table_name => $table_data) { ${$sort_by}[$table_name] = strtolower($table_data[$sort_by]); } } if (! empty($$sort_by)) { if ($sort_order == 'DESC') { array_multisort($$sort_by, SORT_DESC, $each_tables); } else { array_multisort($$sort_by, SORT_ASC, $each_tables); } } // cleanup the temporary sort array unset($$sort_by); } if ($limit_count) { $each_tables = array_slice( $each_tables, $limit_offset, $limit_count ); } foreach ($each_tables as $table_name => $each_table) { if (! isset($each_tables[$table_name]['Type']) && isset($each_tables[$table_name]['Engine']) ) { // pma BC, same parts of PMA still uses 'Type' $each_tables[$table_name]['Type'] =& $each_tables[$table_name]['Engine']; } elseif (! isset($each_tables[$table_name]['Engine']) && isset($each_tables[$table_name]['Type']) ) { // old MySQL reports Type, newer MySQL reports Engine $each_tables[$table_name]['Engine'] =& $each_tables[$table_name]['Type']; } // Compatibility with INFORMATION_SCHEMA output $each_tables[$table_name]['TABLE_SCHEMA'] = $each_database; $each_tables[$table_name]['TABLE_NAME'] =& $each_tables[$table_name]['Name']; $each_tables[$table_name]['ENGINE'] =& $each_tables[$table_name]['Engine']; $each_tables[$table_name]['VERSION'] =& $each_tables[$table_name]['Version']; $each_tables[$table_name]['ROW_FORMAT'] =& $each_tables[$table_name]['Row_format']; $each_tables[$table_name]['TABLE_ROWS'] =& $each_tables[$table_name]['Rows']; $each_tables[$table_name]['AVG_ROW_LENGTH'] =& $each_tables[$table_name]['Avg_row_length']; $each_tables[$table_name]['DATA_LENGTH'] =& $each_tables[$table_name]['Data_length']; $each_tables[$table_name]['MAX_DATA_LENGTH'] =& $each_tables[$table_name]['Max_data_length']; $each_tables[$table_name]['INDEX_LENGTH'] =& $each_tables[$table_name]['Index_length']; $each_tables[$table_name]['DATA_FREE'] =& $each_tables[$table_name]['Data_free']; $each_tables[$table_name]['AUTO_INCREMENT'] =& $each_tables[$table_name]['Auto_increment']; $each_tables[$table_name]['CREATE_TIME'] =& $each_tables[$table_name]['Create_time']; $each_tables[$table_name]['UPDATE_TIME'] =& $each_tables[$table_name]['Update_time']; $each_tables[$table_name]['CHECK_TIME'] =& $each_tables[$table_name]['Check_time']; $each_tables[$table_name]['TABLE_COLLATION'] =& $each_tables[$table_name]['Collation']; $each_tables[$table_name]['CHECKSUM'] =& $each_tables[$table_name]['Checksum']; $each_tables[$table_name]['CREATE_OPTIONS'] =& $each_tables[$table_name]['Create_options']; $each_tables[$table_name]['TABLE_COMMENT'] =& $each_tables[$table_name]['Comment']; if (strtoupper($each_tables[$table_name]['Comment']) === 'VIEW' && $each_tables[$table_name]['Engine'] == null ) { $each_tables[$table_name]['TABLE_TYPE'] = 'VIEW'; } elseif ($each_database == 'information_schema') { $each_tables[$table_name]['TABLE_TYPE'] = 'SYSTEM VIEW'; } else { /** * @todo difference between 'TEMPORARY' and 'BASE TABLE' * but how to detect? */ $each_tables[$table_name]['TABLE_TYPE'] = 'BASE TABLE'; } } $tables[$each_database] = $each_tables; } } // cache table data // so Table does not require to issue SHOW TABLE STATUS again $this->_cacheTableData($tables, $table); if (is_array($database)) { return $tables; } if (isset($tables[$database])) { return $tables[$database]; } if (isset($tables[mb_strtolower($database)])) { // on windows with lower_case_table_names = 1 // MySQL returns // with SHOW DATABASES or information_schema.SCHEMATA: `Test` // but information_schema.TABLES gives `test` // see https://github.com/phpmyadmin/phpmyadmin/issues/8402 return $tables[mb_strtolower($database)]; } return $tables; } /** * Get VIEWs in a particular database * * @param string $db Database name to look in * * @return array $views Set of VIEWs inside the database */ public function getVirtualTables($db) { $tables_full = $this->getTablesFull($db); $views = array(); foreach ($tables_full as $table=>$tmp) { $_table = $this->getTable($db, $table); if ($_table->isView()) { $views[] = $table; } } return $views; } /** * returns array with databases containing extended infos about them * * @param string $database database * @param boolean $force_stats retrieve stats also for MySQL < 5 * @param integer $link link type * @param string $sort_by column to order by * @param string $sort_order ASC or DESC * @param integer $limit_offset starting offset for LIMIT * @param bool|int $limit_count row count for LIMIT or true * for $GLOBALS['cfg']['MaxDbList'] * * @todo move into ListDatabase? * * @return array $databases */ public function getDatabasesFull($database = null, $force_stats = false, $link = DatabaseInterface::CONNECT_USER, $sort_by = 'SCHEMA_NAME', $sort_order = 'ASC', $limit_offset = 0, $limit_count = false ) { $sort_order = strtoupper($sort_order); if (true === $limit_count) { $limit_count = $GLOBALS['cfg']['MaxDbList']; } $apply_limit_and_order_manual = true; if (! $GLOBALS['cfg']['Server']['DisableIS']) { /** * if $GLOBALS['cfg']['NaturalOrder'] is enabled, we cannot use LIMIT * cause MySQL does not support natural ordering, * we have to do it afterward */ $limit = ''; if (! $GLOBALS['cfg']['NaturalOrder']) { if ($limit_count) { $limit = ' LIMIT ' . $limit_count . ' OFFSET ' . $limit_offset; } $apply_limit_and_order_manual = false; } // get table information from information_schema if (! empty($database)) { $sql_where_schema = 'WHERE `SCHEMA_NAME` LIKE \'' . $this->escapeString($database, $link) . '\''; } else { $sql_where_schema = ''; } $sql = 'SELECT *, CAST(BIN_NAME AS CHAR CHARACTER SET utf8) AS SCHEMA_NAME FROM ('; $sql .= 'SELECT BINARY s.SCHEMA_NAME AS BIN_NAME, s.DEFAULT_COLLATION_NAME'; if ($force_stats) { $sql .= ', COUNT(t.TABLE_SCHEMA) AS SCHEMA_TABLES, SUM(t.TABLE_ROWS) AS SCHEMA_TABLE_ROWS, SUM(t.DATA_LENGTH) AS SCHEMA_DATA_LENGTH, SUM(t.MAX_DATA_LENGTH) AS SCHEMA_MAX_DATA_LENGTH, SUM(t.INDEX_LENGTH) AS SCHEMA_INDEX_LENGTH, SUM(t.DATA_LENGTH + t.INDEX_LENGTH) AS SCHEMA_LENGTH, SUM(IF(t.ENGINE <> \'InnoDB\', t.DATA_FREE, 0)) AS SCHEMA_DATA_FREE'; } $sql .= ' FROM `information_schema`.SCHEMATA s '; if ($force_stats) { $sql .= ' LEFT JOIN `information_schema`.TABLES t ON BINARY t.TABLE_SCHEMA = BINARY s.SCHEMA_NAME'; } $sql .= $sql_where_schema . ' GROUP BY BINARY s.SCHEMA_NAME, s.DEFAULT_COLLATION_NAME ORDER BY '; if ($sort_by == 'SCHEMA_NAME' || $sort_by == 'DEFAULT_COLLATION_NAME' ) { $sql .= 'BINARY '; } $sql .= Util::backquote($sort_by) . ' ' . $sort_order . $limit; $sql .= ') a'; $databases = $this->fetchResult($sql, 'SCHEMA_NAME', null, $link); $mysql_error = $this->getError($link); if (! count($databases) && $GLOBALS['errno']) { Util::mysqlDie($mysql_error, $sql); } // display only databases also in official database list // f.e. to apply hide_db and only_db $drops = array_diff( array_keys($databases), (array) $GLOBALS['dblist']->databases ); foreach ($drops as $drop) { unset($databases[$drop]); } } else { $databases = array(); foreach ($GLOBALS['dblist']->databases as $database_name) { // Compatibility with INFORMATION_SCHEMA output $databases[$database_name]['SCHEMA_NAME'] = $database_name; $databases[$database_name]['DEFAULT_COLLATION_NAME'] = $this->getDbCollation($database_name); if (!$force_stats) { continue; } // get additional info about tables $databases[$database_name]['SCHEMA_TABLES'] = 0; $databases[$database_name]['SCHEMA_TABLE_ROWS'] = 0; $databases[$database_name]['SCHEMA_DATA_LENGTH'] = 0; $databases[$database_name]['SCHEMA_MAX_DATA_LENGTH'] = 0; $databases[$database_name]['SCHEMA_INDEX_LENGTH'] = 0; $databases[$database_name]['SCHEMA_LENGTH'] = 0; $databases[$database_name]['SCHEMA_DATA_FREE'] = 0; $res = $this->query( 'SHOW TABLE STATUS FROM ' . Util::backquote($database_name) . ';' ); if ($res === false) { unset($res); continue; } while ($row = $this->fetchAssoc($res)) { $databases[$database_name]['SCHEMA_TABLES']++; $databases[$database_name]['SCHEMA_TABLE_ROWS'] += $row['Rows']; $databases[$database_name]['SCHEMA_DATA_LENGTH'] += $row['Data_length']; $databases[$database_name]['SCHEMA_MAX_DATA_LENGTH'] += $row['Max_data_length']; $databases[$database_name]['SCHEMA_INDEX_LENGTH'] += $row['Index_length']; // for InnoDB, this does not contain the number of // overhead bytes but the total free space if ('InnoDB' != $row['Engine']) { $databases[$database_name]['SCHEMA_DATA_FREE'] += $row['Data_free']; } $databases[$database_name]['SCHEMA_LENGTH'] += $row['Data_length'] + $row['Index_length']; } $this->freeResult($res); unset($res); } } /** * apply limit and order manually now * (caused by older MySQL < 5 or $GLOBALS['cfg']['NaturalOrder']) */ if ($apply_limit_and_order_manual) { $GLOBALS['callback_sort_order'] = $sort_order; $GLOBALS['callback_sort_by'] = $sort_by; usort( $databases, array(self::class, '_usortComparisonCallback') ); unset($GLOBALS['callback_sort_order'], $GLOBALS['callback_sort_by']); /** * now apply limit */ if ($limit_count) { $databases = array_slice($databases, $limit_offset, $limit_count); } } return $databases; } /** * usort comparison callback * * @param string $a first argument to sort * @param string $b second argument to sort * * @return integer a value representing whether $a should be before $b in the * sorted array or not * * @access private */ private static function _usortComparisonCallback($a, $b) { if ($GLOBALS['cfg']['NaturalOrder']) { $sorter = 'strnatcasecmp'; } else { $sorter = 'strcasecmp'; } /* No sorting when key is not present */ if (! isset($a[$GLOBALS['callback_sort_by']]) || ! isset($b[$GLOBALS['callback_sort_by']]) ) { return 0; } // produces f.e.: // return -1 * strnatcasecmp($a["SCHEMA_TABLES"], $b["SCHEMA_TABLES"]) return ($GLOBALS['callback_sort_order'] == 'ASC' ? 1 : -1) * $sorter( $a[$GLOBALS['callback_sort_by']], $b[$GLOBALS['callback_sort_by']] ); } // end of the '_usortComparisonCallback()' method /** * returns detailed array with all columns for sql * * @param string $sql_query target SQL query to get columns * @param array $view_columns alias for columns * * @return array */ public function getColumnMapFromSql($sql_query, array $view_columns = array()) { $result = $this->tryQuery($sql_query); if ($result === false) { return array(); } $meta = $this->getFieldsMeta( $result ); $nbFields = count($meta); if ($nbFields <= 0) { return array(); } $column_map = array(); $nbColumns = count($view_columns); for ($i=0; $i < $nbFields; $i++) { $map = array(); $map['table_name'] = $meta[$i]->table; $map['refering_column'] = $meta[$i]->name; if ($nbColumns > 1) { $map['real_column'] = $view_columns[$i]; } $column_map[] = $map; } return $column_map; } /** * returns detailed array with all columns for given table in database, * or all tables/databases * * @param string $database name of database * @param string $table name of table to retrieve columns from * @param string $column name of specific column * @param mixed $link mysql link resource * * @return array */ public function getColumnsFull($database = null, $table = null, $column = null, $link = DatabaseInterface::CONNECT_USER ) { if (! $GLOBALS['cfg']['Server']['DisableIS']) { $sql_wheres = array(); $array_keys = array(); // get columns information from information_schema if (null !== $database) { $sql_wheres[] = '`TABLE_SCHEMA` = \'' . $this->escapeString($database, $link) . '\' '; } else { $array_keys[] = 'TABLE_SCHEMA'; } if (null !== $table) { $sql_wheres[] = '`TABLE_NAME` = \'' . $this->escapeString($table, $link) . '\' '; } else { $array_keys[] = 'TABLE_NAME'; } if (null !== $column) { $sql_wheres[] = '`COLUMN_NAME` = \'' . $this->escapeString($column, $link) . '\' '; } else { $array_keys[] = 'COLUMN_NAME'; } // for PMA bc: // `[SCHEMA_FIELD_NAME]` AS `[SHOW_FULL_COLUMNS_FIELD_NAME]` $sql = ' SELECT *, `COLUMN_NAME` AS `Field`, `COLUMN_TYPE` AS `Type`, `COLLATION_NAME` AS `Collation`, `IS_NULLABLE` AS `Null`, `COLUMN_KEY` AS `Key`, `COLUMN_DEFAULT` AS `Default`, `EXTRA` AS `Extra`, `PRIVILEGES` AS `Privileges`, `COLUMN_COMMENT` AS `Comment` FROM `information_schema`.`COLUMNS`'; if (count($sql_wheres)) { $sql .= "\n" . ' WHERE ' . implode(' AND ', $sql_wheres); } return $this->fetchResult($sql, $array_keys, null, $link); } $columns = array(); if (null === $database) { foreach ($GLOBALS['dblist']->databases as $database) { $columns[$database] = $this->getColumnsFull( $database, null, null, $link ); } return $columns; } elseif (null === $table) { $tables = $this->getTables($database); foreach ($tables as $table) { $columns[$table] = $this->getColumnsFull( $database, $table, null, $link ); } return $columns; } $sql = 'SHOW FULL COLUMNS FROM ' . Util::backquote($database) . '.' . Util::backquote($table); if (null !== $column) { $sql .= " LIKE '" . $this->escapeString($column, $link) . "'"; } $columns = $this->fetchResult($sql, 'Field', null, $link); $ordinal_position = 1; foreach ($columns as $column_name => $each_column) { // Compatibility with INFORMATION_SCHEMA output $columns[$column_name]['COLUMN_NAME'] =& $columns[$column_name]['Field']; $columns[$column_name]['COLUMN_TYPE'] =& $columns[$column_name]['Type']; $columns[$column_name]['COLLATION_NAME'] =& $columns[$column_name]['Collation']; $columns[$column_name]['IS_NULLABLE'] =& $columns[$column_name]['Null']; $columns[$column_name]['COLUMN_KEY'] =& $columns[$column_name]['Key']; $columns[$column_name]['COLUMN_DEFAULT'] =& $columns[$column_name]['Default']; $columns[$column_name]['EXTRA'] =& $columns[$column_name]['Extra']; $columns[$column_name]['PRIVILEGES'] =& $columns[$column_name]['Privileges']; $columns[$column_name]['COLUMN_COMMENT'] =& $columns[$column_name]['Comment']; $columns[$column_name]['TABLE_CATALOG'] = null; $columns[$column_name]['TABLE_SCHEMA'] = $database; $columns[$column_name]['TABLE_NAME'] = $table; $columns[$column_name]['ORDINAL_POSITION'] = $ordinal_position; $columns[$column_name]['DATA_TYPE'] = substr( $columns[$column_name]['COLUMN_TYPE'], 0, strpos($columns[$column_name]['COLUMN_TYPE'], '(') ); /** * @todo guess CHARACTER_MAXIMUM_LENGTH from COLUMN_TYPE */ $columns[$column_name]['CHARACTER_MAXIMUM_LENGTH'] = null; /** * @todo guess CHARACTER_OCTET_LENGTH from CHARACTER_MAXIMUM_LENGTH */ $columns[$column_name]['CHARACTER_OCTET_LENGTH'] = null; $columns[$column_name]['NUMERIC_PRECISION'] = null; $columns[$column_name]['NUMERIC_SCALE'] = null; $columns[$column_name]['CHARACTER_SET_NAME'] = substr( $columns[$column_name]['COLLATION_NAME'], 0, strpos($columns[$column_name]['COLLATION_NAME'], '_') ); $ordinal_position++; } if (null !== $column) { return reset($columns); } return $columns; } /** * Returns SQL query for fetching columns for a table * * The 'Key' column is not calculated properly, use $GLOBALS['dbi']->getColumns() * to get correct values. * * @param string $database name of database * @param string $table name of table to retrieve columns from * @param string $column name of column, null to show all columns * @param boolean $full whether to return full info or only column names * * @see getColumns() * * @return string */ public function getColumnsSql($database, $table, $column = null, $full = false) { $sql = 'SHOW ' . ($full ? 'FULL' : '') . ' COLUMNS FROM ' . Util::backquote($database) . '.' . Util::backquote($table) . (($column !== null) ? "LIKE '" . $GLOBALS['dbi']->escapeString($column) . "'" : ''); return $sql; } /** * Returns descriptions of columns in given table (all or given by $column) * * @param string $database name of database * @param string $table name of table to retrieve columns from * @param string $column name of column, null to show all columns * @param boolean $full whether to return full info or only column names * @param integer $link link type * * @return array array indexed by column names or, * if $column is given, flat array description */ public function getColumns($database, $table, $column = null, $full = false, $link = DatabaseInterface::CONNECT_USER ) { $sql = $this->getColumnsSql($database, $table, $column, $full); $fields = $this->fetchResult($sql, 'Field', null, $link); if (! is_array($fields) || count($fields) == 0) { return array(); } // Check if column is a part of multiple-column index and set its 'Key'. $indexes = Index::getFromTable($table, $database); foreach ($fields as $field => $field_data) { if (!empty($field_data['Key'])) { continue; } foreach ($indexes as $index) { /** @var Index $index */ if (!$index->hasColumn($field)) { continue; } $index_columns = $index->getColumns(); if ($index_columns[$field]->getSeqInIndex() > 1) { if ($index->isUnique()) { $fields[$field]['Key'] = 'UNI'; } else { $fields[$field]['Key'] = 'MUL'; } } } } return ($column != null) ? array_shift($fields) : $fields; } /** * Returns all column names in given table * * @param string $database name of database * @param string $table name of table to retrieve columns from * @param mixed $link mysql link resource * * @return null|array */ public function getColumnNames($database, $table, $link = DatabaseInterface::CONNECT_USER) { $sql = $this->getColumnsSql($database, $table); // We only need the 'Field' column which contains the table's column names $fields = array_keys($this->fetchResult($sql, 'Field', null, $link)); if (! is_array($fields) || count($fields) == 0) { return null; } return $fields; } /** * Returns SQL for fetching information on table indexes (SHOW INDEXES) * * @param string $database name of database * @param string $table name of the table whose indexes are to be retrieved * @param string $where additional conditions for WHERE * * @return string SQL for getting indexes */ public function getTableIndexesSql($database, $table, $where = null) { $sql = 'SHOW INDEXES FROM ' . Util::backquote($database) . '.' . Util::backquote($table); if ($where) { $sql .= ' WHERE (' . $where . ')'; } return $sql; } /** * Returns indexes of a table * * @param string $database name of database * @param string $table name of the table whose indexes are to be retrieved * @param mixed $link mysql link resource * * @return array $indexes */ public function getTableIndexes($database, $table, $link = DatabaseInterface::CONNECT_USER) { $sql = $this->getTableIndexesSql($database, $table); $indexes = $this->fetchResult($sql, null, null, $link); if (! is_array($indexes) || count($indexes) < 1) { return array(); } return $indexes; } /** * returns value of given mysql server variable * * @param string $var mysql server variable name * @param int $type DatabaseInterface::GETVAR_SESSION | * DatabaseInterface::GETVAR_GLOBAL * @param mixed $link mysql link resource|object * * @return mixed value for mysql server variable */ public function getVariable( $var, $type = self::GETVAR_SESSION, $link = DatabaseInterface::CONNECT_USER ) { switch ($type) { case self::GETVAR_SESSION: $modifier = ' SESSION'; break; case self::GETVAR_GLOBAL: $modifier = ' GLOBAL'; break; default: $modifier = ''; } return $this->fetchValue( 'SHOW' . $modifier . ' VARIABLES LIKE \'' . $var . '\';', 0, 1, $link ); } /** * Sets new value for a variable if it is different from the current value * * @param string $var variable name * @param string $value value to set * @param mixed $link mysql link resource|object * * @return bool whether query was a successful */ public function setVariable($var, $value, $link = DatabaseInterface::CONNECT_USER) { $current_value = $this->getVariable( $var, self::GETVAR_SESSION, $link ); if ($current_value == $value) { return true; } return $this->query("SET " . $var . " = " . $value . ';', $link); } /** * Convert version string to integer. * * @param string $version MySQL server version * * @return int */ public static function versionToInt($version) { $match = explode('.', $version); return (int) sprintf('%d%02d%02d', $match[0], $match[1], intval($match[2])); } /** * Function called just after a connection to the MySQL database server has * been established. It sets the connection collation, and determines the * version of MySQL which is running. * * @return void */ public function postConnect() { $version = $this->fetchSingleRow( 'SELECT @@version, @@version_comment', 'ASSOC', DatabaseInterface::CONNECT_USER ); if ($version) { $this->_version_str = isset($version['@@version']) ? $version['@@version'] : ''; $this->_version_int = self::versionToInt($this->_version_str); $this->_version_comment = isset($version['@@version_comment']) ? $version['@@version_comment'] : ''; if (stripos($this->_version_str, 'mariadb') !== false) { $this->_is_mariadb = true; } if (stripos($this->_version_comment, 'percona') !== false) { $this->_is_percona = true; } } if ($this->_version_int > 50503) { $default_charset = 'utf8mb4'; $default_collation = 'utf8mb4_general_ci'; } else { $default_charset = 'utf8'; $default_collation = 'utf8_general_ci'; } $GLOBALS['collation_connection'] = $default_collation; $GLOBALS['charset_connection'] = $default_charset; $this->query( "SET NAMES '$default_charset' COLLATE '$default_collation';", DatabaseInterface::CONNECT_USER, self::QUERY_STORE ); /* Locale for messages */ $locale = LanguageManager::getInstance()->getCurrentLanguage()->getMySQLLocale(); if (! empty($locale)) { $this->query( "SET lc_messages = '" . $locale . "';", DatabaseInterface::CONNECT_USER, self::QUERY_STORE ); } // Set timezone for the session, if required. if ($GLOBALS['cfg']['Server']['SessionTimeZone'] != '') { $sql_query_tz = 'SET ' . Util::backquote('time_zone') . ' = ' . '\'' . $this->escapeString($GLOBALS['cfg']['Server']['SessionTimeZone']) . '\''; if (! $this->tryQuery($sql_query_tz)) { $error_message_tz = sprintf( __( 'Unable to use timezone "%1$s" for server %2$d. ' . 'Please check your configuration setting for ' . '[em]$cfg[\'Servers\'][%3$d][\'SessionTimeZone\'][/em]. ' . 'phpMyAdmin is currently using the default time zone ' . 'of the database server.' ), $GLOBALS['cfg']['Server']['SessionTimeZone'], $GLOBALS['server'], $GLOBALS['server'] ); trigger_error($error_message_tz, E_USER_WARNING); } } /* Loads closest context to this version. */ \PhpMyAdmin\SqlParser\Context::loadClosest( ($this->_is_mariadb ? 'MariaDb' : 'MySql') . $this->_version_int ); /** * the DatabaseList class as a stub for the ListDatabase class */ $GLOBALS['dblist'] = new DatabaseList(); } /** * Sets collation connection for user link * * @param string $collation collation to set */ public function setCollation($collation) { $charset = $GLOBALS['charset_connection']; /* Automatically adjust collation if not supported by server */ if ($charset == 'utf8' && strncmp('utf8mb4_', $collation, 8) == 0) { $collation = 'utf8_' . substr($collation, 8); } $result = $this->tryQuery( "SET collation_connection = '" . $this->escapeString($collation, DatabaseInterface::CONNECT_USER) . "';", DatabaseInterface::CONNECT_USER, self::QUERY_STORE ); if ($result === false) { trigger_error( __('Failed to set configured collation connection!'), E_USER_WARNING ); } else { $GLOBALS['collation_connection'] = $collation; } } /** * This function checks and initialises the phpMyAdmin configuration * storage state before it is used into session cache. * * @return void */ public function initRelationParamsCache() { if (strlen($GLOBALS['db'])) { $cfgRelation = $this->relation->getRelationsParam(); if (empty($cfgRelation['db'])) { $this->relation->fixPmaTables($GLOBALS['db'], false); } } $cfgRelation = $this->relation->getRelationsParam(); if (empty($cfgRelation['db']) && isset($GLOBALS['dblist'])) { if ($GLOBALS['dblist']->databases->exists('phpmyadmin')) { $this->relation->fixPmaTables('phpmyadmin', false); } } } /** * Function called just after a connection to the MySQL database server has * been established. It sets the connection collation, and determines the * version of MySQL which is running. * * @return void */ public function postConnectControl() { // If Zero configuration mode enabled, check PMA tables in current db. if ($GLOBALS['cfg']['ZeroConf'] == true) { /** * the DatabaseList class as a stub for the ListDatabase class */ $GLOBALS['dblist'] = new DatabaseList(); $this->initRelationParamsCache(); } } /** * returns a single value from the given result or query, * if the query or the result has more than one row or field * the first field of the first row is returned * * * $sql = 'SELECT `name` FROM `user` WHERE `id` = 123'; * $user_name = $GLOBALS['dbi']->fetchValue($sql); * // produces * // $user_name = 'John Doe' * * * @param string $query The query to execute * @param integer $row_number row to fetch the value from, * starting at 0, with 0 being default * @param integer|string $field field to fetch the value from, * starting at 0, with 0 being default * @param integer $link link type * * @return mixed value of first field in first row from result * or false if not found */ public function fetchValue($query, $row_number = 0, $field = 0, $link = DatabaseInterface::CONNECT_USER) { $value = false; $result = $this->tryQuery( $query, $link, self::QUERY_STORE, false ); if ($result === false) { return false; } // return false if result is empty or false // or requested row is larger than rows in result if ($this->numRows($result) < ($row_number + 1)) { return $value; } // if $field is an integer use non associative mysql fetch function if (is_int($field)) { $fetch_function = 'fetchRow'; } else { $fetch_function = 'fetchAssoc'; } // get requested row for ($i = 0; $i <= $row_number; $i++) { $row = $this->$fetch_function($result); } $this->freeResult($result); // return requested field if (isset($row[$field])) { $value = $row[$field]; } return $value; } /** * returns only the first row from the result * * * $sql = 'SELECT * FROM `user` WHERE `id` = 123'; * $user = $GLOBALS['dbi']->fetchSingleRow($sql); * // produces * // $user = array('id' => 123, 'name' => 'John Doe') * * * @param string $query The query to execute * @param string $type NUM|ASSOC|BOTH returned array should either numeric * associative or both * @param integer $link link type * * @return array|boolean first row from result * or false if result is empty */ public function fetchSingleRow($query, $type = 'ASSOC', $link = DatabaseInterface::CONNECT_USER) { $result = $this->tryQuery( $query, $link, self::QUERY_STORE, false ); if ($result === false) { return false; } // return false if result is empty or false if (! $this->numRows($result)) { return false; } switch ($type) { case 'NUM' : $fetch_function = 'fetchRow'; break; case 'ASSOC' : $fetch_function = 'fetchAssoc'; break; case 'BOTH' : default : $fetch_function = 'fetchArray'; break; } $row = $this->$fetch_function($result); $this->freeResult($result); return $row; } /** * Returns row or element of a row * * @param array $row Row to process * @param string|null $value Which column to return * * @return mixed */ private function _fetchValue(array $row, $value) { if (is_null($value)) { return $row; } return $row[$value]; } /** * returns all rows in the resultset in one array * * * $sql = 'SELECT * FROM `user`'; * $users = $GLOBALS['dbi']->fetchResult($sql); * // produces * // $users[] = array('id' => 123, 'name' => 'John Doe') * * $sql = 'SELECT `id`, `name` FROM `user`'; * $users = $GLOBALS['dbi']->fetchResult($sql, 'id'); * // produces * // $users['123'] = array('id' => 123, 'name' => 'John Doe') * * $sql = 'SELECT `id`, `name` FROM `user`'; * $users = $GLOBALS['dbi']->fetchResult($sql, 0); * // produces * // $users['123'] = array(0 => 123, 1 => 'John Doe') * * $sql = 'SELECT `id`, `name` FROM `user`'; * $users = $GLOBALS['dbi']->fetchResult($sql, 'id', 'name'); * // or * $users = $GLOBALS['dbi']->fetchResult($sql, 0, 1); * // produces * // $users['123'] = 'John Doe' * * $sql = 'SELECT `name` FROM `user`'; * $users = $GLOBALS['dbi']->fetchResult($sql); * // produces * // $users[] = 'John Doe' * * $sql = 'SELECT `group`, `name` FROM `user`' * $users = $GLOBALS['dbi']->fetchResult($sql, array('group', null), 'name'); * // produces * // $users['admin'][] = 'John Doe' * * $sql = 'SELECT `group`, `name` FROM `user`' * $users = $GLOBALS['dbi']->fetchResult($sql, array('group', 'name'), 'id'); * // produces * // $users['admin']['John Doe'] = '123' * * * @param string $query query to execute * @param string|integer|array $key field-name or offset * used as key for array * or array of those * @param string|integer $value value-name or offset * used as value for array * @param integer $link link type * @param integer $options query options * * @return array resultrows or values indexed by $key */ public function fetchResult($query, $key = null, $value = null, $link = DatabaseInterface::CONNECT_USER, $options = 0 ) { $resultrows = array(); $result = $this->tryQuery($query, $link, $options, false); // return empty array if result is empty or false if ($result === false) { return $resultrows; } $fetch_function = 'fetchAssoc'; // no nested array if only one field is in result if (null === $key && 1 === $this->numFields($result)) { $value = 0; $fetch_function = 'fetchRow'; } // if $key is an integer use non associative mysql fetch function if (is_int($key)) { $fetch_function = 'fetchRow'; } if (null === $key) { while ($row = $this->$fetch_function($result)) { $resultrows[] = $this->_fetchValue($row, $value); } } else { if (is_array($key)) { while ($row = $this->$fetch_function($result)) { $result_target =& $resultrows; foreach ($key as $key_index) { if (null === $key_index) { $result_target =& $result_target[]; continue; } if (! isset($result_target[$row[$key_index]])) { $result_target[$row[$key_index]] = array(); } $result_target =& $result_target[$row[$key_index]]; } $result_target = $this->_fetchValue($row, $value); } } else { while ($row = $this->$fetch_function($result)) { $resultrows[$row[$key]] = $this->_fetchValue($row, $value); } } } $this->freeResult($result); return $resultrows; } /** * Get supported SQL compatibility modes * * @return array supported SQL compatibility modes */ public function getCompatibilities() { $compats = array('NONE'); $compats[] = 'ANSI'; $compats[] = 'DB2'; $compats[] = 'MAXDB'; $compats[] = 'MYSQL323'; $compats[] = 'MYSQL40'; $compats[] = 'MSSQL'; $compats[] = 'ORACLE'; // removed; in MySQL 5.0.33, this produces exports that // can't be read by POSTGRESQL (see our bug #1596328) //$compats[] = 'POSTGRESQL'; $compats[] = 'TRADITIONAL'; return $compats; } /** * returns warnings for last query * * @param integer $link link type * * @return array warnings */ public function getWarnings($link = DatabaseInterface::CONNECT_USER) { return $this->fetchResult('SHOW WARNINGS', null, null, $link); } /** * returns an array of PROCEDURE or FUNCTION names for a db * * @param string $db db name * @param string $which PROCEDURE | FUNCTION * @param integer $link link type * * @return array the procedure names or function names */ public function getProceduresOrFunctions($db, $which, $link = DatabaseInterface::CONNECT_USER) { $shows = $this->fetchResult( 'SHOW ' . $which . ' STATUS;', null, null, $link ); $result = array(); foreach ($shows as $one_show) { if ($one_show['Db'] == $db && $one_show['Type'] == $which) { $result[] = $one_show['Name']; } } return($result); } /** * returns the definition of a specific PROCEDURE, FUNCTION, EVENT or VIEW * * @param string $db db name * @param string $which PROCEDURE | FUNCTION | EVENT | VIEW * @param string $name the procedure|function|event|view name * @param integer $link link type * * @return string the definition */ public function getDefinition($db, $which, $name, $link = DatabaseInterface::CONNECT_USER) { $returned_field = array( 'PROCEDURE' => 'Create Procedure', 'FUNCTION' => 'Create Function', 'EVENT' => 'Create Event', 'VIEW' => 'Create View' ); $query = 'SHOW CREATE ' . $which . ' ' . Util::backquote($db) . '.' . Util::backquote($name); return($this->fetchValue($query, 0, $returned_field[$which], $link)); } /** * returns details about the PROCEDUREs or FUNCTIONs for a specific database * or details about a specific routine * * @param string $db db name * @param string $which PROCEDURE | FUNCTION or null for both * @param string $name name of the routine (to fetch a specific routine) * * @return array information about ROCEDUREs or FUNCTIONs */ public function getRoutines($db, $which = null, $name = '') { $routines = array(); if (! $GLOBALS['cfg']['Server']['DisableIS']) { $query = "SELECT" . " `ROUTINE_SCHEMA` AS `Db`," . " `SPECIFIC_NAME` AS `Name`," . " `ROUTINE_TYPE` AS `Type`," . " `DEFINER` AS `Definer`," . " `LAST_ALTERED` AS `Modified`," . " `CREATED` AS `Created`," . " `SECURITY_TYPE` AS `Security_type`," . " `ROUTINE_COMMENT` AS `Comment`," . " `CHARACTER_SET_CLIENT` AS `character_set_client`," . " `COLLATION_CONNECTION` AS `collation_connection`," . " `DATABASE_COLLATION` AS `Database Collation`," . " `DTD_IDENTIFIER`" . " FROM `information_schema`.`ROUTINES`" . " WHERE `ROUTINE_SCHEMA` " . Util::getCollateForIS() . " = '" . $GLOBALS['dbi']->escapeString($db) . "'"; if (Core::isValid($which, array('FUNCTION','PROCEDURE'))) { $query .= " AND `ROUTINE_TYPE` = '" . $which . "'"; } if (! empty($name)) { $query .= " AND `SPECIFIC_NAME`" . " = '" . $GLOBALS['dbi']->escapeString($name) . "'"; } $result = $this->fetchResult($query); if (!empty($result)) { $routines = $result; } } else { if ($which == 'FUNCTION' || $which == null) { $query = "SHOW FUNCTION STATUS" . " WHERE `Db` = '" . $GLOBALS['dbi']->escapeString($db) . "'"; if (! empty($name)) { $query .= " AND `Name` = '" . $GLOBALS['dbi']->escapeString($name) . "'"; } $result = $this->fetchResult($query); if (!empty($result)) { $routines = array_merge($routines, $result); } } if ($which == 'PROCEDURE' || $which == null) { $query = "SHOW PROCEDURE STATUS" . " WHERE `Db` = '" . $GLOBALS['dbi']->escapeString($db) . "'"; if (! empty($name)) { $query .= " AND `Name` = '" . $GLOBALS['dbi']->escapeString($name) . "'"; } $result = $this->fetchResult($query); if (!empty($result)) { $routines = array_merge($routines, $result); } } } $ret = array(); foreach ($routines as $routine) { $one_result = array(); $one_result['db'] = $routine['Db']; $one_result['name'] = $routine['Name']; $one_result['type'] = $routine['Type']; $one_result['definer'] = $routine['Definer']; $one_result['returns'] = isset($routine['DTD_IDENTIFIER']) ? $routine['DTD_IDENTIFIER'] : ""; $ret[] = $one_result; } // Sort results by name $name = array(); foreach ($ret as $value) { $name[] = $value['name']; } array_multisort($name, SORT_ASC, $ret); return($ret); } /** * returns details about the EVENTs for a specific database * * @param string $db db name * @param string $name event name * * @return array information about EVENTs */ public function getEvents($db, $name = '') { if (! $GLOBALS['cfg']['Server']['DisableIS']) { $query = "SELECT" . " `EVENT_SCHEMA` AS `Db`," . " `EVENT_NAME` AS `Name`," . " `DEFINER` AS `Definer`," . " `TIME_ZONE` AS `Time zone`," . " `EVENT_TYPE` AS `Type`," . " `EXECUTE_AT` AS `Execute at`," . " `INTERVAL_VALUE` AS `Interval value`," . " `INTERVAL_FIELD` AS `Interval field`," . " `STARTS` AS `Starts`," . " `ENDS` AS `Ends`," . " `STATUS` AS `Status`," . " `ORIGINATOR` AS `Originator`," . " `CHARACTER_SET_CLIENT` AS `character_set_client`," . " `COLLATION_CONNECTION` AS `collation_connection`, " . "`DATABASE_COLLATION` AS `Database Collation`" . " FROM `information_schema`.`EVENTS`" . " WHERE `EVENT_SCHEMA` " . Util::getCollateForIS() . " = '" . $GLOBALS['dbi']->escapeString($db) . "'"; if (! empty($name)) { $query .= " AND `EVENT_NAME`" . " = '" . $GLOBALS['dbi']->escapeString($name) . "'"; } } else { $query = "SHOW EVENTS FROM " . Util::backquote($db); if (! empty($name)) { $query .= " AND `Name` = '" . $GLOBALS['dbi']->escapeString($name) . "'"; } } $result = array(); if ($events = $this->fetchResult($query)) { foreach ($events as $event) { $one_result = array(); $one_result['name'] = $event['Name']; $one_result['type'] = $event['Type']; $one_result['status'] = $event['Status']; $result[] = $one_result; } } // Sort results by name $name = array(); foreach ($result as $value) { $name[] = $value['name']; } array_multisort($name, SORT_ASC, $result); return $result; } /** * returns details about the TRIGGERs for a specific table or database * * @param string $db db name * @param string $table table name * @param string $delimiter the delimiter to use (may be empty) * * @return array information about triggers (may be empty) */ public function getTriggers($db, $table = '', $delimiter = '//') { $result = array(); if (! $GLOBALS['cfg']['Server']['DisableIS']) { $query = 'SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION' . ', EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT' . ', EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, DEFINER' . ' FROM information_schema.TRIGGERS' . ' WHERE EVENT_OBJECT_SCHEMA ' . Util::getCollateForIS() . '=' . ' \'' . $GLOBALS['dbi']->escapeString($db) . '\''; if (! empty($table)) { $query .= " AND EVENT_OBJECT_TABLE " . Util::getCollateForIS() . " = '" . $GLOBALS['dbi']->escapeString($table) . "';"; } } else { $query = "SHOW TRIGGERS FROM " . Util::backquote($db); if (! empty($table)) { $query .= " LIKE '" . $GLOBALS['dbi']->escapeString($table) . "';"; } } if ($triggers = $this->fetchResult($query)) { foreach ($triggers as $trigger) { if ($GLOBALS['cfg']['Server']['DisableIS']) { $trigger['TRIGGER_NAME'] = $trigger['Trigger']; $trigger['ACTION_TIMING'] = $trigger['Timing']; $trigger['EVENT_MANIPULATION'] = $trigger['Event']; $trigger['EVENT_OBJECT_TABLE'] = $trigger['Table']; $trigger['ACTION_STATEMENT'] = $trigger['Statement']; $trigger['DEFINER'] = $trigger['Definer']; } $one_result = array(); $one_result['name'] = $trigger['TRIGGER_NAME']; $one_result['table'] = $trigger['EVENT_OBJECT_TABLE']; $one_result['action_timing'] = $trigger['ACTION_TIMING']; $one_result['event_manipulation'] = $trigger['EVENT_MANIPULATION']; $one_result['definition'] = $trigger['ACTION_STATEMENT']; $one_result['definer'] = $trigger['DEFINER']; // do not prepend the schema name; this way, importing the // definition into another schema will work $one_result['full_trigger_name'] = Util::backquote( $trigger['TRIGGER_NAME'] ); $one_result['drop'] = 'DROP TRIGGER IF EXISTS ' . $one_result['full_trigger_name']; $one_result['create'] = 'CREATE TRIGGER ' . $one_result['full_trigger_name'] . ' ' . $trigger['ACTION_TIMING'] . ' ' . $trigger['EVENT_MANIPULATION'] . ' ON ' . Util::backquote($trigger['EVENT_OBJECT_TABLE']) . "\n" . ' FOR EACH ROW ' . $trigger['ACTION_STATEMENT'] . "\n" . $delimiter . "\n"; $result[] = $one_result; } } // Sort results by name $name = array(); foreach ($result as $value) { $name[] = $value['name']; } array_multisort($name, SORT_ASC, $result); return($result); } /** * Formats database error message in a friendly way. * This is needed because some errors messages cannot * be obtained by mysql_error(). * * @param int $error_number Error code * @param string $error_message Error message as returned by server * * @return string HML text with error details */ public static function formatError($error_number, $error_message) { $error_message = htmlspecialchars($error_message); $error = '#' . ((string) $error_number); $separator = ' — '; if ($error_number == 2002) { $error .= ' - ' . $error_message; $error .= $separator; $error .= __( 'The server is not responding (or the local server\'s socket' . ' is not correctly configured).' ); } elseif ($error_number == 2003) { $error .= ' - ' . $error_message; $error .= $separator . __('The server is not responding.'); } elseif ($error_number == 1698 ) { $error .= ' - ' . $error_message; $error .= $separator . ''; $error .= __('Logout and try as another user.') . ''; } elseif ($error_number == 1005) { if (strpos($error_message, 'errno: 13') !== false) { $error .= ' - ' . $error_message; $error .= $separator . __( 'Please check privileges of directory containing database.' ); } else { /* InnoDB constraints, see * https://dev.mysql.com/doc/refman/5.0/en/ * innodb-foreign-key-constraints.html */ $error .= ' - ' . $error_message . ' (' . __('Details…') . ')'; } } else { $error .= ' - ' . $error_message; } return $error; } /** * gets the current user with host * * @return string the current user i.e. user@host */ public function getCurrentUser() { if (Util::cacheExists('mysql_cur_user')) { return Util::cacheGet('mysql_cur_user'); } $user = $this->fetchValue('SELECT CURRENT_USER();'); if ($user !== false) { Util::cacheSet('mysql_cur_user', $user); return $user; } return '@'; } /** * Checks if current user is superuser * * @return bool Whether user is a superuser */ public function isSuperuser() { return self::isUserType('super'); } /** * Checks if current user has global create user/grant privilege * or is a superuser (i.e. SELECT on mysql.users) * while caching the result in session. * * @param string $type type of user to check for * i.e. 'create', 'grant', 'super' * * @return bool Whether user is a given type of user */ public function isUserType($type) { if (Util::cacheExists('is_' . $type . 'user')) { return Util::cacheGet('is_' . $type . 'user'); } // when connection failed we don't have a $userlink if (! isset($this->_links[DatabaseInterface::CONNECT_USER])) { return false; } // checking if user is logged in if ($type === 'logged') { return true; } if (! $GLOBALS['cfg']['Server']['DisableIS'] || $type === 'super') { // Prepare query for each user type check $query = ''; if ($type === 'super') { $query = 'SELECT 1 FROM mysql.user LIMIT 1'; } elseif ($type === 'create') { list($user, $host) = $this->getCurrentUserAndHost(); $query = "SELECT 1 FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` " . "WHERE `PRIVILEGE_TYPE` = 'CREATE USER' AND " . "'''" . $user . "''@''" . $host . "''' LIKE `GRANTEE` LIMIT 1"; } elseif ($type === 'grant') { list($user, $host) = $this->getCurrentUserAndHost(); $query = "SELECT 1 FROM (" . "SELECT `GRANTEE`, `IS_GRANTABLE` FROM " . "`INFORMATION_SCHEMA`.`COLUMN_PRIVILEGES` UNION " . "SELECT `GRANTEE`, `IS_GRANTABLE` FROM " . "`INFORMATION_SCHEMA`.`TABLE_PRIVILEGES` UNION " . "SELECT `GRANTEE`, `IS_GRANTABLE` FROM " . "`INFORMATION_SCHEMA`.`SCHEMA_PRIVILEGES` UNION " . "SELECT `GRANTEE`, `IS_GRANTABLE` FROM " . "`INFORMATION_SCHEMA`.`USER_PRIVILEGES`) t " . "WHERE `IS_GRANTABLE` = 'YES' AND " . "'''" . $user . "''@''" . $host . "''' LIKE `GRANTEE` LIMIT 1"; } $is = false; $result = $this->tryQuery( $query, self::CONNECT_USER, self::QUERY_STORE ); if ($result) { $is = (bool) $this->numRows($result); } $this->freeResult($result); } else { $is = false; $grants = $this->fetchResult( "SHOW GRANTS FOR CURRENT_USER();", null, null, self::CONNECT_USER, self::QUERY_STORE ); if ($grants) { foreach ($grants as $grant) { if ($type === 'create') { if (strpos($grant, "ALL PRIVILEGES ON *.*") !== false || strpos($grant, "CREATE USER") !== false ) { $is = true; break; } } elseif ($type === 'grant') { if (strpos($grant, "WITH GRANT OPTION") !== false) { $is = true; break; } } } } } Util::cacheSet('is_' . $type . 'user', $is); return $is; } /** * Get the current user and host * * @return array array of username and hostname */ public function getCurrentUserAndHost() { if (count($this->_current_user) == 0) { $user = $this->getCurrentUser(); $this->_current_user = explode("@", $user); } return $this->_current_user; } /** * Returns value for lower_case_table_names variable * * @return string */ public function getLowerCaseNames() { if (is_null($this->_lower_case_table_names)) { $this->_lower_case_table_names = $this->fetchValue( "SELECT @@lower_case_table_names" ); } return $this->_lower_case_table_names; } /** * Get the list of system schemas * * @return array list of system schemas */ public function getSystemSchemas() { $schemas = array( 'information_schema', 'performance_schema', 'mysql', 'sys' ); $systemSchemas = array(); foreach ($schemas as $schema) { if ($this->isSystemSchema($schema, true)) { $systemSchemas[] = $schema; } } return $systemSchemas; } /** * Checks whether given schema is a system schema * * @param string $schema_name Name of schema (database) to test * @param bool $testForMysqlSchema Whether 'mysql' schema should * be treated the same as IS and DD * * @return bool */ public function isSystemSchema($schema_name, $testForMysqlSchema = false) { $schema_name = strtolower($schema_name); return $schema_name == 'information_schema' || $schema_name == 'performance_schema' || ($schema_name == 'mysql' && $testForMysqlSchema) || $schema_name == 'sys'; } /** * Return connection parameters for the database server * * @param integer $mode Connection mode on of CONNECT_USER, CONNECT_CONTROL * or CONNECT_AUXILIARY. * @param array|null $server Server information like host/port/socket/persistent * * @return array user, host and server settings array */ public function getConnectionParams($mode, $server = null) { global $cfg; $user = null; $password = null; if ($mode == DatabaseInterface::CONNECT_USER) { $user = $cfg['Server']['user']; $password = $cfg['Server']['password']; $server = $cfg['Server']; } elseif ($mode == DatabaseInterface::CONNECT_CONTROL) { $user = $cfg['Server']['controluser']; $password = $cfg['Server']['controlpass']; $server = array(); if (! empty($cfg['Server']['controlhost'])) { $server['host'] = $cfg['Server']['controlhost']; } else { $server['host'] = $cfg['Server']['host']; } // Share the settings if the host is same if ($server['host'] == $cfg['Server']['host']) { $shared = array( 'port', 'socket', 'compress', 'ssl', 'ssl_key', 'ssl_cert', 'ssl_ca', 'ssl_ca_path', 'ssl_ciphers', 'ssl_verify', ); foreach ($shared as $item) { if (isset($cfg['Server'][$item])) { $server[$item] = $cfg['Server'][$item]; } } } // Set configured port if (! empty($cfg['Server']['controlport'])) { $server['port'] = $cfg['Server']['controlport']; } // Set any configuration with control_ prefix foreach ($cfg['Server'] as $key => $val) { if (substr($key, 0, 8) === 'control_') { $server[substr($key, 8)] = $val; } } } else { if (is_null($server)) { return array(null, null, null); } if (isset($server['user'])) { $user = $server['user']; } if (isset($server['password'])) { $password = $server['password']; } } // Perform sanity checks on some variables if (empty($server['port'])) { $server['port'] = 0; } else { $server['port'] = intval($server['port']); } if (empty($server['socket'])) { $server['socket'] = null; } if (empty($server['host'])) { $server['host'] = 'localhost'; } if (!isset($server['ssl'])) { $server['ssl'] = false; } if (!isset($server['compress'])) { $server['compress'] = false; } return array($user, $password, $server); } /** * connects to the database server * * @param integer $mode Connection mode on of CONNECT_USER, CONNECT_CONTROL * or CONNECT_AUXILIARY. * @param array|null $server Server information like host/port/socket/persistent * @param integer $target How to store connection link, defaults to $mode * * @return mixed false on error or a connection object on success */ public function connect($mode, $server = null, $target = null) { list($user, $password, $server) = $this->getConnectionParams($mode, $server); if (is_null($target)) { $target = $mode; } if (is_null($user) || is_null($password)) { trigger_error( __('Missing connection parameters!'), E_USER_WARNING ); return false; } // Do not show location and backtrace for connection errors $GLOBALS['error_handler']->setHideLocation(true); $result = $this->_extension->connect( $user, $password, $server ); $GLOBALS['error_handler']->setHideLocation(false); if ($result) { $this->_links[$target] = $result; /* Run post connect for user connections */ if ($target == DatabaseInterface::CONNECT_USER) { $this->postConnect(); } return $result; } if ($mode == DatabaseInterface::CONNECT_CONTROL) { trigger_error( __( 'Connection for controluser as defined in your ' . 'configuration failed.' ), E_USER_WARNING ); return false; } elseif ($mode == DatabaseInterface::CONNECT_AUXILIARY) { // Do not go back to main login if connection failed // (currently used only in unit testing) return false; } return $result; } /** * selects given database * * @param string $dbname database name to select * @param integer $link link type * * @return boolean */ public function selectDb($dbname, $link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->selectDb($dbname, $this->_links[$link]); } /** * returns array of rows with associative and numeric keys from $result * * @param object $result result set identifier * * @return array */ public function fetchArray($result) { return $this->_extension->fetchArray($result); } /** * returns array of rows with associative keys from $result * * @param object $result result set identifier * * @return array */ public function fetchAssoc($result) { return $this->_extension->fetchAssoc($result); } /** * returns array of rows with numeric keys from $result * * @param object $result result set identifier * * @return array */ public function fetchRow($result) { return $this->_extension->fetchRow($result); } /** * Adjusts the result pointer to an arbitrary row in the result * * @param object $result database result * @param integer $offset offset to seek * * @return bool true on success, false on failure */ public function dataSeek($result, $offset) { return $this->_extension->dataSeek($result, $offset); } /** * Frees memory associated with the result * * @param object $result database result * * @return void */ public function freeResult($result) { $this->_extension->freeResult($result); } /** * Check if there are any more query results from a multi query * * @param integer $link link type * * @return bool true or false */ public function moreResults($link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->moreResults($this->_links[$link]); } /** * Prepare next result from multi_query * * @param integer $link link type * * @return bool true or false */ public function nextResult($link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->nextResult($this->_links[$link]); } /** * Store the result returned from multi query * * @param integer $link link type * * @return mixed false when empty results / result set when not empty */ public function storeResult($link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->storeResult($this->_links[$link]); } /** * Returns a string representing the type of connection used * * @param integer $link link type * * @return string type of connection used */ public function getHostInfo($link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->getHostInfo($this->_links[$link]); } /** * Returns the version of the MySQL protocol used * * @param integer $link link type * * @return integer version of the MySQL protocol used */ public function getProtoInfo($link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->getProtoInfo($this->_links[$link]); } /** * returns a string that represents the client library version * * @return string MySQL client library version */ public function getClientInfo() { return $this->_extension->getClientInfo(); } /** * returns last error message or false if no errors occurred * * @param integer $link link type * * @return string|bool $error or false */ public function getError($link = DatabaseInterface::CONNECT_USER) { if (! isset($this->_links[$link])) { return false; } return $this->_extension->getError($this->_links[$link]); } /** * returns the number of rows returned by last query * * @param object $result result set identifier * * @return string|int */ public function numRows($result) { return $this->_extension->numRows($result); } /** * returns last inserted auto_increment id for given $link * or $GLOBALS['userlink'] * * @param integer $link link type * * @return int|boolean */ public function insertId($link = DatabaseInterface::CONNECT_USER) { // If the primary key is BIGINT we get an incorrect result // (sometimes negative, sometimes positive) // and in the present function we don't know if the PK is BIGINT // so better play safe and use LAST_INSERT_ID() // // When no controluser is defined, using mysqli_insert_id($link) // does not always return the last insert id due to a mixup with // the tracking mechanism, but this works: return $this->fetchValue('SELECT LAST_INSERT_ID();', 0, 0, $link); } /** * returns the number of rows affected by last query * * @param integer $link link type * @param bool $get_from_cache whether to retrieve from cache * * @return int|boolean */ public function affectedRows($link = DatabaseInterface::CONNECT_USER, $get_from_cache = true) { if (! isset($this->_links[$link])) { return false; } if ($get_from_cache) { return $GLOBALS['cached_affected_rows']; } return $this->_extension->affectedRows($this->_links[$link]); } /** * returns metainfo for fields in $result * * @param object $result result set identifier * * @return array meta info for fields in $result */ public function getFieldsMeta($result) { $result = $this->_extension->getFieldsMeta($result); if ($this->getLowerCaseNames() === '2') { /** * Fixup orgtable for lower_case_table_names = 2 * * In this setup MySQL server reports table name lower case * but we still need to operate on original case to properly * match existing strings */ foreach ($result as $value) { if (strlen($value->orgtable) !== 0 && mb_strtolower($value->orgtable) === mb_strtolower($value->table)) { $value->orgtable = $value->table; } } } return $result; } /** * return number of fields in given $result * * @param object $result result set identifier * * @return int field count */ public function numFields($result) { return $this->_extension->numFields($result); } /** * returns the length of the given field $i in $result * * @param object $result result set identifier * @param int $i field * * @return int length of field */ public function fieldLen($result, $i) { return $this->_extension->fieldLen($result, $i); } /** * returns name of $i. field in $result * * @param object $result result set identifier * @param int $i field * * @return string name of $i. field in $result */ public function fieldName($result, $i) { return $this->_extension->fieldName($result, $i); } /** * returns concatenated string of human readable field flags * * @param object $result result set identifier * @param int $i field * * @return string field flags */ public function fieldFlags($result, $i) { return $this->_extension->fieldFlags($result, $i); } /** * returns properly escaped string for use in MySQL queries * * @param string $str string to be escaped * @param mixed $link optional database link to use * * @return string a MySQL escaped string */ public function escapeString($str, $link = DatabaseInterface::CONNECT_USER) { if ($this->_extension === null || !isset($this->_links[$link])) { return $str; } return $this->_extension->escapeString($this->_links[$link], $str); } /** * Checks if this database server is running on Amazon RDS. * * @return boolean */ public function isAmazonRds() { if (Util::cacheExists('is_amazon_rds')) { return Util::cacheGet('is_amazon_rds'); } $sql = 'SELECT @@basedir'; $result = $this->fetchValue($sql); $rds = (substr($result, 0, 10) == '/rdsdbbin/'); Util::cacheSet('is_amazon_rds', $rds); return $rds; } /** * Gets SQL for killing a process. * * @param int $process Process ID * * @return string */ public function getKillQuery($process) { if ($this->isAmazonRds()) { return 'CALL mysql.rds_kill(' . $process . ');'; } return 'KILL ' . $process . ';'; } /** * Get the phpmyadmin database manager * * @return SystemDatabase */ public function getSystemDatabase() { return new SystemDatabase($this); } /** * Get a table with database name and table name * * @param string $db_name DB name * @param string $table_name Table name * * @return Table */ public function getTable($db_name, $table_name) { return new Table($table_name, $db_name, $this); } /** * returns collation of given db * * @param string $db name of db * * @return string collation of $db */ public function getDbCollation($db) { if ($this->isSystemSchema($db)) { // We don't have to check the collation of the virtual // information_schema database: We know it! return 'utf8_general_ci'; } if (! $GLOBALS['cfg']['Server']['DisableIS']) { // this is slow with thousands of databases $sql = 'SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA' . ' WHERE SCHEMA_NAME = \'' . $this->escapeString($db) . '\' LIMIT 1'; return $this->fetchValue($sql); } $this->selectDb($db); $return = $this->fetchValue('SELECT @@collation_database'); if ($db !== $GLOBALS['db']) { $this->selectDb($GLOBALS['db']); } return $return; } /** * returns default server collation from show variables * * @return string $server_collation */ function getServerCollation() { return $this->fetchValue('SELECT @@collation_server'); } /** * Server version as number * * @return integer */ public function getVersion() { return $this->_version_int; } /** * Server version * * @return string */ public function getVersionString() { return $this->_version_str; } /** * Server version comment * * @return string */ public function getVersionComment() { return $this->_version_comment; } /** * Whether connection is MariaDB * * @return boolean */ public function isMariaDB() { return $this->_is_mariadb; } /** * Whether connection is Percona * * @return boolean */ public function isPercona() { return $this->_is_percona; } /** * Load correct database driver * * @return void */ public static function load() { if (defined('TESTSUITE')) { /** * For testsuite we use dummy driver which can fake some queries. */ $extension = new DbiDummy(); } else { /** * First check for the mysqli extension, as it's the one recommended * for the MySQL server's version that we support * (if PHP 7+, it's the only one supported) */ $extension = 'mysqli'; if (! self::checkDbExtension($extension)) { $docurl = Util::getDocuLink('faq', 'faqmysql'); $doclink = sprintf( __('See %sour documentation%s for more information.'), '[a@' . $docurl . '@documentation]', '[/a]' ); if (PHP_VERSION_ID < 70000) { $extension = 'mysql'; if (! self::checkDbExtension($extension)) { // warn about both extensions missing and exit Core::warnMissingExtension( 'mysqli', true, $doclink ); } elseif (empty($_SESSION['mysqlwarning'])) { trigger_error( __( 'You are using the mysql extension which is deprecated in ' . 'phpMyAdmin. Please consider installing the mysqli ' . 'extension.' ) . ' ' . $doclink, E_USER_WARNING ); // tell the user just once per session $_SESSION['mysqlwarning'] = true; } } else { // mysql extension is not part of PHP 7+, so warn and exit Core::warnMissingExtension( 'mysqli', true, $doclink ); } } /** * Including The DBI Plugin */ switch($extension) { case 'mysql' : $extension = new DbiMysql(); break; case 'mysqli' : $extension = new DbiMysqli(); break; } } $GLOBALS['dbi'] = new DatabaseInterface($extension); $container = Container::getDefaultContainer(); $container->set('PMA_DatabaseInterface', $GLOBALS['dbi']); $container->alias('dbi', 'PMA_DatabaseInterface'); } } db/login/libraries/advisory_rules_mysql_before80003.txt000064400000007613151502156010017175 0ustar00# phpMyAdmin Advisory rules file # # See doc in advisory_rules_generic.txt # # # Query cache # Lame: 'ON' == 0 is true, so you need to compare 'ON' == '0' rule 'Query cache disabled' query_cache_size value == 0 || query_cache_type == 'OFF' || query_cache_type == '0' The query cache is not enabled. The query cache is known to greatly improve performance if configured correctly. Enable it by setting {query_cache_size} to a 2 digit MiB value and setting {query_cache_type} to 'ON'. Note: If you are using memcached, ignore this recommendation. query_cache_size is set to 0 or query_cache_type is set to 'OFF' rule 'Query cache efficiency (%)' [Com_select + Qcache_hits > 0 && !fired('Query cache disabled')] Qcache_hits / (Com_select + Qcache_hits) * 100 value < 20 Query cache not running efficiently, it has a low hit rate. Consider increasing {query_cache_limit}. The current query cache hit rate of %s% is below 20% | round(value,1) rule 'Query Cache usage' [!fired('Query cache disabled')] 100 - Qcache_free_memory / query_cache_size * 100 value < 80 Less than 80% of the query cache is being utilized. This might be caused by {query_cache_limit} being too low. Flushing the query cache might help as well. The current ratio of free query cache memory to total query cache size is %s%. It should be above 80% | round(value,1) rule 'Query cache fragmentation' [!fired('Query cache disabled')] Qcache_free_blocks / (Qcache_total_blocks / 2) * 100 value > 20 The query cache is considerably fragmented. Severe fragmentation is likely to (further) increase Qcache_lowmem_prunes. This might be caused by many Query cache low memory prunes due to {query_cache_size} being too small. For a immediate but short lived fix you can flush the query cache (might lock the query cache for a long time). Carefully adjusting {query_cache_min_res_unit} to a lower value might help too, e.g. you can set it to the average size of your queries in the cache using this formula: (query_cache_size - qcache_free_memory) / qcache_queries_in_cache The cache is currently fragmented by %s% , with 100% fragmentation meaning that the query cache is an alternating pattern of free and used blocks. This value should be below 20%. | round(value,1) rule 'Query cache low memory prunes' [Qcache_inserts > 0 && !fired('Query cache disabled')] Qcache_lowmem_prunes / Qcache_inserts * 100 value > 0.1 Cached queries are removed due to low query cache memory from the query cache. You might want to increase {query_cache_size}, however keep in mind that the overhead of maintaining the cache is likely to increase with its size, so do this in small increments and monitor the results. The ratio of removed queries to inserted queries is %s%. The lower this value is, the better (This rules firing limit: 0.1%) | round(value,1) rule 'Query cache max size' [!fired('Query cache disabled')] query_cache_size value > 1024 * 1024 * 128 The query cache size is above 128 MiB. Big query caches may cause significant overhead that is required to maintain the cache. Depending on your environment, it might be performance increasing to reduce this value. Current query cache size: %s | ADVISOR_formatByteDown(value, 2, 2) rule 'Query cache min result size' [!fired('Query cache disabled')] query_cache_limit value == 1024*1024 The max size of the result set in the query cache is the default of 1 MiB. Changing {query_cache_limit} (usually by increasing) may increase efficiency. This variable determines the maximum size a query result may have to be inserted into the query cache. If there are many query results above 1 MiB that are well cacheable (many reads, little writes) then increasing {query_cache_limit} will increase efficiency. Whereas in the case of many query results being above 1 MiB that are not very well cacheable (often invalidated due to table updates) increasing {query_cache_limit} might reduce efficiency. query_cache_limit is set to 1 MiB db/login/libraries/mysql_relations.inc.php000064400000012166151502156010014725 0ustar00 array( 'Db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'db' => array( 'Db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'event' => array( 'db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'character_set_client' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'collation_connection' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'db_collation' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), ), 'help_category' => array( 'parent_category_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'help_category', 'foreign_field' => 'help_category_id' ), ), 'help_relation' => array( 'help_topic_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'help_topic', 'foreign_field' => 'help_topic_id' ), 'help_keyword_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'help_keyword', 'foreign_field' => 'help_keyword_id' ), ), 'help_topic' => array( 'help_category_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'help_category', 'foreign_field' => 'help_category_id' ), ), 'innodb_index_stats' => array( 'database_name' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'innodb_table_stats' => array( 'database_name' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'proc' => array( 'db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), 'character_set_client' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'CHARACTER_SETS', 'foreign_field' => 'CHARACTER_SET_NAME' ), 'collation_connection' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), 'db_collation' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'COLLATIONS', 'foreign_field' => 'COLLATION_NAME' ), ), 'proc_priv' => array( 'Db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'servers' => array( 'Db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'slow_log' => array( 'db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'tables_priv' => array( 'Db' => array( 'foreign_db' => 'information_schema', 'foreign_table' => 'SCHEMATA', 'foreign_field' => 'SCHEMA_NAME' ), ), 'time_zone_name' => array( 'Time_zone_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'time_zone', 'foreign_field' => 'Time_zone_id' ), ), 'time_zone_transition' => array( 'Time_zone_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'time_zone', 'foreign_field' => 'Time_zone_id' ), 'Transition_time' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'time_zone_leap_second', 'foreign_field' => 'Transition_time' ) ), 'time_zone_transition_type' => array( 'Time_zone_id' => array( 'foreign_db' => 'mysql', 'foreign_table' => 'time_zone', 'foreign_field' => 'Time_zone_id' ), ), ); db/login/libraries/server_common.inc.php000064400000001736151502156010014357 0ustar00isUserType('grant'); $GLOBALS['is_createuser'] = $GLOBALS['dbi']->isUserType('create'); // now, select the mysql db if ($GLOBALS['dbi']->isSuperuser()) { $GLOBALS['dbi']->selectDb('mysql'); } db/login/libraries/db_common.inc.php000064400000011256151502156010013434 0ustar00isSystemSchema($db); if ($db_is_system_schema) { $is_show_stats = false; } /** * Defines the urls to return to in case of error in a sql statement */ $err_url_0 = 'index.php' . Url::getCommon(); $err_url = PhpMyAdmin\Util::getScriptNameForOption( $GLOBALS['cfg']['DefaultTabDatabase'], 'database' ) . Url::getCommon(array('db' => $db)); /** * Ensures the database exists (else move to the "parent" script) and displays * headers */ if (! isset($is_db) || ! $is_db) { if (strlen($db) > 0) { $is_db = $GLOBALS['dbi']->selectDb($db); // This "Command out of sync" 2014 error may happen, for example // after calling a MySQL procedure; at this point we can't select // the db but it's not necessarily wrong if ($GLOBALS['dbi']->getError() && $GLOBALS['errno'] == 2014) { $is_db = true; unset($GLOBALS['errno']); } } else { $is_db = false; } // Not a valid db name -> back to the welcome page $params = array('reload' => '1'); if (isset($message)) { $params['message'] = $message; } $uri = './index.php' . Url::getCommonRaw($params); if (strlen($db) === 0 || ! $is_db) { $response = Response::getInstance(); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON( 'message', Message::error(__('No databases selected.')) ); } else { Core::sendHeaderLocation($uri); } exit; } } // end if (ensures db exists) /** * Changes database charset if requested by the user */ if (isset($_POST['submitcollation']) && isset($_POST['db_collation']) && ! empty($_POST['db_collation']) ) { list($db_charset) = explode('_', $_POST['db_collation']); $sql_query = 'ALTER DATABASE ' . PhpMyAdmin\Util::backquote($db) . ' DEFAULT' . Util::getCharsetQueryPart($_POST['db_collation']); $result = $GLOBALS['dbi']->query($sql_query); $message = Message::success(); /** * Changes tables charset if requested by the user */ if ( isset($_POST['change_all_tables_collations']) && $_POST['change_all_tables_collations'] === 'on' ) { list($tables, , , , , , , ,) = PhpMyAdmin\Util::getDbInfo($db, null); foreach($tables as $tableName => $data) { if ($GLOBALS['dbi']->getTable($db, $tableName)->isView()) { // Skip views, we can not change the collation of a view. // issue #15283 continue; } $sql_query = 'ALTER TABLE ' . PhpMyAdmin\Util::backquote($db) . '.' . PhpMyAdmin\Util::backquote($tableName) . ' DEFAULT ' . Util::getCharsetQueryPart($_POST['db_collation']); $GLOBALS['dbi']->query($sql_query); /** * Changes columns charset if requested by the user */ if ( isset($_POST['change_all_tables_columns_collations']) && $_POST['change_all_tables_columns_collations'] === 'on' ) { $operations = new Operations(); $operations->changeAllColumnsCollation($db, $tableName, $_POST['db_collation']); } } } unset($db_charset); /** * If we are in an Ajax request, let us stop the execution here. Necessary for * db charset change action on db_operations.php. If this causes a bug on * other pages, we might have to move this to a different location. */ if ($response->isAjax()) { $response->setRequestStatus($message->isSuccess()); $response->addJSON('message', $message); exit; } } elseif (isset($_POST['submitcollation']) && isset($_POST['db_collation']) && empty($_POST['db_collation']) ) { $response = Response::getInstance(); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON( 'message', Message::error(__('No collation provided.')) ); } } /** * Set parameters for links */ $url_query = Url::getCommon(array('db' => $db)); db/login/libraries/tbl_partition_definition.inc.php000064400000012604151502156010016557 0ustar00 1 && isset($_POST['partition_by']) && ($_POST['partition_by'] == 'RANGE' || $_POST['partition_by'] == 'RANGE COLUMNS' || $_POST['partition_by'] == 'LIST' || $_POST['partition_by'] == 'LIST COLUMNS'); // Values are specified only for LIST and RANGE type partitions $partitionDetails['value_enabled'] = isset($_POST['partition_by']) && ($_POST['partition_by'] == 'RANGE' || $_POST['partition_by'] == 'RANGE COLUMNS' || $_POST['partition_by'] == 'LIST' || $_POST['partition_by'] == 'LIST COLUMNS'); // Has partitions if ($partition_count > 1) { $partitions = isset($_POST['partitions']) ? $_POST['partitions'] : array(); // Remove details of the additional partitions // when number of partitions have been reduced array_splice($partitions, $partition_count); for ($i = 0; $i < $partition_count; $i++) { if (! isset($partitions[$i])) { // Newly added partition $partitions[$i] = array( 'name' => 'p' . $i, 'value_type' => '', 'value' => '', 'engine' => '', 'comment' => '', 'data_directory' => '', 'index_directory' => '', 'max_rows' => '', 'min_rows' => '', 'tablespace' => '', 'node_group' => '', ); } $partition =& $partitions[$i]; $partition['prefix'] = 'partitions[' . $i . ']'; // Changing from HASH/KEY to RANGE/LIST if (! isset($partition['value_type'])) { $partition['value_type'] = ''; $partition['value'] = ''; } if (! isset($partition['engine'])) { // When removing subpartitioning $partition['engine'] = ''; $partition['comment'] = ''; $partition['data_directory'] = ''; $partition['index_directory'] = ''; $partition['max_rows'] = ''; $partition['min_rows'] = ''; $partition['tablespace'] = ''; $partition['node_group'] = ''; } if ($subpartition_count > 1 && $partitionDetails['can_have_subpartitions'] == true ) { // Has subpartitions $partition['subpartition_count'] = $subpartition_count; if (! isset($partition['subpartitions'])) { $partition['subpartitions'] = array(); } $subpartitions =& $partition['subpartitions']; // Remove details of the additional subpartitions // when number of subpartitions have been reduced array_splice($subpartitions, $subpartition_count); for ($j = 0; $j < $subpartition_count; $j++) { if (! isset($subpartitions[$j])) { // Newly added subpartition $subpartitions[$j] = array( 'name' => $partition['name'] . '_s' . $j, 'engine' => '', 'comment' => '', 'data_directory' => '', 'index_directory' => '', 'max_rows' => '', 'min_rows' => '', 'tablespace' => '', 'node_group' => '', ); } $subpartition =& $subpartitions[$j]; $subpartition['prefix'] = 'partitions[' . $i . ']' . '[subpartitions][' . $j . ']'; } } else { // No subpartitions unset($partition['subpartitions']); unset($partition['subpartition_count']); } } $partitionDetails['partitions'] = $partitions; } } db/login/libraries/dbi/dbi_dummy.inc.php000064400000075174151502156010014217 0ustar00 'SELECT 1', 'result' => array(array('1'))), array( 'query' => 'SELECT CURRENT_USER();', 'result' => array(array('pma_test@localhost')), ), array( 'query' => "SHOW VARIABLES LIKE 'lower_case_table_names'", 'result' => array(array('lower_case_table_names', '1')), ), array( 'query' => 'SELECT 1 FROM mysql.user LIMIT 1', 'result' => array(array('1')), ), array( 'query' => "SELECT 1 FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES`" . " WHERE `PRIVILEGE_TYPE` = 'CREATE USER'" . " AND '''pma_test''@''localhost''' LIKE `GRANTEE` LIMIT 1", 'result' => array(array('1')), ), array( 'query' => "SELECT 1 FROM (SELECT `GRANTEE`, `IS_GRANTABLE`" . " FROM `INFORMATION_SCHEMA`.`COLUMN_PRIVILEGES`" . " UNION SELECT `GRANTEE`, `IS_GRANTABLE`" . " FROM `INFORMATION_SCHEMA`.`TABLE_PRIVILEGES`" . " UNION SELECT `GRANTEE`, `IS_GRANTABLE`" . " FROM `INFORMATION_SCHEMA`.`SCHEMA_PRIVILEGES`" . " UNION SELECT `GRANTEE`, `IS_GRANTABLE`" . " FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES`) t" . " WHERE `IS_GRANTABLE` = 'YES'" . " AND '''pma_test''@''localhost''' LIKE `GRANTEE` LIMIT 1", 'result' => array(array('1')), ), array( 'query' => 'SHOW MASTER LOGS', 'result' => false, ), array( 'query' => 'SHOW STORAGE ENGINES', 'result' => array( array( 'Engine' => 'dummy', 'Support' => 'YES', 'Comment' => 'dummy comment', ), array( 'Engine' => 'dummy2', 'Support' => 'NO', 'Comment' => 'dummy2 comment', ), array( 'Engine' => 'FEDERATED', 'Support' => 'NO', 'Comment' => 'Federated MySQL storage engine', ), ), ), array( 'query' => 'SHOW STATUS WHERE Variable_name' . ' LIKE \'Innodb\\_buffer\\_pool\\_%\'' . ' OR Variable_name = \'Innodb_page_size\';', 'result' => array( array('Innodb_buffer_pool_pages_data', 0), array('Innodb_buffer_pool_pages_dirty', 0), array('Innodb_buffer_pool_pages_flushed', 0), array('Innodb_buffer_pool_pages_free', 0), array('Innodb_buffer_pool_pages_misc', 0), array('Innodb_buffer_pool_pages_total', 4096), array('Innodb_buffer_pool_read_ahead_rnd', 0), array('Innodb_buffer_pool_read_ahead', 0), array('Innodb_buffer_pool_read_ahead_evicted', 0), array('Innodb_buffer_pool_read_requests', 64), array('Innodb_buffer_pool_reads', 32), array('Innodb_buffer_pool_wait_free', 0), array('Innodb_buffer_pool_write_requests', 64), array('Innodb_page_size', 16384), ), ), array( 'query' => 'SHOW ENGINE INNODB STATUS;', 'result' => false, ), array( 'query' => 'SELECT @@innodb_version;', 'result' => array( array('1.1.8'), ), ), array( 'query' => 'SELECT @@disabled_storage_engines', 'result' => array( array(''), ), ), array( 'query' => 'SHOW GLOBAL VARIABLES LIKE \'innodb_file_per_table\';', 'result' => array( array('innodb_file_per_table', 'OFF'), ), ), array( 'query' => 'SHOW GLOBAL VARIABLES LIKE \'innodb_file_format\';', 'result' => array( array('innodb_file_format', 'Antelope'), ), ), array( 'query' => 'SELECT @@collation_server', 'result' => array( array('utf8_general_ci'), ), ), array( 'query' => 'SELECT @@lc_messages;', 'result' => array(), ), array( 'query' => 'SHOW SESSION VARIABLES LIKE \'FOREIGN_KEY_CHECKS\';', 'result' => array( array('foreign_key_checks', 'ON'), ), ), array( 'query' => 'SHOW TABLES FROM `pma_test`;', 'result' => array( array('table1'), array('table2'), ), ), array( 'query' => 'SHOW TABLES FROM `pmadb`', 'result' => array( array('column_info'), ), ), array( 'query' => 'SHOW COLUMNS FROM `pma_test`.`table1`', 'columns' => array( 'Field', 'Type', 'Null', 'Key', 'Default', 'Extra', ), 'result' => array( array('i', 'int(11)', 'NO', 'PRI', 'NULL', 'auto_increment'), array('o', 'int(11)', 'NO', 'MUL', 'NULL', ''), ), ), array( 'query' => 'SHOW INDEXES FROM `pma_test`.`table1` WHERE (Non_unique = 0)', 'result' => array(), ), array( 'query' => 'SHOW COLUMNS FROM `pma_test`.`table2`', 'columns' => array( 'Field', 'Type', 'Null', 'Key', 'Default', 'Extra', ), 'result' => array( array('i', 'int(11)', 'NO', 'PRI', 'NULL', 'auto_increment'), array('o', 'int(11)', 'NO', 'MUL', 'NULL', ''), ), ), array( 'query' => 'SHOW INDEXES FROM `pma_test`.`table1`', 'result' => array(), ), array( 'query' => 'SHOW INDEXES FROM `pma_test`.`table2`', 'result' => array(), ), array( 'query' => 'SHOW COLUMNS FROM `pma`.`table1`', 'columns' => array( 'Field', 'Type', 'Null', 'Key', 'Default', 'Extra', 'Privileges', 'Comment', ), 'result' => array( array( 'i', 'int(11)', 'NO', 'PRI', 'NULL', 'auto_increment', 'select,insert,update,references', '', ), array( 'o', 'varchar(100)', 'NO', 'MUL', 'NULL', '', 'select,insert,update,references', '', ), ), ), array( 'query' => 'SELECT `CHARACTER_SET_NAME` AS `Charset`,' . ' `DESCRIPTION` AS `Description`' . ' FROM `information_schema`.`CHARACTER_SETS`', 'columns' => array( 'Charset', 'Description', ), 'result' => array( array('utf8', 'UTF-8 Unicode'), array('latin1', 'cp1252 West European'), ), ), array( 'query' => 'SELECT `CHARACTER_SET_NAME` AS `Charset`,' . ' `COLLATION_NAME` AS `Collation`, `IS_DEFAULT` AS `Default`' . ' FROM `information_schema`.`COLLATIONS`', 'columns' => array( 'Charset', 'Collation', 'Default', ), 'result' => array( array('utf8', 'utf8_general_ci','Yes'), array('utf8', 'utf8_bin', ''), array('latin1', 'latin1_swedish_ci', 'Yes'), ), ), array( 'query' => 'SELECT `TABLE_NAME` FROM `INFORMATION_SCHEMA`.`TABLES`' . ' WHERE `TABLE_SCHEMA`=\'pma_test\' AND `TABLE_TYPE` IN (\'BASE TABLE\', \'SYSTEM VERSIONED\')', 'result' => array(), ), array( 'query' => 'SELECT `column_name`, `mimetype`, `transformation`,' . ' `transformation_options`, `input_transformation`,' . ' `input_transformation_options`' . ' FROM `pmadb`.`column_info`' . ' WHERE `db_name` = \'pma_test\' AND `table_name` = \'table1\'' . ' AND ( `mimetype` != \'\' OR `transformation` != \'\'' . ' OR `transformation_options` != \'\'' . ' OR `input_transformation` != \'\'' . ' OR `input_transformation_options` != \'\')', 'columns' => array( 'column_name', 'mimetype', 'transformation', 'transformation_options', 'input_transformation', 'input_transformation_options', ), 'result' => array( array('o', 'text/plain', 'sql', '', 'regex', '/pma/i'), array('col', 't', 'o/p', '', 'i/p', ''), ), ), array( 'query' => 'SELECT TABLE_NAME FROM information_schema.VIEWS' . ' WHERE TABLE_SCHEMA = \'pma_test\' AND TABLE_NAME = \'table1\'', 'result' => array(), ), array( 'query' => 'SELECT *, `TABLE_SCHEMA` AS `Db`, `TABLE_NAME` AS `Name`,' . ' `TABLE_TYPE` AS `TABLE_TYPE`, `ENGINE` AS `Engine`,' . ' `ENGINE` AS `Type`, `VERSION` AS `Version`,' . ' `ROW_FORMAT` AS `Row_format`, `TABLE_ROWS` AS `Rows`,' . ' `AVG_ROW_LENGTH` AS `Avg_row_length`,' . ' `DATA_LENGTH` AS `Data_length`,' . ' `MAX_DATA_LENGTH` AS `Max_data_length`,' . ' `INDEX_LENGTH` AS `Index_length`, `DATA_FREE` AS `Data_free`,' . ' `AUTO_INCREMENT` AS `Auto_increment`,' . ' `CREATE_TIME` AS `Create_time`, `UPDATE_TIME` AS `Update_time`,' . ' `CHECK_TIME` AS `Check_time`, `TABLE_COLLATION` AS `Collation`,' . ' `CHECKSUM` AS `Checksum`, `CREATE_OPTIONS` AS `Create_options`,' . ' `TABLE_COMMENT` AS `Comment`' . ' FROM `information_schema`.`TABLES` t' . ' WHERE `TABLE_SCHEMA` IN (\'pma_test\')' . ' AND t.`TABLE_NAME` = \'table1\' ORDER BY Name ASC', 'columns' => array( 'TABLE_CATALOG', 'TABLE_SCHEMA', 'TABLE_NAME', 'TABLE_TYPE', 'ENGINE', 'VERSION', 'ROW_FORMAT', 'TABLE_ROWS', 'AVG_ROW_LENGTH', 'DATA_LENGTH', 'MAX_DATA_LENGTH', 'INDEX_LENGTH', 'DATA_FREE', 'AUTO_INCREMENT', 'CREATE_TIME', 'UPDATE_TIME', 'CHECK_TIME', 'TABLE_COLLATION', 'CHECKSUM', 'CREATE_OPTIONS', 'TABLE_COMMENT', 'Db', 'Name', 'TABLE_TYPE', 'Engine', 'Type', 'Version', 'Row_format', 'Rows', 'Avg_row_length', 'Data_length', 'Max_data_length', 'Index_length', 'Data_free', 'Auto_increment', 'Create_time', 'Update_time', 'Check_time', 'Collation', 'Checksum', 'Create_options', 'Comment', ), 'result' => array( array( 'def', 'smash', 'issues_issue', 'BASE TABLE', 'InnoDB', '10', 'Compact', '9136', '862', '7880704', '0', '1032192', '420478976', '155862', '2012-08-29 13:28:28', 'NULL', 'NULL', 'utf8_general_ci', 'NULL', '', '', 'smash', 'issues_issue', 'BASE TABLE', 'InnoDB', 'InnoDB', '10', 'Compact', '9136', '862', '7880704', '0', '1032192', '420478976', '155862', '2012-08-29 13:28:28', 'NULL', 'NULL', 'utf8_general_ci', 'NULL', ), ), ), array( 'query' => 'SELECT *, `TABLE_SCHEMA` AS `Db`, `TABLE_NAME` AS `Name`,' . ' `TABLE_TYPE` AS `TABLE_TYPE`, `ENGINE` AS `Engine`,' . ' `ENGINE` AS `Type`, `VERSION` AS `Version`,' . ' `ROW_FORMAT` AS `Row_format`, `TABLE_ROWS` AS `Rows`,' . ' `AVG_ROW_LENGTH` AS `Avg_row_length`,' . ' `DATA_LENGTH` AS `Data_length`,' . ' `MAX_DATA_LENGTH` AS `Max_data_length`,' . ' `INDEX_LENGTH` AS `Index_length`, `DATA_FREE` AS `Data_free`,' . ' `AUTO_INCREMENT` AS `Auto_increment`,' . ' `CREATE_TIME` AS `Create_time`, `UPDATE_TIME` AS `Update_time`,' . ' `CHECK_TIME` AS `Check_time`, `TABLE_COLLATION` AS `Collation`,' . ' `CHECKSUM` AS `Checksum`, `CREATE_OPTIONS` AS `Create_options`,' . ' `TABLE_COMMENT` AS `Comment`' . ' FROM `information_schema`.`TABLES` t' . ' WHERE `TABLE_SCHEMA` IN (\'pma_test\')' . ' AND t.`TABLE_NAME` = \'table1\' ORDER BY Name ASC', 'columns' => array( 'TABLE_CATALOG', 'TABLE_SCHEMA', 'TABLE_NAME', 'TABLE_TYPE', 'ENGINE', 'VERSION', 'ROW_FORMAT', 'TABLE_ROWS', 'AVG_ROW_LENGTH', 'DATA_LENGTH', 'MAX_DATA_LENGTH', 'INDEX_LENGTH', 'DATA_FREE', 'AUTO_INCREMENT', 'CREATE_TIME', 'UPDATE_TIME', 'CHECK_TIME', 'TABLE_COLLATION', 'CHECKSUM', 'CREATE_OPTIONS', 'TABLE_COMMENT', 'Db', 'Name', 'TABLE_TYPE', 'Engine', 'Type', 'Version', 'Row_format', 'Rows', 'Avg_row_length', 'Data_length', 'Max_data_length', 'Index_length', 'Data_free', 'Auto_increment', 'Create_time', 'Update_time', 'Check_time', 'Collation', 'Checksum', 'Create_options', 'Comment', ), 'result' => array( array( 'def', 'smash', 'issues_issue', 'BASE TABLE', 'InnoDB', '10', 'Compact', '9136', '862', '7880704', '0', '1032192', '420478976', '155862', '2012-08-29 13:28:28', 'NULL', 'NULL', 'utf8_general_ci', 'NULL', '', '', 'smash', 'issues_issue', 'BASE TABLE', 'InnoDB', 'InnoDB', '10', 'Compact', '9136', '862', '7880704', '0', '1032192', '420478976', '155862', '2012-08-29 13:28:28', 'NULL', 'NULL', 'utf8_general_ci', 'NULL', ), ), ), array( 'query' => 'SELECT COUNT(*) FROM `pma_test`.`table1`', 'result' => array(array(0)), ), array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.' . '`USER_PRIVILEGES`' . ' WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\'' . ' AND PRIVILEGE_TYPE=\'TRIGGER\'', 'result' => array(), ), array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.' . '`SCHEMA_PRIVILEGES`' . ' WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\'' . ' AND PRIVILEGE_TYPE=\'TRIGGER\' AND \'pma_test\'' . ' LIKE `TABLE_SCHEMA`', 'result' => array(), ), array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.' . '`TABLE_PRIVILEGES`' . ' WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\'' . ' AND PRIVILEGE_TYPE=\'TRIGGER\' AND \'pma_test\'' . ' LIKE `TABLE_SCHEMA` AND TABLE_NAME=\'table1\'', 'result' => array(), ), array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.' . '`USER_PRIVILEGES`' . ' WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\'' . ' AND PRIVILEGE_TYPE=\'EVENT\'', 'result' => array(), ), array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.' . '`SCHEMA_PRIVILEGES`' . ' WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\'' . ' AND PRIVILEGE_TYPE=\'EVENT\' AND \'pma_test\'' . ' LIKE `TABLE_SCHEMA`', 'result' => array(), ), array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.' . '`TABLE_PRIVILEGES`' . ' WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\'' . ' AND PRIVILEGE_TYPE=\'EVENT\'' . ' AND TABLE_SCHEMA=\'pma\\\\_test\' AND TABLE_NAME=\'table1\'', 'result' => array(), ), array( 'query' => 'RENAME TABLE `pma_test`.`table1` TO `pma_test`.`table3`;', 'result' => array(), ), array( 'query' => 'SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION,' . ' EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT, ' . 'EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, DEFINER' . ' FROM information_schema.TRIGGERS' . ' WHERE EVENT_OBJECT_SCHEMA= \'pma_test\'' . ' AND EVENT_OBJECT_TABLE = \'table1\';', 'result' => array(), ), array( 'query' => 'SHOW TABLES FROM `pma`;', 'result' => array(), ), array( 'query' => "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`." . "`SCHEMA_PRIVILEGES` WHERE GRANTEE='''pma_test''@''localhost'''" . " AND PRIVILEGE_TYPE='EVENT' AND TABLE_SCHEMA='pma'", 'result' => array(), ), array( 'query' => "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`." . "`SCHEMA_PRIVILEGES` WHERE GRANTEE='''pma_test''@''localhost'''" . " AND PRIVILEGE_TYPE='TRIGGER' AND TABLE_SCHEMA='pma'", 'result' => array(), ), array( 'query' => 'SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA' . ' WHERE SCHEMA_NAME = \'pma_test\' LIMIT 1', 'columns' => array('DEFAULT_COLLATION_NAME'), 'result' => array( array('utf8_general_ci'), ), ), array( 'query' => 'SELECT @@collation_database', 'columns' => array('@@collation_database'), 'result' => array( array('bar'), ), ), array( 'query' => "SHOW TABLES FROM `phpmyadmin`", 'result' => array(), ), array( 'query' => "SELECT tracking_active FROM `pmadb`.`tracking`" . " WHERE db_name = 'pma_test_db'" . " AND table_name = 'pma_test_table'" . " ORDER BY version DESC LIMIT 1", 'columns' => array('tracking_active'), 'result' => array( array(1), ), ), array( 'query' => "SELECT tracking_active FROM `pmadb`.`tracking`" . " WHERE db_name = 'pma_test_db'" . " AND table_name = 'pma_test_table2'" . " ORDER BY version DESC LIMIT 1", 'result' => array(), ), array( 'query' => "SHOW SLAVE STATUS", 'result' => array( array( 'Slave_IO_State' => 'running', 'Master_Host' => 'locahost', 'Master_User' => 'Master_User', 'Master_Port' => '1002', 'Connect_Retry' => 'Connect_Retry', 'Master_Log_File' => 'Master_Log_File', 'Read_Master_Log_Pos' => 'Read_Master_Log_Pos', 'Relay_Log_File' => 'Relay_Log_File', 'Relay_Log_Pos' => 'Relay_Log_Pos', 'Relay_Master_Log_File' => 'Relay_Master_Log_File', 'Slave_IO_Running' => 'NO', 'Slave_SQL_Running' => 'NO', 'Replicate_Do_DB' => 'Replicate_Do_DB', 'Replicate_Ignore_DB' => 'Replicate_Ignore_DB', 'Replicate_Do_Table' => 'Replicate_Do_Table', 'Replicate_Ignore_Table' => 'Replicate_Ignore_Table', 'Replicate_Wild_Do_Table' => 'Replicate_Wild_Do_Table', 'Replicate_Wild_Ignore_Table' => 'Replicate_Wild_Ignore_Table', 'Last_Errno' => 'Last_Errno', 'Last_Error' => 'Last_Error', 'Skip_Counter' => 'Skip_Counter', 'Exec_Master_Log_Pos' => 'Exec_Master_Log_Pos', 'Relay_Log_Space' => 'Relay_Log_Space', 'Until_Condition' => 'Until_Condition', 'Until_Log_File' => 'Until_Log_File', 'Until_Log_Pos' => 'Until_Log_Pos', 'Master_SSL_Allowed' => 'Master_SSL_Allowed', 'Master_SSL_CA_File' => 'Master_SSL_CA_File', 'Master_SSL_CA_Path' => 'Master_SSL_CA_Path', 'Master_SSL_Cert' => 'Master_SSL_Cert', 'Master_SSL_Cipher' => 'Master_SSL_Cipher', 'Master_SSL_Key' => 'Master_SSL_Key', 'Seconds_Behind_Master' => 'Seconds_Behind_Master', ), ), ), array( 'query' => "SHOW MASTER STATUS", 'result' => array( array( "File" => "master-bin.000030", "Position" => "107", "Binlog_Do_DB" => "Binlog_Do_DB", "Binlog_Ignore_DB" => "Binlog_Ignore_DB", ), ), ), array( 'query' => "SHOW GRANTS", 'result' => array(), ), array( 'query' => "SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`, " . "(SELECT DB_first_level FROM ( SELECT DISTINCT " . "SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) DB_first_level " . "FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t ORDER BY " . "DB_first_level ASC LIMIT 0, 100) t2 WHERE TRUE AND 1 = LOCATE(" . "CONCAT(DB_first_level, '_'), CONCAT(SCHEMA_NAME, '_')) " . "ORDER BY SCHEMA_NAME ASC", 'result' => array( "test", ), ), array( 'query' => "SELECT COUNT(*) FROM ( SELECT DISTINCT SUBSTRING_INDEX(" . "SCHEMA_NAME, '_', 1) DB_first_level " . "FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t", 'result' => array( array(1), ), ), array( 'query' => "SELECT `PARTITION_METHOD` " . "FROM `information_schema`.`PARTITIONS` " . "WHERE `TABLE_SCHEMA` = 'db' AND `TABLE_NAME` = 'table' LIMIT 1", 'result' => array(), ), array( 'query' => "SHOW PLUGINS", 'result' => array( array('Name' => 'partition'), ), ), array( 'query' => "SHOW FULL TABLES FROM `default` WHERE `Table_type`IN('BASE TABLE', 'SYSTEM VERSIONED')", 'result' => array( array("test1", "BASE TABLE"), array("test2", "BASE TABLE"), ), ), array( 'query' => "SHOW FULL TABLES FROM `default` " . "WHERE `Table_type`NOT IN('BASE TABLE', 'SYSTEM VERSIONED')", 'result' => array(), ), array( 'query' => "SHOW FUNCTION STATUS WHERE `Db`='default'", 'result' => array(array("Name" => "testFunction")), ), array( 'query' => "SHOW PROCEDURE STATUS WHERE `Db`='default'", 'result' => array(), ), array( 'query' => "SHOW EVENTS FROM `default`", 'result' => array(), ), array( 'query' => "FLUSH PRIVILEGES", 'result' => array(), ), array( 'query' => "SELECT * FROM `mysql`.`db` LIMIT 1", 'result' => array(), ), array( 'query' => "SELECT * FROM `mysql`.`columns_priv` LIMIT 1", 'result' => array(), ), array( 'query' => "SELECT * FROM `mysql`.`tables_priv` LIMIT 1", 'result' => array(), ), array( 'query' => "SELECT * FROM `mysql`.`procs_priv` LIMIT 1", 'result' => array(), ), array( 'query' => 'DELETE FROM `mysql`.`db` WHERE `host` = "" ' . 'AND `Db` = "" AND `User` = ""', 'result' => true ), array( 'query' => 'DELETE FROM `mysql`.`columns_priv` WHERE ' . '`host` = "" AND `Db` = "" AND `User` = ""', 'result' => true ), array( 'query' => 'DELETE FROM `mysql`.`tables_priv` WHERE ' . '`host` = "" AND `Db` = "" AND `User` = "" AND Table_name = ""', 'result' => true ), array( 'query' => 'DELETE FROM `mysql`.`procs_priv` WHERE ' . '`host` = "" AND `Db` = "" AND `User` = "" AND `Routine_name` = "" ' . 'AND `Routine_type` = ""', 'result' => true ), array( 'query' => 'SELECT `plugin` FROM `mysql`.`user` WHERE ' . '`User` = "pma_username" AND `Host` = "pma_hostname" LIMIT 1', 'result' => array() ), array( 'query' => 'SELECT @@default_authentication_plugin', 'result' => array( array('@@default_authentication_plugin' => 'mysql_native_password'), ), ), array( 'query' => "SELECT TABLE_NAME FROM information_schema.VIEWS WHERE " . "TABLE_SCHEMA = 'db' AND TABLE_NAME = 'table'", 'result' => array(), ), array( 'query' => "SELECT *, `TABLE_SCHEMA` AS `Db`, " . "`TABLE_NAME` AS `Name`, `TABLE_TYPE` AS `TABLE_TYPE`, " . "`ENGINE` AS `Engine`, `ENGINE` AS `Type`, " . "`VERSION` AS `Version`, `ROW_FORMAT` AS `Row_format`, " . "`TABLE_ROWS` AS `Rows`, `AVG_ROW_LENGTH` AS `Avg_row_length`, " . "`DATA_LENGTH` AS `Data_length`, " . "`MAX_DATA_LENGTH` AS `Max_data_length`, " . "`INDEX_LENGTH` AS `Index_length`, `DATA_FREE` AS `Data_free`, " . "`AUTO_INCREMENT` AS `Auto_increment`, " . "`CREATE_TIME` AS `Create_time`, " . "`UPDATE_TIME` AS `Update_time`, `CHECK_TIME` AS `Check_time`, " . "`TABLE_COLLATION` AS `Collation`, `CHECKSUM` AS `Checksum`, " . "`CREATE_OPTIONS` AS `Create_options`, " . "`TABLE_COMMENT` AS `Comment` " . "FROM `information_schema`.`TABLES` t " . "WHERE `TABLE_SCHEMA` IN ('db') " . "AND t.`TABLE_NAME` = 'table' ORDER BY Name ASC", 'result' => array(), ), array( 'query' => "SHOW TABLE STATUS FROM `db` WHERE `Name` LIKE 'table%'", 'result' => array(), ), array( 'query' => "SELECT @@have_partitioning;", 'result' => array(), ), array( 'query' => "SELECT @@lower_case_table_names", 'result' => array(), ), array( 'query' => "SELECT `PLUGIN_NAME`, `PLUGIN_DESCRIPTION` " . "FROM `information_schema`.`PLUGINS` " . "WHERE `PLUGIN_TYPE` = 'AUTHENTICATION';", 'result' => array(), ), array( 'query' => "SHOW TABLES FROM `db`;", 'result' => array(), ), array( 'query' => "SELECT `PRIVILEGE_TYPE` FROM " . "`INFORMATION_SCHEMA`.`SCHEMA_PRIVILEGES` " . "WHERE GRANTEE='''pma_test''@''localhost''' " . "AND PRIVILEGE_TYPE='EVENT' AND 'db' LIKE `TABLE_SCHEMA`", 'result' => array(), ), array( 'query' => "SELECT `PRIVILEGE_TYPE` FROM " . "`INFORMATION_SCHEMA`.`SCHEMA_PRIVILEGES` " . "WHERE GRANTEE='''pma_test''@''localhost''' " . "AND PRIVILEGE_TYPE='TRIGGER' AND 'db' LIKE `TABLE_SCHEMA`", 'result' => array(), ), array( 'query' => "SELECT (COUNT(DB_first_level) DIV 100) * 100 from " . "( SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) " . "DB_first_level FROM INFORMATION_SCHEMA.SCHEMATA " . "WHERE `SCHEMA_NAME` < 'db' ) t", 'result' => array(), ), array( 'query' => "SELECT `SCHEMA_NAME` FROM " . "`INFORMATION_SCHEMA`.`SCHEMATA`, " . "(SELECT DB_first_level FROM ( SELECT DISTINCT " . "SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) DB_first_level FROM " . "INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t " . "ORDER BY DB_first_level ASC LIMIT , 100) t2 WHERE TRUE AND " . "1 = LOCATE(CONCAT(DB_first_level, '_'), " . "CONCAT(SCHEMA_NAME, '_')) ORDER BY SCHEMA_NAME ASC", 'result' => array(), ), array( 'query' => 'SELECT @@ndb_version_string', 'result' => array(array('ndb-7.4.10')), ), array( 'query' => "SELECT *, `COLUMN_NAME` AS `Field`, `COLUMN_TYPE` AS `Type`, `COLLATION_NAME` AS `Collation`, `IS_NULLABLE` AS `Null`, `COLUMN_KEY` AS `Key`, `COLUMN_DEFAULT` AS `Default`, `EXTRA` AS `Extra`, `PRIVILEGES` AS `Privileges`, `COLUMN_COMMENT` AS `Comment` FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'information_schema' AND `TABLE_NAME` = 'PMA'", 'result' => array(), ), [ 'query' => "SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM information_schema.key_column_usage WHERE referenced_table_name IS NOT NULL AND TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('table1','table2') AND REFERENCED_TABLE_NAME IN ('table1','table2');", 'result' => [ [ 'TABLE_NAME' => 'table2', 'COLUMN_NAME' => 'idtable2', 'REFERENCED_TABLE_NAME' => 'table1', 'REFERENCED_COLUMN_NAME' => 'idtable1', ] ], ], ); /** * Current database. */ $GLOBALS['dummy_db'] = ''; /* Some basic setup for dummy driver */ $GLOBALS['cfg']['DBG']['sql'] = false; db/login/libraries/error.inc.php000064400000002416151502156010012626 0ustar00 phpMyAdmin

phpMyAdmin -

db/login/libraries/certs/12d55845.0000064400000002260151502156010012413 0ustar00-----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- db/login/libraries/certs/README.rst000064400000001020151502156010013011 0ustar00phpMyAdmin SSL certificates =========================== This directory contains copy of root certificates used to sign phpmyadmin.net and reports.phpmyadmin.net websites. It is used to allow operation on systems where the certificates are missing or wrongly configured (happens on Windows with wrongly compiled CURL). Currently included SSL certificates: * ISRG Root X1 * DST Root CA X3 See https://letsencrypt.org/certificates/ for more info on them. In case of update, the filenames can be generated using c_rehash tool. db/login/libraries/certs/6187b673.0000064400000003657151502156010012434 0ustar00-----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- db/login/libraries/certs/4042bcee.0000064400000003657151502156010012635 0ustar00-----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- db/login/libraries/certs/cacert.pem000064400000006137151502156010013304 0ustar00-----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- db/login/libraries/certs/2e5ac55d.0000064400000002260151502156010012627 0ustar00-----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- db/login/libraries/config.values.php000064400000025151151502156010013471 0ustar00 array( 'port' => 'integer', 'auth_type' => array('config', 'http', 'signon', 'cookie'), 'AllowDeny' => array( 'order' => array('', 'deny,allow', 'allow,deny', 'explicit') ), 'only_db' => 'array' ) ); $cfg_db['RecodingEngine'] = array('auto', 'iconv', 'recode', 'mb', 'none'); $cfg_db['OBGzip'] = array('auto', true, false); $cfg_db['MemoryLimit'] = 'short_string'; $cfg_db['NavigationLogoLinkWindow'] = array('main', 'new'); $cfg_db['NavigationTreeDefaultTabTable'] = array( 'structure' => __('Structure'), // fields list 'sql' => __('SQL'), // SQL form 'search' => __('Search'), // search page 'insert' => __('Insert'), // insert row page 'browse' => __('Browse') // browse page ); $cfg_db['NavigationTreeDefaultTabTable2'] = array( '' => '', //don't display 'structure' => __('Structure'), // fields list 'sql' => __('SQL'), // SQL form 'search' => __('Search'), // search page 'insert' => __('Insert'), // insert row page 'browse' => __('Browse') // browse page ); $cfg_db['NavigationTreeDbSeparator'] = 'short_string'; $cfg_db['NavigationTreeTableSeparator'] = 'short_string'; $cfg_db['NavigationWidth'] = 'integer'; $cfg_db['TableNavigationLinksMode'] = array( 'icons' => __('Icons'), 'text' => __('Text'), 'both' => __('Both') ); $cfg_db['MaxRows'] = array(25, 50, 100, 250, 500); $cfg_db['Order'] = array('ASC', 'DESC', 'SMART'); $cfg_db['RowActionLinks'] = array( 'none' => __('Nowhere'), 'left' => __('Left'), 'right' => __('Right'), 'both' => __('Both') ); $cfg_db['TablePrimaryKeyOrder'] = array( 'NONE' => __('None'), 'ASC' => __('Ascending'), 'DESC' => __('Descending') ); $cfg_db['ProtectBinary'] = array(false, 'blob', 'noblob', 'all'); $cfg_db['CharEditing'] = array('input', 'textarea'); $cfg_db['TabsMode'] = array( 'icons' => __('Icons'), 'text' => __('Text'), 'both' => __('Both') ); $cfg_db['PDFDefaultPageSize'] = array( 'A3' => 'A3', 'A4' => 'A4', 'A5' => 'A5', 'letter' => 'letter', 'legal' => 'legal' ); $cfg_db['ActionLinksMode'] = array( 'icons' => __('Icons'), 'text' => __('Text'), 'both' => __('Both') ); $cfg_db['GridEditing'] = array( 'click' => __('Click'), 'double-click' => __('Double click'), 'disabled' => __('Disabled'), ); $cfg_db['RelationalDisplay'] = array( 'K' => __('key'), 'D' => __('display column') ); $cfg_db['DefaultTabServer'] = array( // the welcome page (recommended for multiuser setups) 'welcome' => __('Welcome'), 'databases' => __('Databases'), // list of databases 'status' => __('Status'), // runtime information 'variables' => __('Variables'), // MySQL server variables 'privileges' => __('Privileges') // user management ); $cfg_db['DefaultTabDatabase'] = array( 'structure' => __('Structure'), // tables list 'sql' => __('SQL'), // SQL form 'search' => __('Search'), // search query 'operations' => __('Operations') // operations on database ); $cfg_db['DefaultTabTable'] = array( 'structure' => __('Structure'), // fields list 'sql' => __('SQL'), // SQL form 'search' => __('Search'), // search page 'insert' => __('Insert'), // insert row page 'browse' => __('Browse') // browse page ); $cfg_db['InitialSlidersState'] = array( 'open' => __('Open'), 'closed' => __('Closed'), 'disabled' => __('Disabled') ); $cfg_db['SendErrorReports'] = array( 'ask' => __('Ask before sending error reports'), 'always' => __('Always send error reports'), 'never' => __('Never send error reports') ); $cfg_db['DefaultForeignKeyChecks'] = array( 'default' => __('Server default'), 'enable' => __('Enable'), 'disable' => __('Disable') ); $cfg_db['Import']['format'] = array( 'csv', // CSV 'docsql', // DocSQL 'ldi', // CSV using LOAD DATA 'sql' // SQL ); $cfg_db['Import']['charset'] = array_merge( array(''), $GLOBALS['cfg']['AvailableCharsets'] ); $cfg_db['Import']['sql_compatibility'] = $cfg_db['Export']['sql_compatibility'] = array( 'NONE', 'ANSI', 'DB2', 'MAXDB', 'MYSQL323', 'MYSQL40', 'MSSQL', 'ORACLE', // removed; in MySQL 5.0.33, this produces exports that // can't be read by POSTGRESQL (see our bug #1596328) //'POSTGRESQL', 'TRADITIONAL' ); $cfg_db['Import']['csv_terminated'] = 'short_string'; $cfg_db['Import']['csv_enclosed'] = 'short_string'; $cfg_db['Import']['csv_escaped'] = 'short_string'; $cfg_db['Import']['ldi_terminated'] = 'short_string'; $cfg_db['Import']['ldi_enclosed'] = 'short_string'; $cfg_db['Import']['ldi_escaped'] = 'short_string'; $cfg_db['Import']['ldi_local_option'] = array('auto', true, false); $cfg_db['Export']['_sod_select'] = array( 'structure' => __('structure'), 'data' => __('data'), 'structure_and_data' => __('structure and data') ); $cfg_db['Export']['method'] = array( 'quick' => __('Quick - display only the minimal options to configure'), 'custom' => __('Custom - display all possible options to configure'), 'custom-no-form' => __( 'Custom - like above, but without the quick/custom choice' ), ); $cfg_db['Export']['format'] = array( 'codegen', 'csv', 'excel', 'htmlexcel','htmlword', 'latex', 'ods', 'odt', 'pdf', 'sql', 'texytext', 'xml', 'yaml' ); $cfg_db['Export']['compression'] = array('none', 'zip', 'gzip'); $cfg_db['Export']['charset'] = array_merge( array(''), $GLOBALS['cfg']['AvailableCharsets'] ); $cfg_db['Export']['codegen_format'] = array( '#', 'NHibernate C# DO', 'NHibernate XML' ); $cfg_db['Export']['csv_separator'] = 'short_string'; $cfg_db['Export']['csv_terminated'] = 'short_string'; $cfg_db['Export']['csv_enclosed'] = 'short_string'; $cfg_db['Export']['csv_escaped'] = 'short_string'; $cfg_db['Export']['csv_null'] = 'short_string'; $cfg_db['Export']['excel_null'] = 'short_string'; $cfg_db['Export']['excel_edition'] = array( 'win' => 'Windows', 'mac_excel2003' => 'Excel 2003 / Macintosh', 'mac_excel2008' => 'Excel 2008 / Macintosh' ); $cfg_db['Export']['sql_structure_or_data'] = $cfg_db['Export']['_sod_select']; $cfg_db['Export']['sql_type'] = array('INSERT', 'UPDATE', 'REPLACE'); $cfg_db['Export']['sql_insert_syntax'] = array( 'complete' => __('complete inserts'), 'extended' => __('extended inserts'), 'both' => __('both of the above'), 'none' => __('neither of the above') ); $cfg_db['Export']['htmlword_structure_or_data'] = $cfg_db['Export']['_sod_select']; $cfg_db['Export']['htmlword_null'] = 'short_string'; $cfg_db['Export']['ods_null'] = 'short_string'; $cfg_db['Export']['odt_null'] = 'short_string'; $cfg_db['Export']['odt_structure_or_data'] = $cfg_db['Export']['_sod_select']; $cfg_db['Export']['texytext_structure_or_data'] = $cfg_db['Export']['_sod_select']; $cfg_db['Export']['texytext_null'] = 'short_string'; $cfg_db['Console']['Mode'] = array( 'info', 'show', 'collapse' ); $cfg_db['Console']['OrderBy'] = ['exec', 'time', 'count']; $cfg_db['Console']['Order'] = ['asc', 'desc']; /** * Default values overrides * Use only full paths */ $cfg_db['_overrides'] = array(); /** * Basic validator assignments (functions from libraries/config/Validator.php * and 'validators' object in js/config.js) * Use only full paths and form ids */ $cfg_db['_validators'] = array( 'Console/Height' => 'validateNonNegativeNumber', 'CharTextareaCols' => 'validatePositiveNumber', 'CharTextareaRows' => 'validatePositiveNumber', 'ExecTimeLimit' => 'validateNonNegativeNumber', 'Export/sql_max_query_size' => 'validatePositiveNumber', 'FirstLevelNavigationItems' => 'validatePositiveNumber', 'ForeignKeyMaxLimit' => 'validatePositiveNumber', 'Import/csv_enclosed' => array(array('validateByRegex', '/^.?$/')), 'Import/csv_escaped' => array(array('validateByRegex', '/^.$/')), 'Import/csv_terminated' => array(array('validateByRegex', '/^.$/')), 'Import/ldi_enclosed' => array(array('validateByRegex', '/^.?$/')), 'Import/ldi_escaped' => array(array('validateByRegex', '/^.$/')), 'Import/ldi_terminated' => array(array('validateByRegex', '/^.$/')), 'Import/skip_queries' => 'validateNonNegativeNumber', 'InsertRows' => 'validatePositiveNumber', 'NumRecentTables' => 'validateNonNegativeNumber', 'NumFavoriteTables' => 'validateNonNegativeNumber', 'LimitChars' => 'validatePositiveNumber', 'LoginCookieValidity' => 'validatePositiveNumber', 'LoginCookieStore' => 'validateNonNegativeNumber', 'MaxDbList' => 'validatePositiveNumber', 'MaxNavigationItems' => 'validatePositiveNumber', 'MaxCharactersInDisplayedSQL' => 'validatePositiveNumber', 'MaxRows' => 'validatePositiveNumber', 'MaxSizeForInputField' => 'validatePositiveNumber', 'MinSizeForInputField' => 'validateNonNegativeNumber', 'MaxTableList' => 'validatePositiveNumber', 'MemoryLimit' => array(array('validateByRegex', '/^(-1|(\d+(?:[kmg])?))$/i')), 'NavigationTreeDisplayItemFilterMinimum' => 'validatePositiveNumber', 'NavigationTreeTableLevel' => 'validatePositiveNumber', 'NavigationWidth' => 'validateNonNegativeNumber', 'QueryHistoryMax' => 'validatePositiveNumber', 'RepeatCells' => 'validateNonNegativeNumber', 'Server' => 'validateServer', 'Server_pmadb' => 'validatePMAStorage', 'Servers/1/port' => 'validatePortNumber', 'Servers/1/hide_db' => 'validateRegex', 'TextareaCols' => 'validatePositiveNumber', 'TextareaRows' => 'validatePositiveNumber', 'FontSize' => array(array('validateByRegex', '/^[0-9.]+(px|em|pt|\%)$/')), 'TrustedProxies' => 'validateTrustedProxies'); /** * Additional validators used for user preferences */ $cfg_db['_userValidators'] = array( 'MaxDbList' => array( array('validateUpperBound', 'value:MaxDbList') ), 'MaxTableList' => array( array('validateUpperBound', 'value:MaxTableList') ), 'QueryHistoryMax' => array( array('validateUpperBound', 'value:QueryHistoryMax') ) ); db/login/libraries/language_stats.inc.php000064400000003075151502156010014500 0ustar00 8, 'am' => 0, 'ar' => 49, 'az' => 49, 'be' => 62, 'be@latin' => 21, 'bg' => 63, 'bn' => 68, 'br' => 16, 'brx' => 0, 'bs' => 10, 'ca' => 99, 'ckb' => 29, 'cs' => 100, 'cy' => 15, 'da' => 97, 'de' => 99, 'el' => 99, 'en_GB' => 100, 'eo' => 13, 'es' => 99, 'et' => 100, 'eu' => 14, 'fa' => 25, 'fi' => 66, 'fil' => 16, 'fr' => 100, 'fy' => 17, 'gl' => 78, 'gu' => 0, 'he' => 49, 'hi' => 35, 'hr' => 35, 'hu' => 95, 'hy' => 61, 'ia' => 75, 'id' => 80, 'ig' => 2, 'it' => 99, 'ja' => 100, 'ka' => 11, 'kab' => 2, 'kk' => 99, 'km' => 5, 'kn' => 3, 'ko' => 81, 'ksh' => 0, 'ku' => 0, 'ky' => 1, 'li' => 1, 'lt' => 40, 'lv' => 17, 'mk' => 15, 'ml' => 2, 'mn' => 18, 'ms' => 10, 'my' => 0, 'nb' => 60, 'ne' => 2, 'nl' => 100, 'nn' => 0, 'pa' => 3, 'pl' => 99, 'pt' => 100, 'pt_BR' => 100, 'ro' => 95, 'ru' => 100, 'si' => 56, 'sk' => 77, 'sl' => 100, 'sq' => 97, 'sr' => 20, 'sr@latin' => 42, 'sv' => 91, 'ta' => 33, 'te' => 8, 'th' => 40, 'tk' => 0, 'tr' => 100, 'tt' => 14, 'ug' => 9, 'uk' => 99, 'ur' => 16, 'uz' => 29, 'uz@latin' => 29, 'vi' => 83, 'vls' => 2, 'zh_CN' => 99, 'zh_TW' => 99, ); ?> db/login/libraries/rte/rte_main.inc.php000064400000003633151502156020014070 0ustar00isAjax()) { /** * Displays the header and tabs */ if (! empty($table) && in_array($table, $GLOBALS['dbi']->getTables($db))) { include_once './libraries/tbl_common.inc.php'; } else { $table = ''; include_once './libraries/db_common.inc.php'; list( $tables, $num_tables, $total_num_tables, $sub_part, $is_show_stats, $db_is_system_schema, $tooltip_truename, $tooltip_aliasname, $pos ) = PhpMyAdmin\Util::getDbInfo($db, isset($sub_part) ? $sub_part : ''); } } else { /** * Since we did not include some libraries, we need * to manually select the required database and * create the missing $url_query variable */ if (strlen($db) > 0) { $GLOBALS['dbi']->selectDb($db); if (! isset($url_query)) { $url_query = Url::getCommon( array( 'db' => $db, 'table' => $table ) ); } } } /** * Create labels for the list */ $titles = PhpMyAdmin\Util::buildActionTitles(); /** * Keep a list of errors that occurred while * processing an 'Add' or 'Edit' operation. */ $errors = array(); /** * Call the appropriate main function */ switch ($_PMA_RTE) { case 'RTN': $type = null; if (isset($_REQUEST['type'])) { $type = $_REQUEST['type']; } Routines::main($type); break; case 'TRI': Triggers::main(); break; case 'EVN': Events::main(); break; } db/login/tbl_create.php000064400000006445151502156020011064 0ustar00selectDb($db)) { Util::mysqlDie( sprintf(__('\'%s\' database does not exist.'), htmlspecialchars($db)), '', false, 'index.php' ); } if ($GLOBALS['dbi']->getColumns($db, $table)) { // table exists already Util::mysqlDie( sprintf(__('Table %s already exists!'), htmlspecialchars($table)), '', false, 'db_structure.php' . Url::getCommon(array('db' => $db)) ); } $createAddField = new CreateAddField($GLOBALS['dbi']); // for libraries/tbl_columns_definition_form.inc.php // check number of fields to be created $num_fields = $createAddField->getNumberOfFieldsFromRequest(); $action = 'tbl_create.php'; /** * The form used to define the structure of the table has been submitted */ if (isset($_POST['do_save_data'])) { // lower_case_table_names=1 `DB` becomes `db` if ($GLOBALS['dbi']->getLowerCaseNames() === '1') { $db = mb_strtolower( $db ); $table = mb_strtolower( $table ); } $sql_query = $createAddField->getTableCreationQuery($db, $table); // If there is a request for SQL previewing. if (isset($_POST['preview_sql'])) { Core::previewSQL($sql_query); } // Executes the query $result = $GLOBALS['dbi']->tryQuery($sql_query); if ($result) { // Update comment table for mime types [MIME] if (isset($_POST['field_mimetype']) && is_array($_POST['field_mimetype']) && $cfg['BrowseMIME'] ) { foreach ($_POST['field_mimetype'] as $fieldindex => $mimetype) { if (isset($_POST['field_name'][$fieldindex]) && strlen($_POST['field_name'][$fieldindex]) > 0 ) { Transformations::setMIME( $db, $table, $_POST['field_name'][$fieldindex], $mimetype, $_POST['field_transformation'][$fieldindex], $_POST['field_transformation_options'][$fieldindex], $_POST['field_input_transformation'][$fieldindex], $_POST['field_input_transformation_options'][$fieldindex] ); } } } } else { $response = Response::getInstance(); $response->setRequestStatus(false); $response->addJSON('message', $GLOBALS['dbi']->getError()); } exit; } // end do create table //This global variable needs to be reset for the headerclass to function properly $GLOBAL['table'] = ''; /** * Displays the form used to define the structure of the table */ require 'libraries/tbl_columns_definition_form.inc.php'; db/login/server_status_processes.php000064400000003527151502156020013755 0ustar00 processes list * * @package PhpMyAdmin */ use PhpMyAdmin\Response; use PhpMyAdmin\Server\Status\Data; use PhpMyAdmin\Server\Status\Processes; require_once 'libraries/common.inc.php'; require_once 'libraries/server_common.inc.php'; /** * Replication library */ require_once 'libraries/replication.inc.php'; $serverStatusData = new Data(); $response = Response::getInstance(); /** * Kills a selected process * on ajax request */ if ($response->isAjax() && !empty($_POST['kill'])) { $kill = intval($_POST['kill']); $query = $GLOBALS['dbi']->getKillQuery($kill); if ($GLOBALS['dbi']->tryQuery($query)) { $message = PhpMyAdmin\Message::success( __('Thread %s was successfully killed.') ); $response->setRequestStatus(true); } else { $message = PhpMyAdmin\Message::error( __( 'phpMyAdmin was unable to kill thread %s.' . ' It probably has already been closed.' ) ); $response->setRequestStatus(false); } $message->addParam($kill); $response->addJSON('message', $message); } elseif ($response->isAjax() && !empty($_POST['refresh'])) { // Only sends the process list table $response->addHTML(Processes::getHtmlForServerProcesslist()); } else { // Load the full page $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('server_status_processes.js'); $response->addHTML('
'); $response->addHTML($serverStatusData->getMenuHtml()); $response->addHTML(Processes::getHtmlForProcessListFilter()); $response->addHTML(Processes::getHtmlForServerProcesslist()); $response->addHTML(Processes::getHtmlForProcessListAutoRefresh()); $response->addHTML('
'); } exit; db/login/server_import.php000064400000001172151502156020011650 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('import.js'); /** * Does the common work */ require 'libraries/server_common.inc.php'; $response = Response::getInstance(); $response->addHTML( Import::get( 'server', $db, $table, $max_upload_size ) ); db/login/tbl_change.php000064400000014276151502156020011047 0ustar00determineInsertOrEdit( isset($where_clause) ? $where_clause : null, $db, $table ); // Increase number of rows if unsaved rows are more if (!empty($unsaved_values) && count($rows) < count($unsaved_values)) { $rows = array_fill(0, count($unsaved_values), false); } /** * Defines the url to return to in case of error in a sql statement * (at this point, $GLOBALS['goto'] will be set but could be empty) */ if (empty($GLOBALS['goto'])) { if (strlen($table) > 0) { // avoid a problem (see bug #2202709) $GLOBALS['goto'] = 'tbl_sql.php'; } else { $GLOBALS['goto'] = 'db_sql.php'; } } $_url_params = $insertEdit->getUrlParameters($db, $table); $err_url = $GLOBALS['goto'] . Url::getCommon($_url_params); unset($_url_params); $comments_map = $insertEdit->getCommentsMap($db, $table); /** * START REGULAR OUTPUT */ /** * Load JavaScript files */ $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('sql.js'); $scripts->addFile('tbl_change.js'); $scripts->addFile('vendor/jquery/additional-methods.js'); $scripts->addFile('gis_data_editor.js'); /** * Displays the query submitted and its result * * $disp_message come from tbl_replace.php */ if (! empty($disp_message)) { $response->addHTML(Util::getMessage($disp_message, null)); } $table_columns = $insertEdit->getTableColumns($db, $table); // retrieve keys into foreign fields, if any $relation = new Relation(); $foreigners = $relation->getForeigners($db, $table); // Retrieve form parameters for insert/edit form $_form_params = $insertEdit->getFormParametersForInsertForm( $db, $table, $where_clauses, $where_clause_array, $err_url ); /** * Displays the form */ // autocomplete feature of IE kills the "onchange" event handler and it // must be replaced by the "onpropertychange" one in this case $chg_evt_handler = 'onchange'; // Had to put the URI because when hosted on an https server, // some browsers send wrongly this form to the http server. $html_output = ''; // Set if we passed the first timestamp field $timestamp_seen = false; $columns_cnt = count($table_columns); $tabindex = 0; $tabindex_for_function = +3000; $tabindex_for_null = +6000; $tabindex_for_value = 0; $o_rows = 0; $biggest_max_file_size = 0; $url_params['db'] = $db; $url_params['table'] = $table; $url_params = $insertEdit->urlParamsInEditMode( $url_params, $where_clause_array ); $has_blob_field = false; foreach ($table_columns as $column) { if ($insertEdit->isColumn( $column, array('blob', 'tinyblob', 'mediumblob', 'longblob') )) { $has_blob_field = true; break; } } //Insert/Edit form //If table has blob fields we have to disable ajax. $html_output .= $insertEdit->getHtmlForInsertEditFormHeader($has_blob_field, $is_upload); $html_output .= Url::getHiddenInputs($_form_params); $titles['Browse'] = Util::getIcon('b_browse', __('Browse foreign values')); // user can toggle the display of Function column and column types // (currently does not work for multi-edits) if (! $cfg['ShowFunctionFields'] || ! $cfg['ShowFieldTypesInDataEditView']) { $html_output .= __('Show'); } if (! $cfg['ShowFunctionFields']) { $html_output .= $insertEdit->showTypeOrFunction('function', $url_params, false); } if (! $cfg['ShowFieldTypesInDataEditView']) { $html_output .= $insertEdit->showTypeOrFunction('type', $url_params, false); } $GLOBALS['plugin_scripts'] = array(); foreach ($rows as $row_id => $current_row) { if (empty($current_row)) { $current_row = array(); } $jsvkey = $row_id; $vkey = '[multi_edit][' . $jsvkey . ']'; $current_result = (isset($result) && is_array($result) && isset($result[$row_id]) ? $result[$row_id] : $result); $repopulate = array(); $checked = true; if (isset($unsaved_values[$row_id])) { $repopulate = $unsaved_values[$row_id]; $checked = false; } if ($insert_mode && $row_id > 0) { $html_output .= $insertEdit->getHtmlForIgnoreOption($row_id, $checked); } $html_output .= $insertEdit->getHtmlForInsertEditRow( $url_params, $table_columns, $comments_map, $timestamp_seen, $current_result, $chg_evt_handler, $jsvkey, $vkey, $insert_mode, $current_row, $o_rows, $tabindex, $columns_cnt, $is_upload, $tabindex_for_function, $foreigners, $tabindex_for_null, $tabindex_for_value, $table, $db, $row_id, $titles, $biggest_max_file_size, $text_dir, $repopulate, $where_clause_array ); } // end foreach on multi-edit $scripts->addFiles($GLOBALS['plugin_scripts']); unset($unsaved_values, $checked, $repopulate, $GLOBALS['plugin_scripts']); if (! isset($after_insert)) { $after_insert = 'back'; } //action panel $html_output .= $insertEdit->getActionsPanel( $where_clause, $after_insert, $tabindex, $tabindex_for_value, $found_unique_key ); if ($biggest_max_file_size > 0) { $html_output .= ' ' . Util::generateHiddenMaxFileSize( $biggest_max_file_size ) . "\n"; } $html_output .= ''; $html_output .= $insertEdit->getHtmlForGisEditor(); // end Insert/Edit form if ($insert_mode) { //Continue insertion form $html_output .= $insertEdit->getContinueInsertionForm( $table, $db, $where_clause_array, $err_url ); } $response->addHTML($html_output); db/login/transformation_overview.php000064400000003566151502156020013755 0ustar00getHeader(); $header->disableMenuAndConsole(); $types = Transformations::getAvailableMIMEtypes(); ?>

$mimetype) { if (isset($types['empty_mimetype'][$mimetype])) { echo '' , htmlspecialchars($mimetype) , '
'; } else { echo htmlspecialchars($mimetype) , '
'; } } $transformation_types = array( 'transformation', 'input_transformation' ); $label = array( 'transformation' => __('Available browser display transformations'), 'input_transformation' => __('Available input transformations') ); $th = array( 'transformation' => __('Browser display transformation'), 'input_transformation' => __('Input transformation') ); ?>

$transform) { $desc = Transformations::getDescription($types[$ttype . '_file'][$key]); ?>
factory( 'PhpMyAdmin\Controllers\Server\ServerVariablesController' ); $container->alias( 'ServerVariablesController', 'PhpMyAdmin\Controllers\Server\ServerVariablesController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /** @var ServerVariablesController $controller */ $controller = $container->get( 'ServerVariablesController', array() ); $controller->indexAction(); db/login/view_create.php000064400000014714151502156020011253 0ustar00addJSON( 'message', $message ); $response->setRequestStatus(false); exit; } if (isset($_POST['createview']) || isset($_POST['alterview'])) { /** * Creates the view */ $sep = "\r\n"; if (isset($_POST['createview'])) { $sql_query = 'CREATE'; if (isset($_POST['view']['or_replace'])) { $sql_query .= ' OR REPLACE'; } } else { $sql_query = 'ALTER'; } if (Core::isValid($_POST['view']['algorithm'], $view_algorithm_options)) { $sql_query .= $sep . ' ALGORITHM = ' . $_POST['view']['algorithm']; } if (! empty($_POST['view']['definer'])) { if (strpos($_POST['view']['definer'], '@') === false) { $sql_query .= $sep . 'DEFINER=' . PhpMyAdmin\Util::backquote($_POST['view']['definer']); } else { $arr = explode('@', $_POST['view']['definer']); $sql_query .= $sep . 'DEFINER=' . PhpMyAdmin\Util::backquote($arr[0]); $sql_query .= '@' . PhpMyAdmin\Util::backquote($arr[1]) . ' '; } } if (isset($_POST['view']['sql_security'])) { if (in_array($_POST['view']['sql_security'], $view_security_options)) { $sql_query .= $sep . ' SQL SECURITY ' . $_POST['view']['sql_security']; } } $sql_query .= $sep . ' VIEW ' . PhpMyAdmin\Util::backquote($_POST['view']['name']); if (! empty($_POST['view']['column_names'])) { $sql_query .= $sep . ' (' . $_POST['view']['column_names'] . ')'; } $sql_query .= $sep . ' AS ' . $_POST['view']['as']; if (isset($_POST['view']['with'])) { if (in_array($_POST['view']['with'], $view_with_options)) { $sql_query .= $sep . ' WITH ' . $_POST['view']['with'] . ' CHECK OPTION'; } } if (!$GLOBALS['dbi']->tryQuery($sql_query)) { if (! isset($_POST['ajax_dialog'])) { $message = PhpMyAdmin\Message::rawError($GLOBALS['dbi']->getError()); return; } $response->addJSON( 'message', PhpMyAdmin\Message::error( "" . htmlspecialchars($sql_query) . "

" . $GLOBALS['dbi']->getError() ) ); $response->setRequestStatus(false); exit; } // If different column names defined for VIEW $view_columns = array(); if (isset($_POST['view']['column_names'])) { $view_columns = explode(',', $_POST['view']['column_names']); } $column_map = $GLOBALS['dbi']->getColumnMapFromSql( $_POST['view']['as'], $view_columns ); $systemDb = $GLOBALS['dbi']->getSystemDatabase(); $pma_transformation_data = $systemDb->getExistingTransformationData( $GLOBALS['db'] ); if ($pma_transformation_data !== false) { // SQL for store new transformation details of VIEW $new_transformations_sql = $systemDb->getNewTransformationDataSql( $pma_transformation_data, $column_map, $_POST['view']['name'], $GLOBALS['db'] ); // Store new transformations if ($new_transformations_sql != '') { $GLOBALS['dbi']->tryQuery($new_transformations_sql); } } unset($pma_transformation_data); if (! isset($_POST['ajax_dialog'])) { $message = PhpMyAdmin\Message::success(); include 'tbl_structure.php'; } else { $response->addJSON( 'message', PhpMyAdmin\Util::getMessage( PhpMyAdmin\Message::success(), $sql_query ) ); $response->setRequestStatus(true); } exit; } $sql_query = ! empty($_POST['sql_query']) ? $_POST['sql_query'] : ''; // prefill values if not already filled from former submission $view = array( 'operation' => 'create', 'or_replace' => '', 'algorithm' => '', 'definer' => '', 'sql_security' => '', 'name' => '', 'column_names' => '', 'as' => $sql_query, 'with' => '', 'algorithm' => '', ); // Used to prefill the fields when editing a view if (isset($_GET['db']) && isset($_GET['table'])) { $item = $GLOBALS['dbi']->fetchSingleRow( sprintf( "SELECT `VIEW_DEFINITION`, `CHECK_OPTION`, `DEFINER`, `SECURITY_TYPE` FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE TABLE_SCHEMA='%s' AND TABLE_NAME='%s';", $GLOBALS['dbi']->escapeString($_GET['db']), $GLOBALS['dbi']->escapeString($_GET['table']) ) ); $createView = $GLOBALS['dbi']->getTable($_GET['db'], $_GET['table']) ->showCreate(); // CREATE ALGORITHM= DE... $parts = explode(" ", substr($createView, 17)); $item['ALGORITHM'] = $parts[0]; $view['operation'] = 'alter'; $view['definer'] = $item['DEFINER']; $view['sql_security'] = $item['SECURITY_TYPE']; $view['name'] = $_GET['table']; $view['as'] = $item['VIEW_DEFINITION']; $view['with'] = $item['CHECK_OPTION']; $view['algorithm'] = $item['ALGORITHM']; } if (Core::isValid($_POST['view'], 'array')) { $view = array_merge($view, $_POST['view']); } $url_params['db'] = $GLOBALS['db']; $url_params['reload'] = 1; echo Template::get('view_create')->render([ 'ajax_dialog' => isset($_POST['ajax_dialog']), 'text_dir' => $text_dir, 'url_params' => $url_params, 'view' => $view, 'view_algorithm_options' => $view_algorithm_options, 'view_with_options' => $view_with_options, 'view_security_options' => $view_security_options, ]); db/login/tbl_zoom_select.php000064400000002031151502156020012127 0ustar00factory('PhpMyAdmin\Controllers\Table\TableSearchController'); $container->alias( 'TableSearchController', 'PhpMyAdmin\Controllers\Table\TableSearchController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /* Define dependencies for the concerned controller */ $dependency_definitions = array( 'searchType' => 'zoom', 'url_query' => &$url_query ); /** @var PhpMyAdmin\Controllers\Table\TableSearchController $controller */ $controller = $container->get('TableSearchController', $dependency_definitions); $controller->indexAction(); db/login/themes/original/img/b_print.png000064400000000553151502156020014251 0ustar00PNG  IHDRh6tRNSn IDATxf1YKpV`p8Q(9Ep8 lo'\\s€YtI:hVYK5z%ıJ [?7Ҁyt9Á'G '}tLpA :M9m@' npƏ8AHc }+uր3ٙ "gz:Pj Wt x|R~+540h)k2q W/XIemp;wIENDB`db/login/themes/original/img/s_fulltext.png000064400000000260151502156020015000 0ustar00PNG  IHDR2 PLTEgt3d\_tRNS@fUIDATxcp^֪U&*T 1 $1N0P54t%< LȡC5>8C _ IENDB`db/login/themes/original/img/b_view.png000064400000001032151502156020014060 0ustar00PNG  IHDRh6tRNSnIDATxl3_AME}T ضٶm۶mo7.!B>=9D.]ga;<:dȽeWjW> ۔EQ;\L8{iWVFsAiȩ_xCW̛Tmƶ d]a]Tƶ*iݵ;q) 0ڼ_Kƶl=V3@|ũڸQ<~;KpwN|6r >է 0{kCRŸos1Nף!kM#Nh3mJ[ ܫ͋c۱}NۢZ>?oէ 0ؖ|7>M;on㨞r" ʯ }IENDB`db/login/themes/original/img/s_host.png000064400000000244151502156020014110 0ustar00PNG  IHDRakIDATx@{{{N+eԮ١N/iA{Wյ` !cN)uTO2`c-8n~ QIENDB`db/login/themes/original/img/s_really.png000064400000000200151502156020014413 0ustar00PNG  IHDR &qtRNSn5IDATxcP!}ѥQh*d@ 6:VIENDB`db/login/themes/original/img/b_routines.png000064400000000462151502156020014764 0ustar00PNG  IHDRaIDATxb?Q? #)'/woy@D  c7.tѩAǴ🞢M|ofyVP b'/=6;}yxWg '/]cbW'ooPRޖlnO^X+I8O^xtHfhd:Wz(\\N {;_b츞OO ܾ`ӨBwƝQ^Nߣ ҢIENDB`db/login/themes/original/img/error.ico000064400000002176151502156020013736 0ustar00 h(    db/login/themes/original/img/b_dbstatistics.png000064400000000173151502156020015613 0ustar00PNG  IHDRaBIDATxc 9| B#6?>fr](v>(AC )v>(Ar?ܾAGIENDB`db/login/themes/original/img/b_bookmark.png000064400000000315151502156020014716 0ustar00PNG  IHDRaIDATx0DՓ ))&0svkH,ffc u"6 R!y3㰌`l >C.*D/?lm AZpo_ +b 8wIVw (\ɂ&A|Z.$/ ţIENDB`db/login/themes/original/img/b_help.png000064400000000156151502156020014044 0ustar00PNG  IHDR w&5IDATxc@qb4̙0l#)0S!5#0&$ qH4IENDB`db/login/themes/original/img/centralColumns_delete.png000064400000001253151502156020017125 0ustar00PNG  IHDRarIDATxQE{ضm۶m۶m۶m۶;HuG#~ ~v08iV&Cu WkLsHT70,M2X8;vM7_HqIPH Te0{Ϣ~`@Ӫ ӽA~6P0@ 4BDpp eۡjѕԩCy`nP$!!J(QƾZlll %l62dQE 5qaX,&=*/! **jX"rׯ0 #7L[W^T"<==+Kc: 7!q,@@+%IBxF7k,^IR`TzWьJ#wCV Q I(~ruRA&8d*YZmڪ’P LV#t ^Z VA(P17efNCEX .y}X3'^tɊ]Š ld5d4jGv"FTJs@\m@R Oy4 0VCGAF72fiLm6 g5 :(BHNqDyR1xW7 Zq8IENDB`db/login/themes/original/img/s_passwd.png000064400000000513151502156020014433 0ustar00PNG  IHDR(-S{PLTEssMMViisaakaX=糵ffyQBWWa;\t} ̙\EsTn^a eK d7tRNS@f~IDATx\L0 >jȚ!_H4|4f1Ɲێmۮ'qs`30bDfm8IYـm=Vuڸṕ1ZL_SRVQE5<rIENDB`db/login/themes/original/img/north-mini.png000064400000000502151502156020014672 0ustar00PNG  IHDRVΎW IDATxd@*E() l0t!3g`0`A0 ,ɽGf}!wqhySqPeuƌiBoTݝH!9SBD L2aK5heYa2ta n:$Y N0n1[ e̓ yAi~D0|~87AР U%a[Q|a4 !SnhAI)1vhnЩVACߢ8s=|IENDB`db/login/themes/original/img/col_pointer.png000064400000000125151502156020015124 0ustar00PNG  IHDR dIDATxc` G 6!taBS#ڕkHIENDB`db/login/themes/original/img/b_save.png000064400000001107151502156020014047 0ustar00PNG  IHDRh6IDATx%5%UOqg x;,' $mO~}oUKtjLdvԵ?4:Cy,b̭%qu6  $81ʢԗ˯^x择UNeT=laDR$t _'/LAko^_`9!>u[\Fܖ8GcBmw߹M9 8 Җ9Dx6]R#H)ӻF4vC|IXI3h?^SZЖxItŠ8<:!a zSO4]@۸ܸ|w<Ox:s3PD`z1q wh(0^G?A 8}8:N IENDB`db/login/themes/original/img/b_newtbl.png000064400000000350151502156020014403 0ustar00PNG  IHDRaIDATxR1+!HR"@:fvw澰g,K4m{w 4Z #xVmm]4|$<IENDB`db/login/themes/original/img/s_lock.png000064400000001233151502156020014062 0ustar00PNG  IHDRabIDATxm5t$GEo,333d̑C幙bffif ;u#=GmtUYkoo&x4GcLMee4˴^ ڿ͛71aLXdhhz91,yĉJ)A$Iك9]~ 1s/۷֚֩KW!PJ) s 7<---Cu~ڣG"{쒚mocdN҅=v׊7ic&rC~#5֖w<3%'(#^p$f5R rxg$3;R v UYr(8I1qD75t~>{jY{l=s8"-Yq(d! `Y*0_!/\Q*d u7vΕ%PmQ+?ǵOz25P7?6Av#$0Nal=3ŦÛZ2!w$A8΂*0%_P%ZX tk`;pP/JBKIENDB`db/login/themes/original/img/b_plus.png000064400000000132151502156020014071 0ustar00PNG  IHDR oG!IDATxcHK cp9D94(1;q!񰶁=CIENDB`db/login/themes/original/img/bd_export.png000064400000000213151502156020014573 0ustar00PNG  IHDR7RIDATx1 8[PEdBYƒhML Q13IA۟lЯ^_p/i( XxdSIENDB`db/login/themes/original/img/b_chart.png000064400000000567151502156020014223 0ustar00PNG  IHDRh6tRNS7X},IDATxA 3CG@]+crIy霊tH_<4`Ko0M¤g{#%Uoq$6;],@[1k΋Ev*jWHdF?mnD nDDZ(E0hǘ@TEI4L+iz@\mS%d~W)*Uoc| >,ō`bp1XkDJIENDB`db/login/themes/original/img/s_replication.png000064400000000617151502156020015450 0ustar00PNG  IHDRaVIDATx5bPE/BݗE73g$!26m~xzruu}>|=('JЄ!m}:9Be9ڨ=5)\M'7- z2`zDaJ}8N!IS`A6xz|DʃωsG#U]FL3`022bx/E ϟܹs'O $ `ffbcc.]M-?1Ʃ{yfaPcQ#Q 5a]B0?* w#Z Ek]#0.,RJ,[ WU~ A<] Q-݊eIENDB`db/login/themes/original/img/b_relations.png000064400000000214151502156020015107 0ustar00PNG  IHDRaSIDATxc?s( \#X'DքjA'b<bJ@ . E~$7$)Ԉx0f12IENDB`db/login/themes/original/img/bd_index.png000064400000000266151502156020014371 0ustar00PNG  IHDRh6tRNSnkIDATx =kt.5izrϛùȹԱ)o_a606`%tx;hpvlX$mpA>IENDB`db/login/themes/original/img/b_export.png000064400000000232151502156020014430 0ustar00PNG  IHDRaaIDATx P Bwx`Z8MNUU_(,8,=-K9=@t@ϝ朡]FD oXXh^9x>wIENDB`db/login/themes/original/img/s_views.png000064400000000277151502156020014276 0ustar00PNG  IHDR 2ϽIDATxQSn۶s nP`ğv}vـVd>܉/ݧ{^ lXolg@̏o~[ FeJȍG:IENDB`db/login/themes/original/img/bd_primary.png000064400000000340151502156020014736 0ustar00PNG  IHDRh6tRNSnIDATxb lTBFA k]0̰0à0zWi=p 8`N}^9v`pGOi6=XOi}ƕS =5[iѠ q z `A3<2G3w1h R^s~n?lIENDB`db/login/themes/original/img/b_tbloptimize.png000064400000000231151502156020015450 0ustar00PNG  IHDRa`IDATx PC;wN0d&փ5?"x'SRP.}/"37~D} ,OP-, {IENDB`db/login/themes/original/img/b_routine_add.png000064400000000613151502156020015407 0ustar00PNG  IHDRaRIDATxRoeao"`moYfP۶_ jN|93W 䋝{?/fsVfzR(<3m4VlW&&O71yJ;PzgFO)~jT\؀>/NL6 >,--!&v:0  u\]Ţif~ f'F# >L}(2 000i$>V CKv_4=Z6yĻ@Ί[Lٮ7ϖ!^7^I`~Ϟ{A|'>Ն]bKSA'VyJw%oߕLt!ܣwW f À( Tğ@Ά qweIENDB`db/login/themes/original/img/s_sync.png000064400000000706151502156020014112 0ustar00PNG  IHDRaIDATxC^1X?\]նm6V=l۶s&|h] zG3@yPJ]@+* >֭[~oPE2ƀSRRwtkMTPr4ɵyb(mo2 -`X+vuH\lL>Xu 1KEJAx,K8e[[~XiX432qłkx_~(V^Z;jkmu.e I E0LWO,3>DGF1!k ߻wUUUoj̀OJ{?DǨ@~~~B ؙr48G%&O8*",b?9_-9Pl]rN'QWM Ȏ80Tč{Rt'R, (zN`FрP'YixZ #,Iz<Ps0vs{fJk%W %RJ\*N؏{94߀u1 }44Ne.-,jn.b*_t:f_s^c,a `)OQm0"|+48iQ5xT4O_7)|WkȯKXu HgDвܲaP);ͳφ̦3 %֧jš0 hb3\~`G2ĘcD>C7iOR(U|Mb6~SvܐAJQsIENDB`db/login/themes/original/img/show.png000064400000000407151502156020013572 0ustar00PNG  IHDR7IDATxbD@Qpʦ"轨,F%i4Anywcj w1.qw}i?Tagس 78PKp!; >pTk@O$NidԒ *u!wd -CzԽ]k-GrG1WL8\F":=A~ SqQ|$IENDB`db/login/themes/original/img/eye.png000064400000001227151502156020013375 0ustar00PNG  IHDRa^IDATxS34W۶*ۘ}Io\sunmTAsLf7%>j>Ś+!0#hI1Gm|w}/ )\K%(!+ВCwWc[{_y$$RE, B*^$q@,Ҡzi3'q]889p= KBVj_#ZClnqzŧYibV3/÷{j9?v0+{@;"t;зוeq3}:F:p C  XǞFd%䗯ض ְ, m++\xUɃZkfcj*( `Xp$cÕ{c8sn, rBZnФ@,8qC[ xm2F|b37ݭ5N۶%R8|af0kFJv_`B4G,ƄK9i׆?ɛYŎEB@p%4uS[=OmgQ:-<,Vwp 0|О3F=/}w~?u鶵2IENDB`db/login/themes/original/img/more.png000064400000000125151502156020013551 0ustar00PNG  IHDR g=IDATxc-IENDB`db/login/themes/original/img/b_select.png000064400000000523151502156020014371 0ustar00PNG  IHDRaIDATxOcVam?#۶m۶m۶mwr}=\Hf!HH^o./xC]'neHLpT\#WzpEx)}ߠ7)#1 ~n #"^g0u#ugPՎ72 ߡg+`§ʌyΜ"rv5J(W^(l܊6)3à pw!iKIxқ KsRp74/Թ+m۲SC $ 0I"]@yfΦ hIENDB`db/login/themes/original/img/s_notice.png000064400000000155151502156020014415 0ustar00PNG  IHDRa4IDATxc@8g 84e~Eig&e3 oIENDB`db/login/themes/original/img/b_column_add.png000064400000000655151502156020015225 0ustar00PNG  IHDRatIDATxb,S׀T@![I8fVmVm۶m jv;<\;sǩm¼jZ^[6( ɽ] ֺ@vh;qBuAt%6DvbtR i_` {% Ul ֺ@WdE&Xo-k߭cu{Luêό*өko,{>~6(LYO<3;c6HjB"F&"Qi J_`@Q流u5V[zĖ;cy,!<>U'D"pN%~^{PKxV=#0I L=Q\*9!,IENDB`db/login/themes/original/img/s_error.png000064400000000211151502156020014256 0ustar00PNG  IHDRaPIDATx0 O(i¶DjYfI $Xҙ܈g,` $b ~_?F=Hv2u~X9IENDB`db/login/themes/original/img/new_data.png000064400000000404151502156020014371 0ustar00PNG  IHDR(-SWPLTE#90%"vl#{)4ػ̥ę<")iU+ q5-vZD20/w,7xƄhIDATxuO1G.P-΢=|KBǶ+CCmΓWe sˇY&{gTUab]6ؖ+0f~UV$`v~{^9=''Go U-&ܟHi&ѯ>^!ܗ_#r1dnu2%<YcTȒψ̀?>U}R|X4ě5Ӻ]&$DN8Vz~#Nl#r$Osq;:W)M( 8o*k<IENDB`db/login/themes/original/img/play.png000064400000000511151502156020013553 0ustar00PNG  IHDRaIDATxS#`azWWWWfK>۶m۶m۶vG$AdoxcmzN` mH|sY:h\xGjo`_Ψk^='A{v7jAr-,:Ma>2[sK5 #vLj[xW]j\A7xJ2! A؄X#U\Ws- (XU3Q*䍇*YIfr%뿊IENDB`db/login/themes/original/img/b_no_favorite.png000064400000000517151502156020015430 0ustar00PNG  IHDRaIDATxb,TJiAƶm۶q܊uJ2NjbPH;qo7ȧz`V\Ү k|\a3 v]p&B#ϰSy%gDu I˞&tԪtXj As"ơQ@E[8pQ#xɰqh|\_!4S ' 28141JR8p &})n#K38p%  jׂe~*^׀dI!Kw><2M7IENDB`db/login/themes/original/img/arrow_rtl.png000064400000000146151502156020014625 0ustar00PNG  IHDR&N&-IDATxc?AE-#CE=5l԰$FO9Ǿ bIENDB`db/login/themes/original/img/b_inline_edit.png000064400000000424151502156020015375 0ustar00PNG  IHDRh6tRNS+zIDATxc d[2pZ ֻU k82ɷ4pPWa2َG0;d3gO C [f=K5͜yfBO.c@xu5QVLBa4`ƩaV 'P)j:UcjWƹF.K$,(Scǖ ԃ+*S!\)N d`ӈ C\IENDB`db/login/themes/original/img/s_rights.png000064400000000511151502156020014430 0ustar00PNG  IHDR(-SuPLTEssMMViisfff333aakOU糵@Fΐ9OU@F<Լ-4̻4(ff33f[ctZbsZcsW`qamwր5tRNS@fhIDATx|PCpwV$ ""Qj˙Yn¿Tu#hua0 yY^m?b[ozDmݶ fn<'%)7ܿIENDB`db/login/themes/original/img/b_close.png000064400000000231151502156020014213 0ustar00PNG  IHDR7`IDATxcP&Ϡe½ 4@i(i a pp0`/\J47rbN ;HCF  #;gIENDB`db/login/themes/original/img/b_primary.png000064400000000357151502156020014602 0ustar00PNG  IHDRaIDATx@@oIjkԶ"/D*I$ūjj3dyqxʼ mU(P]  ^@h@6!j0 DOtiQ0ŘbUIENDB`db/login/themes/original/img/b_versions.png000064400000000707151502156020014766 0ustar00PNG  IHDRaIDATxsAmk۶m۶mdM>VZto=42b0b7?v_T˟Ⱦ˨Y""r͙m h&-?Y(ZV)EAwX&OJ,i^<(g we0I>RFد hJ)HKc!|KZ,ŜB#C"'O>D@dW>".RR/0m>u'%\0IvB<K8GK>n 'B콒 (3=p~^LJ|nO|N(k*ݨ[2r I3;?FrtH8oɷraDD<: IENDB`db/login/themes/original/img/b_minus.png000064400000000126151502156020014244 0ustar00PNG  IHDR oGIDATxcHK c![}9_cIENDB`db/login/themes/original/img/b_props.png000064400000000216151502156020014254 0ustar00PNG  IHDRaUIDATxݏ OSʈha5`R@r(3WV$ˎ H1p&E+? 8 n=tIENDB`db/login/themes/original/img/centralColumns_add.png000064400000001244151502156020016413 0ustar00PNG  IHDRakIDATxp%YSXֶmۅضm6c1m'Ui5s{lG]paan S9^>wbnm|\McYOmXFiڛmr!<~/|E=k5ع9e`xﺀA R{J$NԂ+I.(։wN?PVBCChBAr|>\/,,\,-?@tdE}}`ZvST*xQ-100TWW׽F񣖖'jkk+//<@,?rߢh翕$ ..|Z="ͱDNBp# ly&b%Byv,P/z{j,H3)U)'nw}ͧmmm*Ǧ&d2Jgb,JgG+ENoa۶m۶m۶vG$AdoxcmzN` mH|sY:h\xGjo`_Ψk^='A{v7jAr-,:Ma>2[sK5 #vLj[xW]j\A7xJ2! A؄X#U\Ws- (XU3Q*䍇*YIfr%뿊IENDB`db/login/themes/original/img/logo_right.png000064400000010322151502156020014744 0ustar00PNG  IHDRePLTELiqlwlxfw ɾ&ܻlxlxlx  ڽ¤ݹelzlxkx Ʋؿqqmxlylyjylx/¦!Īlxkylxlxlxlxlxr| D%C>Q߸{Ƿ׿lxlxjylxIĭ`Loɻlxlxmxlxmylxlxmy ݹ8YE!kxlx u.lxlwrlx!a 0T4rEƳ@$Rèjvݶ|75]ݺڼ\3bKtRNS (Xϰ3NUkNH#'>,v@0`"]vv@"GDZx"rd X\X ^/~2;(P8â9/K;r,.\2}s,[0sG^"Z%52?+7SהiYK7ZBjCd$)0LG'q7>VLX:m* bCPMa 5{)w20// mS+bmQ'y)PZ#jX*IB=521œW/ _yhԩqkRعÜ|0BB:ks&|L|ԩU CjC9}vK$(ZkqjT1{>хz4URpUQy88:Bi_T(%ìݴ8Ҿ^[zm)=GU;,̘c/m +\KP9RynqEq,JSgP$9z\33$߲QTl Y AgnSB*#1(gZYp"І=E듲5hC8mu۠V #>If(,^iw>S@D'joupaVbOAfsZuaFԸ-A桁ql:50#Nj$?60R"l{fA @F=(,$M9+ؠ5 91MKWxS|ُةC:N_ug;lJP*c\`'33ի:ԿwmN5]+&W^P_vY1+Q꼞Xb$+UJ;gȲCMmU9}s#ۢ axbh칶jvl*qƶAO:4:{:E/G Q$~b,6D3.>>*!W ?~xrO6tڤ9/qKIpUH7P@~X!=p5"=٩VPe-aujE,2d(ƭ3lm@(FQPZ]u*Y"j'Z,c"c]1zeqO7am$(+#"" SEΉ1M}kItOFIf̜9ћ+=20塎s3yp]~/YNsIlB+,R Odbh;-YLd+DR-+*Z-WfZcGp?]pXol`7663#}[l]+,yv (m:)ʑjzCa%߳ݎ`*޹kn֕=m{}Aѽ>t׮sDd.+ 1Um"GqGEi)Gٖ5KcRcǎJg gϞ}YPV ƽ'l{]*s=8;#2;oF(fER[YupNOd"wD$[k"L]=/Swg}v?JFb'rK"2"6^rhüG|n0-+4EDҜţN8DpiSd] QiFC!‹)x0+( i͹A|nE !Ʋŭ҃uC}q(-*zC8!\'f7JLNK UjMz>mXW_U~w͓yKjTm1aXuPxЃ"Avw{݌¥9i:cb-_,^ń#C!,e H (4QSL rCL(*Spш:T8E*BW$0h`MlXԛ""ć@ܸcIVE+@b#r$U!:8bZX,j( D*6KN!&J&> I)@2bՌ4Vt)M4ڐ,*ddz`Q()3KȎX9:0,IENDB`db/login/themes/original/img/arrow_ltr.png000064400000000145151502156020014624 0ustar00PNG  IHDR&N&,IDATxcR?A*T4rCF1l԰QH N99ݤyIENDB`db/login/themes/original/img/south-mini.png000064400000000477151502156020014715 0ustar00PNG  IHDRVΎWIDATxc``O 717ϛdK phW#>aex dM݄*k!}6Sp|V_)}F'o<$%AGfnTM:;Y}z6 ̲ط8ol8_XnbsuC#PQ ^ݿk37]U۾Zu"Z>[r:8hJ˱أo߷J۸)~l@_?o/CC @"죓 j6x2Va-Vn58P?WH{BsU Ҭ"Ι576oFW{<-?vP?S|o̱X9K!߁x?4[< )}?+v Ŧ9RɅ2  " R^PHt;sїu1`S @Nbvp1{ O|v&YƛQ7Ϧ˳ !P}CgB74_fۿVhOr#~;n?^˅Imċ 3N ; da$OYa&_k7I>iwKҊ4)m w ;Yt7S(~Zۖ Hj;!Eø>$z2}}ՊgZq0]?(A reиa&dS/O`i_E¿i :IF#'T*t Qo[L ֳzwlﴪ"ͨ5cy8Q#PLl9!;;3~_SۅԶJױa %69_ǤZ҆bI ̴к.aX56Qr CTLЛ\v+1R<6d}8 qv-a$khfC2ʚLtwpp|shDl 8(lCrC?0F'IhϚ9f2tͪ5^3 $Wh+ qf|.$iB61O@jOdt/\К$6>/ &(XWBPO'V Pqrwq/@VШI _ooߢX*m4 8T*K"t$i&$ސȇoS 5r?Yĉ׸dlf1%)AOÕ!KGB;O{ݨzZ&vM-ƙ1aBSPiDJ/''A)KqF-?EU \#yP@H=ЊQJV}k҂e'4!w:jn:Rj9$?i %вkQ i(*3u`?bD9@K4K{sUψͤ1,Oib||hEJ?l }jM:{(ͮ}T'6*oghI+PC , J>oS OMԟN`(( []lQZnZߵEON }(wMFF, kK8vH (wjp0CkRACRZuA l"u~mN +gOhkw ʮu ʮu`IENDB`db/login/themes/original/img/b_docs.png000064400000000214151502156020014037 0ustar00PNG  IHDRaSIDATx@.p!'zQ*ιMZ%HR$AC`Q x>a. 4/:z L֌ƙ IENDB`db/login/themes/original/img/b_trigger_add.png000064400000001053151502156020015364 0ustar00PNG  IHDRaIDATxCTasq]l۶=o~6*۶:7^WGn @&tk/j^H4cܶFvuc=-^?O!h$_?{?FZV}A Otn޺"yv^ƃ8=W;̕ X,=c&N-.+ 36Ԃ&j-bL:=+]Y]jQiEWEFy q/dM PM6 d*qE 'C6݇+WidR3SW,t&Edo"X~ŵb՚e/7lZ{zL@s1Q>sEs>iT}/-k> Z :]) 4G($lH9Jwg:IENDB`db/login/themes/original/img/b_favorite.png000064400000000541151502156020014731 0ustar00PNG  IHDRa(IDATx3]QwJ Om۶mkl۶m{֜5+u)K챥89Or!}'nd\FN&mS / 3ˀħrZTE:~#%v\.{+w-뀺.A=sH hJZTt]^bh]5:t-ACb O5:h s#t9gsǩCtgt~Nfpړ bU3|;,@ @6)XÚ9A9;9C#G(N_\'Gm7$+!! ,w Ie9*, (*(B5[1 ZIah!GexzJ0e6@V|U4Dm%$͛p \Gx }@+| =+ 1- Ea5l)+!! ,y )䨞'AKڍ,E\(l&;5 5D03a0--ÃpH4V % i p[R"| #  6iZwcw*!! ,y )䨞,K*0 a;׋аY8b`4n ¨Bbbx,( Ƚ  % >  2*i* /:+$v*!! ,u )䨞l[$ Jq[q 3`Q[5:IX!0rAD8 CvHPfiiQAP@pC %D PQ46  iciNj0w )#!! ,y ). q ,G Jr(J8 C*B,&< h W~-`, ,>; 8RN<, <1T] c' qk$ @)#!;db/login/themes/original/img/b_tblanalyse.png000064400000000230151502156020015243 0ustar00PNG  IHDRa_IDATx@ &RnXBڱ./A*Q@|Z6V]TSf p@Q~219|FIENDB`db/login/themes/original/img/s_asci.png000064400000000164151502156020014053 0ustar00PNG  IHDR:;IDATxm S2Iք}a`ATTfA*z-Rzxh(IENDB`db/login/themes/original/img/bd_spatial.png000064400000000517151502156020014716 0ustar00PNG  IHDRh6IDATxnQE퍓Dㆵm昵dϳOvnuWCKFG+I뱱镕u"CO 1]g||r+m'&OHS`rr }0NO%p^]]___3_;;`濾X?9Oz(bd7}7!VS`}_adZAgh`倦ǨV\V_Tm xm Vtfyࢭ!#MIENDB`db/login/themes/original/img/b_find_replace.png000064400000000563151502156020015531 0ustar00PNG  IHDRh6tRNSLiq(IDATxc,$ i[.sWDixƧk~}“hXvj*K?pfgn8Os7f+6Om'rğ.[X`e|~[m\`/S]=WMss;f̓ӧ.Ztv&ٕ'.:YӲ~„<޺r [|hX_ٰܹ&7ofaL?KUn <8wVy:sjI)^ 0@DYexIENDB`db/login/themes/original/img/col_drop.png000064400000000157151502156020014415 0ustar00PNG  IHDR76IDATxcO^dS`&H3`UJc*@gP$=xIENDB`db/login/themes/original/img/east-mini.png000064400000000437151502156020014503 0ustar00PNG  IHDRVΎWIDATxc``O~ -π1?e! iPZI1A'/ ʛ8 =q c|Ill c&uo HA}jjsP O& xL'k|$O^`M}E/YrtddK"gZ# 6svIENDB`db/login/themes/original/img/b_event_add.png000064400000001375151502156020015051 0ustar00PNG  IHDRaIDATx\p$kS^k *mۻ-Ƕm۶m 7ƹ?zN/1˺'|'n'3W Ƃ|X''P)a!?w?;6>{V i E.Gw_2 t!6RB]t Z6$ȶ2b̷6c ֞LNlhm:}@|A"޽BR@ZoC@!,ACwr⢥ )` qu >{P)$P: EZ2ԄXvB Jl2ix1r !! P^UIG H; @JĝEEUkzMJ~IxrN)(ʃ5 nak#ZښPaZ`6( .6wDAڰ灚F+%bdds3p8mDynXCFC4$xVAua~ZMll8t:awU h`'bFچ_x} jIUacq)5 VCcFې[eŠr$ۉ3g4B/w;~TU]f"?wϡ[\" Y =Q]`X|]xwJ߾+}gXs#(`ߚs#. WܣwW f0 À( Tğ@Ά qِOpaIENDB`db/login/themes/original/img/vertical_line.png000064400000000103151502156020015423 0ustar00PNG  IHDR*kɜ IDATc@ G#xIENDB`db/login/themes/original/img/new_data_selected.png000064400000000263151502156020016244 0ustar00PNG  IHDR:zIDATu!@ ab01[W]=_~"oҴv7wO=/t;sW2+9>+؄ H,LʍɌ D/zacIENDB`db/login/themes/original/img/spacer.png000064400000000104151502156020014061 0ustar00PNG  IHDR  IDATxc``9:IENDB`db/login/themes/original/img/bd_insrow.png000064400000000243151502156020014576 0ustar00PNG  IHDR:tRNSv8\IDATxe  3U+Bj@OO~B ,Zx~ *=bf]sssUq61PWVư2w9IENDB`db/login/themes/original/img/b_tblops.png000064400000000314151502156020014413 0ustar00PNG  IHDRRPLTEtuuTSUH1tRNS@f_IDATx-˱ 0C xNS!R " \c$(L5ߎ>;Nghc<Ȟ~gQեH'fb{IENDB`db/login/themes/original/img/b_engine.png000064400000000302151502156020014352 0ustar00PNG  IHDRaIDATxb 9 2@(awjP$K*H 7,Ln7”3 ҆p$lpPa 4WQ- K>lBG ~y 䎻0IZȩV+IENDB`db/login/themes/original/img/lightbulb_off.png000064400000001144151502156020015417 0ustar00PNG  IHDRa+IDATxR3AARcwm۶m?۶m6~s2;6vmȩInk/k2{2* xc:J[z=tF|#k'|' mBҫAc`*< ͪR*[r7-ɂ>3ܙ}\Q,o.%YE[/X$iP5&%nsFQP5>0)xVĮٕ;DU#I1nHFr?)RfIp/[NTq Cщwf:=w`R8%@v9T4].Sw<>g;SBqEā$*{rE {XJ} tEi{Kb >O'OcrmIK_^n~;;pU;*4:o~/|.?mNFggs _chv/ sjp@A (>-IENDB`db/login/themes/original/img/bd_nextpage.png000064400000000136151502156020015071 0ustar00PNG  IHDR p%IDATxc g3ጙpL8c&1]]PXYA&ےIENDB`db/login/themes/original/img/b_ftext.png000064400000000205151502156020014241 0ustar00PNG  IHDRaLIDATxc HKKOF1`3p 7r/dic0v.fA/Kg . )G2DŬIENDB`db/login/themes/original/img/b_move.png000064400000000227151502156020014061 0ustar00PNG  IHDRh6tRNSet-)ScULIDATxcH-% 1af<@k  qj@ 8i6@6`r(DyL)UOCIENDB`db/login/themes/original/img/b_group.png000064400000001252151502156020014246 0ustar00PNG  IHDRaqIDATxCx$ kxm۶ۭضڈ؞ضm~q\_'q-5^T孰۝+/$b*8,eE^/'b$)+mK{s؍  /ͫuuFrJ"x|Π@d]¾S-=͙v<1IOr89A%C[{+.5F _ $C`i>W6`Ǥkeg+7Z! Cq"L}9F^A.Tj!B>ZP#}dOTUUn\-\;;g9)9.rκ@NժZl*iʃ&2X[-nnsPд*'ݹ)jRs;42V 6)HNΏ(A 6* dYOg^@DY)nsRd4I!y9MeHb!:JCiJ :tҜ7[kQ@0?aFvBH @㠴:QIENDB`db/login/themes/original/img/window-new.png000064400000000724151502156020014712 0ustar00PNG  IHDRaIDATxb *0yvlkfƔ=oa޲kŇ{_{ko߳v8PmC[a_m38ռ|u?΀kJFxm @ \u 7Y H&8DE/,BPHv ԛl1tWw)` $o03^w fDš= {~BmZFq`&f ߺIs^( K)R%Dә۶!Zt8g*O0Mi04fA[ DCCCF}J}}CB8QDKED">4fD(&!$T}Zy283-ɭGwV&Z٬Z6Bz~Iړ$WBIENDB`db/login/themes/original/img/pause.png000064400000000377151502156020013735 0ustar00PNG  IHDRh6tRNS7X}IDATxb?) iso D 0~O[Q@p @A7/mmdj#CiΏB 2Ψ:…L%y] 72:xEl#C ,ͅL3aDLAӝ,̧;۱}?}j& [IENDB`db/login/themes/original/img/b_tblimport.png000064400000000177151502156020015133 0ustar00PNG  IHDRaFIDATxc  0s8F40S3 a @֌i2 \3L]021 |bIENDB`db/login/themes/original/img/s_attention.png000064400000001067151502156020015144 0ustar00PNG  IHDRaIDATxAóm66ڈԶm۶ԶmL/[[_Xaf*~ƒ-%m*ugC'UXq%ٓ*c1>XP˳=4!EQUNp(d?Ƣt&ƃ0k\%HP+R&Y%9.l\(b=QJ~ue6INauZg0C%:KO+3tl 2$_Fd^[|gE9 #8Zhd6}yLT5%ī3a&J-@aҝ V@²ӆbxtb´$( ƀi5! ֔d6s!IENDB`db/login/themes/original/img/s_top.png000064400000000334151502156020013735 0ustar00PNG  IHDRaIDATxc,"XL {J߿ߞ={H6СC@ބ:!  *jJ;x,A:Hm y E@y"K q } $+ڵK (nUqm0H3 _ipIENDB`db/login/themes/original/img/s_desc.png000064400000000162151502156020014050 0ustar00PNG  IHDR kAztRNSn'IDATxcO@a`DiIxI#I'ٳHdIENDB`db/login/themes/original/img/bd_ftext.png000064400000000225151502156020014407 0ustar00PNG  IHDRh6tRNSnJIDATxc l& 49 lLD Hl8ah0m@ӉIQ6@D &:?IENDB`db/login/themes/original/img/hide.png000064400000000434151502156020013523 0ustar00PNG  IHDR7IDATxb :K 2H7s;+@*d!qHwt;׺QxڙgɹT,+|ݏyqIC T .eb{KPW!( N,e`Phҍrj˖TyZ7,kEK T/(,XɥL#޸:.QEg.h⌏' }5[xٔQJt4preb;eIENDB`db/login/themes/original/img/bd_select.png000064400000000466151502156020014543 0ustar00PNG  IHDRh6tRNSnIDATxb l& 49 >!a(nMvm۶mvO|t-%xd ZnoRgtԷ8zG{FdL i |Bd4s9R(%M]_4M;/2PeD':76AEB迣4KTWenY%۰a(HO|d1IENDB`db/login/themes/original/img/b_usredit.png000064400000000465151502156020014576 0ustar00PNG  IHDRaIDATxcHKKhr50ن9ivMi&݀[ `6.#_K_ՙ_W$ 3Bͣ+{?L0~Э33k8jΜj@ Ҁ.-p A׌0d L@3fL\?*TrvLͤe\d Os+S%d hzIENDB`db/login/themes/original/img/b_sqlhelp.png000064400000000215151502156020014560 0ustar00PNG  IHDRaTIDATxc@Ih̙gH =7 @l\|$a]# PLh/`%=t@+dML"@@l8,8tIENDB`db/login/themes/original/img/toggle-rtl.png000064400000000256151502156020014674 0ustar00PNG  IHDRV4PLTE}}}|~rKIDATxc-Pil1MC(0 44HTGF=2Qzd#7QF=2lI EIENDB`db/login/themes/original/img/new_struct.png000064400000000445151502156020015011 0ustar00PNG  IHDR(-SoPLTE#&%!$wݪψUb"2#֙#fqDR! 3B""+ʋqIDATxeE@Cqaz3_v\(Q@RBC m v臬ѣH>%Z qnU +W W+gˇ:BjnW?֜]IENDB`db/login/themes/original/img/s_tbl.png000064400000000143151502156020013712 0ustar00PNG  IHDRa*IDATxc<`3IT4 @q`c$pL%-1?\h5; &?bW re}Jd)&BsjH%݄. =IENDB`db/login/themes/original/img/b_sbrowse.png000064400000000130151502156020014570 0ustar00PNG  IHDR PXIDATxc f<& XV7AYJs짋IENDB`db/login/themes/original/img/zoom-world-mini.png000064400000001351151502156020015654 0ustar00PNG  IHDR٬IDATxb``FCLLffLte%3sm""Sxx mj4϶m۶ֶm۶m6kFfRRZ DD::&۷}66SR흂|:+ ]l}}uuzzk44 zEF_{gθnf˛B PNv陒Ʀ)+thi]w]m[ f彡} ȫW=R20(3OrMЂ>SQ17"ǏHMLJqb}c$TU<@3gO C [f3Q D3gY~*^PeeD+iTSìNR44tԀP=sY@]HX?;=|SDl)kIENDB`db/login/themes/original/img/s_db.png000064400000000213151502156020013514 0ustar00PNG  IHDRaRIDATxc*9BF |(O@f'505tBL6aH Pty\].f bZD%IENDB`db/login/themes/original/img/s_link.png000064400000000430151502156020014065 0ustar00PNG  IHDR7IDATxc2@;ݜ$*.T*W~ڏѥWһmO_?ǟmK|(ޟey3_Wzw.̔Kvr.~\^'@Uzo?\ۮU5!d2p%{ϐO߷2`` dnF"IENDB`db/login/themes/original/img/b_import.png000064400000000226151502156020014424 0ustar00PNG  IHDRa]IDATx1w0ǽdX9ZfIENDB`db/login/themes/original/img/s_partialtext.png000064400000000262151502156020015474 0ustar00PNG  IHDR2 PLTEgt3d\_tRNS@fWIDATxcp^֪U&*"T:00.a`p'y)P(Е &P)y@FCC5>(+#c` ?KIENDB`db/login/themes/original/img/s_unlink.png000064400000001115151502156020014431 0ustar00PNG  IHDRaIDATxkqڶm۶m۾Qmֶݿ;UTfSZ  ҶU\ፇJV78TzvUtTUu5U\W.ut/5Ƣ`ek#lG022YYYyRXt<# 6;88Ե7oIOO)--eOG9ꔞpaaᾏQ{{- @rr2^ޗ;+++{͂9sfV[E"V֗bRTT~Օvquu%ؽ24|e'GGǥ|>X,&$55Ɂ&rJJJj{{*vvv"""ǿ`WABX>rp`c4/TR{X0KY1e|Zd=\JVJGz3[7 ZОUiai5߉NCh{|xIENDB`db/login/themes/original/img/b_drop.png000064400000000245151502156020014057 0ustar00PNG  IHDRh6tRNSnZIDATxU0D':NtOVa؈@1J8ң>;}r*_׶e6Ig 6WFY|P+3iIENDB`db/login/themes/original/img/bd_drop.png000064400000000227151502156020014223 0ustar00PNG  IHDR:tRNSv8PIDATxlLGPVZXC :.;УevUrvi$!CcLqkؗz:ަ=ۈ5_IENDB`db/login/themes/original/img/s_loggoff.png000064400000000216151502156020014555 0ustar00PNG  IHDRh6tRNSnCIDATxc $!44iЀS'N0KHˆ&^"YVO@#rYٍ8SIENDB`db/login/themes/original/img/s_theme.png000064400000000750151502156020014237 0ustar00PNG  IHDR(-S PLTE̒Xhzlt0)3<ړ-ʇ j:Hd%@9~e6~*~.ry#.0Kgp~(:A;0*@WlZO%?(4.2eyc` >Ԗ5[l}l ܡ ^Zn`GM!SWbXBFADD9Wԥb ]suA@H?dnޖv pwhxӎɇv `_j)tRNS@fvIDATx}%Cy\dw bċ~i'dvtʁN) :'Z1/PS η3gr/Gr \K~K OߑId !OIENDB`db/login/themes/original/img/new_data_hovered.png000064400000000404151502156020016105 0ustar00PNG  IHDR(-SWPLTE#ŐbVNuC:a0X~LviأְTvLwj|utDk9Gl>og͘Ï|}}hIDATxuO1:9H@`L M}V\+#RrW@h<,4hI`Ht9l)iȩIHKнSUDDpLE큌$t%x* <)oo$8p (wC0Pt( ;dҞF~4{%t[T0Ӡ F+}HuIW j0}*6Ԝo Sxb.;Phj$'c) W߆ifPevVKT n(8فUxhT{Ժ-UrXN@I j۩>ENiOw oښgDLP3rY8٧.k;j{0^'aX0asbw9l; =Õw1gtgW$AtxeySG y3'RƍG!N0~zlk5n,IENDB`db/login/themes/original/img/s_okay.png000064400000001306151502156020014076 0ustar00PNG  IHDRaIDATxC1;LmԺc۶m۶m6j"s|f݅J [e[6_@Xz aR#eRRvQ Z:FD8taO.'P**޴aЀ#*"~*}vYaM=wP+:S9nVq"1}s >ЫA*P6#A,AYISbYSiaXN;Xpo,D9_`VTćyڠr*$uQCu),RÊW0ibz<;ܑXDtPvĈe3gv.q` s7g@oq|4DgЬ}?IENDB`db/login/themes/original/img/b_plugin.png000064400000001000151502156020014377 0ustar00PNG  IHDRaIDATxR3^aŶmWf.f7q.n6MltضfvsjfuA.jid.˚0O>ոW"fC7}?OO#8Xws Ak7F|}+ Ibפ}jp z7saY2;пU&rpIEՏg dY90sh $SP5AJ-=$HYU|l/nw>ހ`. rE:G7Ù+q|*> X 'Zbŧg9)4-l2'&0:~}<⟤|"AdЦoп2Eb}d Ɖg j a`!x1^}x Ih٤%U`¨0`Pg1[{v{WCD*x[V m"fIENDB`db/login/themes/original/img/west-mini.png000064400000000454151502156020014530 0ustar00PNG  IHDRVΎWIDATxc?f` O?a?IQ ' A20%ZN\?'!qgϾ 3T6%%AuL!҉ڜ۷߃' aO?ϟ|X aCB6G?G|l RZz%K ʳŒʹ/F(/ߙs1SIENDB`db/login/themes/original/img/b_usradd.png000064400000000504151502156020014373 0ustar00PNG  IHDRa IDATxc 83?HCP6B@tq}n6p yB\GsZZ) 51f_le@180:o` 1 ~hz0Low(Y Qx`/u[h\.qʞ'3`Lu3j@6&  !B&A,N.T?*xBrf:<$Q9IENDB`db/login/themes/original/img/b_events.png000064400000001277151502156020014425 0ustar00PNG  IHDRaIDATxSaVc"nP=:mg۶?ָ{竍$j7K\dPd *ՔbENz?ɿ_/Jeuk ѡA$|^xOr@׬+c׃6"35J &a7.&PP̵6# ہr2axw|L>l8dXz <@sD=0{a3H$oaLr"LG@gW;sCFwqbBiB}c | Y\8kAzJe3jPXqVD0EJd2x"; %f\ڨb:#4xN ' Ce5I?tz5g=s2f4uR3FOGg+ XϜ?bm}c0 ts5?6 ?L#%S*4I?Nr?a?yIENDB`db/login/themes/original/img/b_usrcheck.png000064400000000357151502156020014726 0ustar00PNG  IHDR(-SEPLTEfffٓ;Ֆ>ΐ9OU3@F<Լ-4*̻4(ff33ftRNS@fXIDATxmȃAEѷwg.k۷{_.܄Ex4u>X lr.ùň)b~u-) z<z-^IENDB`db/login/themes/original/img/b_saveimage.png000064400000001243151502156020015053 0ustar00PNG  IHDRajIDATx};z/}큠|f" AE oM,tvrw $DfGIENDB`db/login/themes/original/img/new_struct_hovered.png000064400000000445151502156020016525 0ustar00PNG  IHDR(-SoPLTE#mwPW?CEJ\dbkֿgqƥͭV]Y\JPβLPnxtru~yei愑aj腓8qIDATxeE@Cqaz3_v\(Q@RBC m v臬ѣH>%Z qnU +W W+gˇ:BjnW?֜]IENDB`db/login/themes/original/img/s_reload.png000064400000000351151502156020014400 0ustar00PNG  IHDR7IDATxbO@@ QT!Va1b=bj@T6h8ACr^bg?O|m $¹T>LyWPT6dQ!.񊇜# "0+K'nO0$lsEKf'zU3]q+(H* t<m!5p#!@<$ `IENDB`db/login/themes/original/img/b_usrlist.png000064400000000366151502156020014624 0ustar00PNG  IHDR(-S?PLTEfff333OU@F-4ff4<Լ*(33f8BtRNS@feIDATxbe !ł΅W~BҔԜ2=\Ȉ+ݦBΰE!~Q\J8"x pq #?`2d*%`.IENDB`db/login/themes/original/img/bd_unique.png000064400000000225151502156020014563 0ustar00PNG  IHDRh6tRNSnJIDATxc l& 49 lLD lL"b C"` Hb ؒIENDB`db/login/themes/original/img/b_more.png000064400000000157151502156020014057 0ustar00PNG  IHDR76IDATxcO^dS`&H3`UJc*@gP$=xIENDB`db/login/themes/original/img/b_unique.png000064400000000206151502156020014416 0ustar00PNG  IHDRaMIDATxc HKKOF1`3p 7r/ n Wp>cqaF 1.jR"`)ZfIENDB`db/login/themes/original/img/normalize.png000064400000000777151502156020014624 0ustar00PNG  IHDRaIDATxb,$5zT/ MFr@ax=u> 06]jږ=(Wyć{E3F \TJ Dq`0ӝ XU2՝ c`\06lsf;)S -Nw]yn ao.3Щ긹C#u/W?ƠqSB_JnW6u/!Zlt:EWB>) ^I4 eq}ݥtI^CݬK\.rj(yBO@ř Őd00R=).u❿eʁ@H9S e=F K,JLppOE9`! LByW(B *H>p8C"X-6*0̀py߲ |IENDB`db/login/themes/original/img/eye_grey.png000064400000000437151502156020014425 0ustar00PNG  IHDR:tRNS@OIDATxbt`@XʞĈ ض9@;NV9Gm[UYV=(ZPan,?,~MBj?ͿG}Y TZĿ e{^}Ia)60_3 iF8oҳ$[ˈٚ6T;rI?V،C1˦n$yș0OBnL۸IENDB`db/login/themes/original/img/b_tipp.png000064400000000243151502156020014065 0ustar00PNG  IHDRajIDATxP;;lcV3_nYUFf>d0a<.A`.06-?##<_"HݒI?]{!UIENDB`db/login/themes/original/img/zoom-plus-mini.png000064400000000500151502156020015503 0ustar00PNG  IHDRVΎWIDATx@%F(H`]]؅0wmt.^XI囧/A}4*rf?￾?0>1 $P3+!pE&ž?h" qe@II6y=ä0CE |dm 9)&M:GP2L0,,pUp~|JdBp[v0 J ^/*[QUzd0(=(}`sI)W DEW5IENDB`db/login/themes/original/img/bd_edit.png000064400000000260151502156020014201 0ustar00PNG  IHDR:tRNS["iIDATxcP=Q"8# _ћoh{$Oοwb"P a=sͅZ# |@&!P#Jk3‘ Xb]ث7x!IENDB`db/login/themes/original/layout.inc.php000064400000004243151502156020014130 0ustar00 /******************************************************************************/ /* Navigation */ #pma_navigation { background: ; color: ; width: px; overflow: hidden; position: fixed; top: 0; : 0; height: 100vh; border-: 1px solid gray; z-index: 800; } #pma_navigation_content { width: 100%; height: 100%; position: absolute; top: 0; : 0; z-index: 0; padding-bottom: 1em; } #pma_navigation ul { margin: 0; } #pma_navigation form { margin: 0; padding: 0; display: inline; } #pma_navigation select#select_server, #pma_navigation select#lightm_db { width: 100%; } /******************************************************************************/ /* specific elements */ #pma_navigation div.pageselector { text-align: center; margin: 0 0 0; margin-: 0.75em; border-: 1px solid #666; } #pma_navigation div#pmalogo { background-color: ; padding: .3em; } #pma_navigation div#recentTableList, #pma_navigation div#FavoriteTableList { text-align: center; margin-bottom: 0.5em; } #pma_navigation #recentTable, #pma_navigation #FavoriteTable { width: 200px; } #pma_navigation #pmalogo, #pma_navigation #serverChoice, #pma_navigation #navipanellinks, #pma_navigation #recentTableList, #pma_navigation #FavoriteTableList, #pma_navigation #databaseList, #pma_navigation div.pageselector.dbselector { text-align: center; margin-bottom: 0.3em; padding-bottom: 0.3em; border: 0; } #pma_navigation #recentTableList select, #pma_navigation #FavoriteTableList select, #pma_navigation #serverChoice select { width: 80%; } #pma_navigation #recentTableList, #pma_navigation #FavoriteTableList { margin-bottom: 0; padding-bottom: 0; } #pma_navigation_content > img.throbber { display: block; margin: 0 auto; } /* Navigation tree*/ #pma_navigation_tree { margin: 0; margin-: 1em; color: #444; height: 74%; position: relative; } #pma_navigation_select_database { text-align: left; padding: 0 0 0; border: 0; margin: 0; } #pma_navigation_db_select { margin-top: 0.5em; margin-: 0.75em; } #pma_navigation_db_select select { background: url("./themes/pmahomme/img/select_bg.png") repeat scroll 0 0; -webkit-border-radius: 2px; border-radius: 2px; border: 1px solid #bbb; border-top: 1px solid #bbb; color: #333; padding: 4px 6px; margin: 0 0 0; width: 92%; font-size: 1.11em; } #pma_navigation_tree_content { width: 100%; overflow: hidden; overflow-y: auto; position: absolute; height: 100%; } #pma_navigation_tree_content a.hover_show_full { position: relative; z-index: 100; vertical-align: sub; } #pma_navigation_tree a { color: ; } #pma_navigation_tree a:hover { text-decoration: underline; } #pma_navigation_tree li.activePointer { color: ; background-color: ; } #pma_navigation_tree li.selected { color: ; background-color: ; } #pma_navigation_tree li .dbItemControls { padding-left: 4px; } #pma_navigation_tree li .navItemControls { display: none; padding-left: 4px; } #pma_navigation_tree li.activePointer .navItemControls { display: inline; opacity: 0.5; } #pma_navigation_tree li.activePointer .navItemControls:hover { display: inline; opacity: 1.0; } #pma_navigation_tree ul { clear: both; padding: 0; list-style-type: none; margin: 0; } #pma_navigation_tree ul ul { position: relative; } #pma_navigation_tree li { white-space: nowrap; clear: both; min-height: 16px; } #pma_navigation_tree img { margin: 0; } #pma_navigation_tree i { display: block; } #pma_navigation_tree div.block { position: relative; width:1.5em; height:1.5em; min-width: 16px; min-height: 16px; float: ; } #pma_navigation_tree div.block.double { width: 3em; } #pma_navigation_tree div.block i, #pma_navigation_tree div.block b { width: 1.5em; height: 1.7em; min-width: 16px; min-height: 8px; position: absolute; bottom: 0.7em; : 0.75em; z-index: 0; } #pma_navigation_tree div.block i { border-: 1px solid #666; border-bottom: 1px solid #666; position: relative; z-index: 0; } #pma_navigation_tree div.block i.first { /* Removes top segment */ border-: 0; } /* Bottom segment for the tree element connections */ #pma_navigation_tree div.block b { display: block; height: 0.75em; bottom: 0; : 0.75em; border-: 1px solid #666; } #pma_navigation_tree div.block a, #pma_navigation_tree div.block u { position: absolute; : 50%; top: 50%; z-index: 10; }#pma_navigation_tree div.block a + a { : 100%; } #pma_navigation_tree div.block.double a, #pma_navigation_tree div.block.double u { : 25%; } #pma_navigation_tree div.block.double a + a { : 70%; } #pma_navigation_tree div.block img { position: relative; top: -0.6em; : 0; margin-: -5px; } #pma_navigation_tree li.last > ul { background: none; } #pma_navigation_tree li > a, #pma_navigation_tree li > i { line-height: 1.5em; height: 1.5em; padding-: 0.3em; } #pma_navigation_tree .list_container { border-: 1px solid #666; margin-: 0.75em; padding-: 0.75em; } #pma_navigation_tree .last > .list_container { border-: 0 solid #666; } /* Fast filter */ li.fast_filter { padding-: 0.75em; margin-: 0.75em; padding-: 35px; border-: 1px solid #666; } li.fast_filter input { padding-: 1.7em; width: 100%; } li.fast_filter span { position: relative; : 1.5em; padding: 0.2em; cursor: pointer; font-weight: bold; color: #800; } /* IE10+ has its own reset X */ html.ie li.fast_filter span { display: none; } html.ie.ie9 li.fast_filter span, html.ie.ie8 li.fast_filter span { display: auto; } html.ie li.fast_filter input { padding-: .2em; } html.ie.ie9 li.fast_filter input, html.ie.ie8 li.fast_filter input { padding-: 1.7em; } li.fast_filter.db_fast_filter { border: 0; } /* Resize handler */ #pma_navigation_resizer { width: 3px; height: 100%; background-color: #aaa; cursor: col-resize; position: fixed; top: 0; : 240px; z-index: 801; } #pma_navigation_collapser { width: 20px; height: 22px; line-height: 22px; background: #eee; color: #555; font-weight: bold; position: fixed; top: 0; : px; text-align: center; cursor: pointer; z-index: 800; text-shadow: 0 1px 0 #fff; filter: dropshadow(color=#fff, offx=0, offy=1); border: 1px solid #888; } #navigation_controls_outer { min-height: 21px !important; } #navigation_controls_outer.activePointer { background-color: transparent !important; } #navigation_controls { float: right; padding-right: 23px; } /* Quick warp links */ .pma_quick_warp { margin-top: 5px; margin-: 2px; position: relative; } .pma_quick_warp .drop_list { float: ; margin-: 3px; padding: 2px 0; } .pma_quick_warp .drop_button{ padding: 0 .3em; border: 1px solid #ddd; background: #f2f2f2; cursor: pointer; } .pma_quick_warp .drop_list:hover .drop_button { background: #fff; } .pma_quick_warp .drop_list ul { position: absolute; margin: 0; padding: 0; overflow: hidden; overflow-y: auto; list-style: none; background: #fff; border: 1px solid #ddd; border-top--radius: 0; border-bottom--radius: 0; top: 100%; : 3px; : 0; display: none; z-index: 802; } .pma_quick_warp .drop_list:hover ul { display: block; } .pma_quick_warp .drop_list li { white-space: nowrap; } .pma_quick_warp .drop_list li img { vertical-align: sub; } .pma_quick_warp .drop_list li:hover { background: #f2f2f2; } .pma_quick_warp .drop_list a { display: block; padding: .1em .3em; } .pma_quick_warp .drop_list a.favorite_table_anchor { clear: left; float: left; padding: .1em .3em 0; } db/login/themes/original/css/common.css.php000064400000204430151502156020014712 0ustar00 /******************************************************************************/ /* general tags */ html { font-size: getFontSize(); ?> } input, select, textarea { font-size: 1em; } body { font-family: ; padding: 0; margin: 0; margin-: 240px; color: ; background: ; } body#loginform { margin: 0; } #page_content { margin: 0 .5em; } .desktop50 { width: 50%; } .all100 { width: 100%; } .all85{ width: 85%; } .auth_config_tbl{ margin: 0 auto; } textarea, tt, pre, code { font-family: ; } h1 { font-size: 140%; font-weight: bold; } h2 { font-size: 120%; font-weight: bold; } h3 { font-weight: bold; } a, a:link, a:visited, a:active, button.mult_submit, .checkall_box+label { text-decoration: none; color: #0000FF; cursor: pointer; } a:hover, button.mult_submit:hover, button.mult_submit:focus, .checkall_box+label:hover { text-decoration: underline; color: #FF0000; } dfn { font-style: normal; } dfn:hover { font-style: normal; cursor: help; } th { font-weight: bold; color: ; background: ; } a img { border: 0; } hr { color: ; background-color: ; border: 0; height: 1px; } form { padding: 0; margin: 0; display: inline; } textarea { overflow: visible; } fieldset { margin-top: 1em; border: solid 1px; padding: 0.5em; background: ; } fieldset fieldset { margin: 0.8em; } fieldset legend { font-weight: bold; color: #444444; background-color: ; } .some-margin { margin: .5em; margin-top: 1em; } /* buttons in some browsers (eg. Konqueror) are block elements, this breaks design */ button { display: inline; } table caption, table th, table td { padding: 0.1em 0.5em 0.1em 0.5em; margin: 0.1em; vertical-align: top; } img, input, select, button { vertical-align: middle; } /******************************************************************************/ /* classes */ .clearfloat { clear: both; } .floatleft { float: ; margin-: 1em; } .floatright { float: ; } table.nospacing { border-spacing: 0; } table.nopadding tr th, table.nopadding tr td { padding: 0; } th.left, td.left { text-align: left; } th.center, td.center { text-align: center; } th.right, td.right { text-align: right; padding-right: 1em; } tr.vtop, th.vtop, td.vtop { vertical-align: top; } tr.vmiddle, th.vmiddle, td.vmiddle { vertical-align: middle; } tr.vbottom, th.vbottom, td.vbottom { vertical-align: bottom; } .paddingtop { padding-top: 1em; } div.tools { border: 1px solid #000000; padding: 0.2em; } div.tools, fieldset.tblFooters { margin-top: 0; margin-bottom: 0.5em; /* avoid a thick line since this should be used under another fieldset */ border-top: 0; text-align: ; float: none; clear: both; } div.null_div { height: 20px; text-align: center; font-style:normal; min-width:50px; } fieldset .formelement { float: ; margin-: 0.5em; /* IE */ white-space: nowrap; } /* revert for Gecko */ fieldset div[class=formelement] { white-space: normal; } button.mult_submit { border: none; background-color: transparent; } /* odd items 1,3,5,7,... */ table tr:nth-child(odd), #table_index tbody:nth-of-type(odd) tr, #table_index tbody:nth-of-type(odd) th { background: ; } /* even items 2,4,6,8,... */ table tr:nth-child(even), #table_index tbody:nth-of-type(even) tr, #table_index tbody:nth-of-type(even) th { background: ; } table tr th, table tr { text-align: ; } /* marked table rows */ td.marked:not(.nomarker), table tr.marked:not(.nomarker) td, table tr.marked:not(.nomarker) th, table tr.marked:not(.nomarker) { background: ; color: ; } /* hovered items */ table tr:not(.nopointer):hover, .hover:not(.nopointer) { background: ; color: ; } /* hovered table rows */ #table_index tbody:hover tr, #table_index tbody:hover th, table tr.hover:not(.nopointer) th { background: ; color: ; } /** * marks table rows/cells if the db field is in a where condition */ td.condition, th.condition { border: 1px solid ; } /** * cells with the value NULL */ td.null { font-style: italic; color: #7d7d7d; } table .valueHeader { text-align: ; white-space: normal; } table .value { text-align: ; white-space: normal; } /* IE doesnt handles 'pre' right */ table [class=value] { white-space: normal; } .value { font-family: ; } .attention { color: red; font-weight: bold; } .allfine { color: green; } img.lightbulb { cursor: pointer; } .pdflayout { overflow: hidden; clip: inherit; background-color: #FFFFFF; display: none; border: 1px solid #000000; position: relative; } .pdflayout_table { background: #D3DCE3; color: #000000; overflow: hidden; clip: inherit; z-index: 2; display: inline; visibility: inherit; cursor: move; position: absolute; font-size: 80%; border: 1px dashed #000000; } /* Doc links in SQL */ .cm-sql-doc { text-decoration: none; border-bottom: 1px dotted #000; color: inherit !important; } /* leave some space between icons and text */ .icon { image-rendering: pixelated; vertical-align: middle; margin-: 0.3em; background-repeat: no-repeat; background-position: center; } /* no extra space in table cells */ td .icon { margin: 0; } .selectallarrow { margin-: 0.3em; margin-: 0.6em; } /* message boxes: error, confirmation */ #pma_errors, #pma_demo, #pma_footer { position: relative; padding: 0 0.5em; } .success h1, .notice h1, div.error h1 { border-bottom: 2px solid; font-weight: bold; text-align: ; margin: 0 0 0.2em 0; } div.success, div.notice, div.error { margin: 0.3em 0 0 0; border: 2px solid; background-repeat: no-repeat; clear: both; background-position: 10px 50%; padding: 0.1em 0.1em 0.1em 42px; background-position: 99% 50%; padding: 0.1em 40px 0.1em 0.1em; } div.success img.icon, div.notice img.icon, div.error img.icon { display: block; float: ; margin-: -22px; } .success { color: #000000; background-color: #f0fff0; } h1.success, div.success { border-color: #00FF00; } .success h1 { border-color: #00FF00; } .notice { color: #000000; background-color: #FFFFDD; } h1.notice, div.notice { border-color: #FFD700; } .notice h1 { border-color: #FFD700; } .error { background-color: #FFFFCC; color: #ff0000; } h1.error, div.error { border-color: #ff0000; } div.error h1 { border-color: #ff0000; } .confirmation { background-color: #FFFFCC; } fieldset.confirmation { border: 0.1em solid #FF0000; } fieldset.confirmation legend { border-left: 0.1em solid #FF0000; border-right: 0.1em solid #FF0000; font-weight: bold; background-image: url(getImgPath('s_really.png');?>); background-repeat: no-repeat; background-position: 5px 50%; padding: 0.2em 0.2em 0.2em 25px; background-position: 97% 50%; padding: 0.2em 25px 0.2em 0.2em; } /* end messageboxes */ .new_central_col{ width: 100%; } .tblcomment { font-size: 70%; font-weight: normal; color: #000099; } .tblHeaders { font-weight: bold; color: ; background: ; } div.tools, .tblFooters { font-weight: normal; color: ; background: ; } .tblHeaders a:link, .tblHeaders a:active, .tblHeaders a:visited, div.tools a:link, div.tools a:visited, div.tools a:active, .tblFooters a:link, .tblFooters a:active, .tblFooters a:visited { color: #0000FF; } .tblHeaders a:hover, div.tools a:hover, .tblFooters a:hover { color: #FF0000; } /* forbidden, no privilegs */ .noPrivileges { color: #FF0000; font-weight: bold; } /* disabled text */ .disabled, .disabled a:link, .disabled a:active, .disabled a:visited { color: #666666; } .disabled a:hover { color: #666666; text-decoration: none; } tr.disabled td, td.disabled { background-color: #cccccc; } .nowrap { white-space: nowrap; } /** * zoom search */ div#resizer { width: 600px; height: 400px; } div#querychart { float: left; width: 600px; } /** * login form */ body#loginform h1, body#loginform a.logo { display: block; text-align: center; } body#loginform { margin-top: 1em; text-align: center; } body#loginform div.container { text-align: ; width: 30em; margin: 0 auto; } form.login label { float: ; width: 10em; font-weight: bolder; } .commented_column { border-bottom: 1px dashed black; } .column_attribute { font-size: 70%; } .cfg_dbg_demo{ margin: 0.5em 1em 0.5em 1em; } .central_columns_navigation{ padding:1.5% 0em !important; } .central_columns_add_column{ display:inline-block; margin-left:1%; max-width:50% } .message_errors_found{ margin-top: 20px; } .repl_gui_skip_err_cnt{ width: 30px; } .font_weight_bold{ font-weight: bold; } .color_gray{ color: gray; } .pma_sliding_message{ display: inline-block; } li.last.database{ margin-bottom: 20px !important; } /******************************************************************************/ /* specific elements */ /* topmenu */ ul#topmenu, ul#topmenu2, ul.tabs { font-weight: bold; list-style-type: none; margin: 0; padding: 0; } ul#topmenu2 { margin: 0.25em 0.5em 0; height: 2em; clear: both; } ul#topmenu li, ul#topmenu2 li { float: ; margin: 0; padding: 0; vertical-align: middle; } #topmenu img, #topmenu2 img { vertical-align: middle; margin-: 0.1em; } /* default tab styles */ ul#topmenu a, ul#topmenu span { display: block; margin: 2px 2px 0; padding: 2px 2px 0; white-space: nowrap; } ul#topmenu2 a { display: block; margin: 0.1em; padding: 0.2em; white-space: nowrap; } span.caution { color: #FF0000; } fieldset.caution a { color: #FF0000; } fieldset.caution a:hover { color: #ffffff; background-color: #FF0000; } #topmenu { margin-top: 0.5em; padding: 0.1em 0.3em 0.1em 0.3em; } ul#topmenu ul { -moz-box-shadow: 2px 2px 3px #666; -webkit-box-shadow: 2px 2px 3px #666; box-shadow: 2px 2px 3px #666; } ul#topmenu > li { border-bottom: 1pt solid black; } /* default tab styles */ ul#topmenu a, ul#topmenu span { background-color: ; border: 0 solid ; border-width: 1pt 1pt 0 1pt; -moz-border-radius: 0.4em 0.4em 0 0; border-radius: 0.4em 0.4em 0 0; } ul#topmenu ul a { border-width: 1pt 0 0 0; -moz-border-radius: 0; border-radius: 0; } ul#topmenu ul li:first-child a { border-width: 0; } /* enabled hover/active tabs */ ul#topmenu > li > a:hover, ul#topmenu > li > .tabactive { margin: 0; padding: 2px 4px; text-decoration: none; } ul#topmenu ul a:hover, ul#topmenu ul .tabactive { text-decoration: none; } ul#topmenu a.tab:hover, ul#topmenu .tabactive { background-color: ; } ul#topmenu2 a.tab:hover, ul#topmenu2 a.tabactive { background-color: ; -moz-border-radius: 0.3em; border-radius: 0.3em; text-decoration: none; } /* to be able to cancel the bottom border, use
  • */ ul#topmenu > li.active { border-bottom: 1pt solid ; } /* end topmenu */ /* zoom search */ div#dataDisplay input, div#dataDisplay select { margin: 0; margin-: 0.5em; } div#dataDisplay th { line-height: 2em; } table#tableFieldsId { width: 100%; } /* Calendar */ table.calendar { width: 100%; } table.calendar td { text-align: center; } table.calendar td a { display: block; } table.calendar td a:hover { background-color: #CCFFCC; } table.calendar th { background-color: #D3DCE3; } table.calendar td.selected { background-color: #FFCC99; } img.calendar { border: none; } form.clock { text-align: center; } /* end Calendar */ /* table stats */ div#tablestatistics table { float: ; margin-top: 0.5em; margin-bottom: 0.5em; margin-: 0.5em; min-width: 16em; } /* end table stats */ /* server privileges */ #tableuserrights td, #tablespecificuserrights td, #tabledatabases td { vertical-align: middle; } /* end server privileges */ /* Heading */ #topmenucontainer { background: white; padding-: 1em; width: 100%; } #serverinfo { background: white; font-weight: bold; padding-bottom: 0.5em; padding-: 2.2em; width: 10000px; overflow: hidden; } #serverinfo .item { white-space: nowrap; } #page_nav_icons { position: fixed; top: 0; : 0; z-index: 99; padding: .1em 0; } #goto_pagetop, #lock_page_icon, #page_settings_icon { padding: .3em; background: white; } #page_settings_icon { cursor: pointer; display: none; } #page_settings_modal { display: none; } #pma_navigation_settings { display: none; } #span_table_comment { font-weight: bold; font-style: italic; white-space: nowrap; margin-left: 10px; color: #D6D6D6; text-shadow: none; } #serverinfo img { margin: 0 0.1em 0 0.2em; } #textSQLDUMP { width: 95%; height: 95%; font-family: "Courier New", Courier, mono; font-size: 110%; } #TooltipContainer { position: absolute; z-index: 99; width: 20em; height: auto; overflow: visible; visibility: hidden; background-color: #ffffcc; color: #006600; border: 0.1em solid #000000; padding: 0.5em; } /* user privileges */ #fieldset_add_user_login div.item { border-bottom: 1px solid silver; padding-bottom: 0.3em; margin-bottom: 0.3em; } #fieldset_add_user_login label { float: ; display: block; width: 15em; max-width: 100%; text-align: ; padding-: 0.5em; } #fieldset_add_user_login span.options #select_pred_username, #fieldset_add_user_login span.options #select_pred_hostname, #fieldset_add_user_login span.options #select_pred_password { width: 100%; max-width: 100%; } #fieldset_add_user_login span.options { float: ; display: block; width: 12em; max-width: 100%; padding-: 0.5em; } #fieldset_add_user_login input { width: 12em; clear: ; max-width: 100%; } #fieldset_add_user_login span.options input { width: auto; } #fieldset_user_priv div.item { float: ; width: 9em; max-width: 100%; } #fieldset_user_priv div.item div.item { float: none; } #fieldset_user_priv div.item label { white-space: nowrap; } #fieldset_user_priv div.item select { width: 100%; } #fieldset_user_global_rights fieldset { float: ; } #fieldset_user_group_rights fieldset { float: ; } #fieldset_user_global_rights>legend input { margin-: 2em; } /* end user privileges */ /* serverstatus */ .linkElem:hover { text-decoration: underline; color: #235a81; cursor: pointer; } h3#serverstatusqueries span { font-size:60%; display:inline; } .buttonlinks { float: ; white-space: nowrap; } /* Also used for the variables page */ fieldset#tableFilter { padding: 0.1em 1em; } div#serverStatusTabs { margin-top:1em; } caption a.top { float: ; } div#serverstatusquerieschart { float: ; width: 500px; height: 350px; margin-: 50px; } div#serverstatus table#serverstatusqueriesdetails { float: ; } table#serverstatustraffic { float: ; } table#serverstatusconnections { float: ; margin-: 30px; } table#serverstatusvariables { width: 100%; margin-bottom: 1em; } table#serverstatusvariables .name { width: 18em; white-space:nowrap; } table#serverstatusvariables .value { width: 6em; } table#serverstatusconnections { float: ; margin-: 30px; } div#serverstatus table tbody td.descr a, div#serverstatus table .tblFooters a { white-space: nowrap; } div.liveChart { clear:both; min-width:500px; height:400px; padding-bottom:80px; } #addChartDialog input[type="text"] { margin: 0; padding:3px; } div#chartVariableSettings { border:1px solid #ddd; background-color:#E6E6E6; margin-left:10px; } table#chartGrid td { padding: 3px; margin: 0; } table#chartGrid div.monitorChart { background: #EBEBEB; overflow: hidden; border: none; } div.tabLinks { margin-left: 0.3em; float: ; padding: 5px 0; } div.tabLinks a, div.tabLinks label { margin-right: 7px; } div.tabLinks .icon { margin: -0.2em 0.3em 0 0; } .popupContent { display: none; position: absolute; border: 1px solid #CCC; margin:0; padding:3px; -moz-box-shadow: 1px 1px 6px #ddd; -webkit-box-shadow: 2px 2px 3px #666; box-shadow: 2px 2px 3px #666; background-color:white; z-index: 2; } div#logTable { padding-top: 10px; clear: both; } div#logTable table { width:100%; } .smallIndent { padding-left: 7px; } /* end serverstatus */ #sectionlinks { margin-bottom: 15px; padding: 10px; border: 1px solid #CCC; } #sectionlinks a { margin-: 7px; } /* server variables */ #serverVariables { width: 100%; } #serverVariables .var-row > tr { line-height: 2em; } #serverVariables .var-header { font-weight: bold; color: ; background: ; text-align: ; } #serverVariables .var-row { padding: 0.5em; min-height: 18px; } #serverVariables .var-name { font-weight: bold; } #serverVariables .var-name.session { font-weight: normal; font-style: italic; } #serverVariables .var-value { text-align: ; float: ; } /* server variables editor */ #serverVariables .editLink { padding-: 1em; font-family: sans-serif; } #serverVariables .serverVariableEditor { width: 100%; overflow: hidden; } #serverVariables .serverVariableEditor input { width: 100%; margin: 0 0.5em; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; height: 2.2em; } #serverVariables .serverVariableEditor div { display: block; overflow: hidden; padding-: 1em; } #serverVariables .serverVariableEditor a { margin: 0 0.5em; line-height: 2em; } /* end server variables */ /* profiling */ div#profilingchart { width: 850px; height: 370px; float: left; } #profilingchart .jqplot-highlighter-tooltip{ top: auto !important; left: 11px; bottom:24px; } /* end profiling */ /* table charting */ .chartOption { float: ; margin-: 40px; } /* end table charting */ /* querybox */ div#sqlquerycontainer { float: ; width: 69%; /* height: 15em; */ } div#tablefieldscontainer { float: ; width: 29%; /* height: 15em; */ } div#tablefieldscontainer select { width: 100%; /* height: 12em; */ } textarea#sqlquery { width: 100%; /* height: 100%; */ } textarea#sql_query_edit { height: 7em; width: 95%; display: block; } div#queryboxcontainer div#bookmarkoptions { margin-top: .5em; } /* end querybox */ /* main page */ #maincontainer { background-image: url(getImgPath('logo_right.png');?>); background-position: bottom; background-repeat: no-repeat; } #mysqlmaininformation, #pmamaininformation { float: ; width: 49%; } #maincontainer ul { list-style-type: disc; vertical-align: middle; } #maincontainer li { margin: 0.2em 0; } #full_name_layer { position: absolute; padding: 2px; margin-top: -3px; z-index: 801; border: solid 1px #888; background: #fff; } /* end main page */ /* iconic view for ul items */ li.no_bullets { list-style-type:none !important; margin-: -25px !important; //align with other list items which have bullets } /* end iconic view for ul items */ #body_browse_foreigners { background: ; margin: .5em .5em 0 .5em; } #bodythemes { width: 500px; margin: auto; text-align: center; } #bodythemes img { border: .1em solid #000; } #bodythemes a:hover img { border: .1em solid red; } #fieldset_select_fields { float: ; } #selflink { clear: both; display: block; margin-top: 1em; margin-bottom: 1em; width: 98%; margin-left: 1%; border-top: .1em solid silver; text-align: ; } #table_innodb_bufferpool_usage, #table_innodb_bufferpool_activity { float: ; } #div_mysql_charset_collations table { float: ; } #div_mysql_charset_collations table th, #div_mysql_charset_collations table td { padding: 0.4em; } #div_mysql_charset_collations table th#collationHeader { width: 35%; } #qbe_div_table_list { float: ; } #qbe_div_sql_query { float: ; } label.desc { width: 30em; float: ; } label.desc sup { position: absolute; } code.php { display: block; padding-left: 0.3em; margin-top: 0; margin-bottom: 0; max-height: 10em; overflow: auto; direction: ltr; } code.sql, div.sqlvalidate { display: block; padding: 0.3em; margin-top: 0; margin-bottom: 0; max-height: 10em; overflow: auto; direction: ltr; } .result_query div.sqlOuter, div.sqlvalidate { border: solid 1px; border-top: 0; border-bottom: 0; background: ; } .result_query div.sqlOuter { text-align: ; } #PMA_slidingMessage code.sql { border: solid 1px; border-top: 0; background: ; } #main_pane_left { width: 60%; min-width: 260px; float: ; padding-top: 1em; } #main_pane_right { overflow: hidden; min-width: 160px; padding-top: 1em; padding-: 1em; } .group { border-: 0.3em solid ; margin-bottom: 1em; } .group h2 { background: ; padding: 0.1em 0.3em; margin-top: 0; } .group-cnt { padding: 0 0 0 0.5em; display: inline-block; width: 98%; } textarea#partitiondefinition { height:3em; } /* for elements that should be revealed only via js */ .hide { display: none; } #list_server { list-style-type: none; padding: 0; } /** * Progress bar styles */ div.upload_progress { width: 400px; margin: 3em auto; text-align: center; } div.upload_progress_bar_outer { border: 1px solid #000; width: 202px; position: relative; margin: 0 auto 1em; color: ; } div.upload_progress_bar_inner { background-color: ; width: 0; height: 12px; margin: 1px; overflow: hidden; color: ; position: relative; } div.upload_progress_bar_outer div.percentage { position: absolute; top: 0; left: 0; width: 202px; } div.upload_progress_bar_inner div.percentage { top: -1px; left: -1px; } div#statustext { margin-top: .5em; } table#serverconnection_src_remote, table#serverconnection_trg_remote, table#serverconnection_src_local, table#serverconnection_trg_local { float: left; } /** * Validation error message styles */ input[type=text].invalid_value, input[type=password].invalid_value, input[type=number].invalid_value, input[type=date].invalid_value, select.invalid_value, .invalid_value { background: #FFCCCC; } /** * Ajax notification styling */ .ajax_notification { top: 0; /** The notification needs to be shown on the top of the page */ position: fixed; margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; padding: 3px 5px; /** Keep a little space on the sides of the text */ width: 350px; background-color: #FFD700; z-index: 1100; /** If this is not kept at a high z-index, the jQueryUI modal dialogs (z-index:1000) might hide this */ text-align: center; display: block; left: 0; right: 0; background-image: url(getImgPath('ajax_clock_small.gif');?>); background-repeat: no-repeat; background-position: 2%; } #loading_parent { /** Need this parent to properly center the notification division */ position: relative; width: 100%; } /** * Export and Import styles */ .export_table_list_container { display: inline-block; max-height: 20em; overflow-y: scroll; } .export_table_select th { text-align: center; vertical-align: middle; } .export_table_select .all { font-weight: bold; border-bottom: 1px solid black; } .export_structure, .export_data { text-align: center; } .export_table_name { vertical-align: middle; } .exportoptions h2 { word-wrap: break-word; } .exportoptions h3, .importoptions h3 { border-bottom: 1px #999999 solid; font-size: 110%; } .exportoptions ul, .importoptions ul, .format_specific_options ul { list-style-type: none; margin-bottom: 15px; } .exportoptions li, .importoptions li { margin: 7px; } .exportoptions label, .importoptions label, .exportoptions p, .importoptions p { margin: 5px; float: none; } #csv_options label.desc, #ldi_options label.desc, #latex_options label.desc, #output label.desc{ float: left; width: 15em; } .exportoptions, .importoptions { margin: 20px 30px 30px 10px } .format_specific_options h3 { margin: 10px 0 0 10px; border: 0; } .format_specific_options { border: 1px solid #999; margin: 7px 0; padding: 3px; } p.desc { margin: 5px; } /** * Export styles only */ select#db_select, select#table_select { width: 400px; } .export_sub_options { margin: 20px 0 0 30px; } .export_sub_options h4 { border-bottom: 1px #999 solid; } .export_sub_options li.subgroup { display: inline-block; margin-top: 0; } .export_sub_options li { margin-bottom: 0; } #output_quick_export { display: none; } /** * Import styles only */ .importoptions #import_notification { margin: 10px 0; font-style: italic; } input#input_import_file { margin: 5px; } .formelementrow { margin: 5px 0 5px 0; } #filterText { vertical-align: baseline; } #popup_background { display: none; position: fixed; _position: absolute; /* hack for IE6 */ width: 100%; height: 100%; top: 0; left: 0; background: #000; z-index: 1000; overflow: hidden; } /** * Create table styles */ #create_table_form table.table-name td { vertical-align: middle; } /** * Table structure styles */ #fieldsForm ul.table-structure-actions { margin: 0; padding: 0; list-style: none; } #fieldsForm ul.table-structure-actions li { float: ; margin-: 0.5em; /* same as padding of "table td" */ } #fieldsForm ul.table-structure-actions .submenu li { padding: 0.3em; margin: 0.1em; } #structure-action-links a { margin-: 1em; } #addColumns input[type="radio"] { margin: 0; margin-: 1em; } #addColumns input[type="submit"] { margin-: 1em; } /** * Indexes */ #index_frm .index_info input[type="text"], #index_frm .index_info select { width: 100%; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } #index_frm .slider { width: 10em; margin: .6em; float: ; } #index_frm .add_fields { float: ; } #index_frm .add_fields input { margin-: 1em; } #index_frm input { margin: 0; } #index_frm td { vertical-align: middle; } table#index_columns { width: 100%; } table#index_columns select { width: 85%; float: right; } #move_columns_dialog div { padding: 1em; } #move_columns_dialog ul { list-style: none; margin: 0; padding: 0; } #move_columns_dialog li { background: ; border: 1px solid #aaa; color: ; font-weight: bold; margin: .4em; padding: .2em; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; } /* config forms */ .config-form ul.tabs { margin: 1.1em 0.2em 0; padding: 0 0 0.3em 0; list-style: none; font-weight: bold; } .config-form ul.tabs li { float: ; } .config-form ul.tabs li a { display: block; margin: 0.1em 0.2em 0; padding: 0.1em 0.4em; white-space: nowrap; text-decoration: none; border: 1px solid ; border-bottom: none; } .config-form ul.tabs li a:hover, .config-form ul.tabs li a:active, .config-form ul.tabs li a.active { margin: 0; padding: 0.1em 0.6em 0.2em; } .config-form ul.tabs li.active a { background-color: ; } .config-form fieldset { margin-top: 0; padding: 0; clear: both; /*border-color: ;*/ } .config-form legend { display: none; } .config-form fieldset p { margin: 0; padding: 0.5em; background: ; } .config-form fieldset .errors { /* form error list */ margin: 0 -2px 1em -2px; padding: .5em 1.5em; background: #FBEAD9; border: 0 #C83838 solid; border-width: 1px 0; list-style: none; font-family: sans-serif; font-size: small; } .config-form fieldset .inline_errors { /* field error list */ margin: .3em .3em .3em 0; padding: 0; list-style: none; color: #9A0000; font-size: small; } .config-form fieldset th { padding: .3em .3em .3em .5em; text-align: left; vertical-align: top; width: 40%; background: transparent; } .config-form fieldset .doc, .config-form fieldset .disabled-notice { margin-left: 1em; } .config-form fieldset .disabled-notice { font-size: 80%; text-transform: uppercase; color: #E00; cursor: help; } .config-form fieldset td { padding-top: .3em; padding-bottom: .3em; vertical-align: top; } .config-form fieldset th small { display: block; font-weight: normal; font-family: sans-serif; font-size: x-small; color: #444; } .config-form fieldset th, .config-form fieldset td { border-top: 1px solid; } fieldset .group-header th { background: ; } fieldset .group-header + tr th { padding-top: .6em; } fieldset .group-field-1 th, fieldset .group-header-2 th { padding-left: 1.5em; } fieldset .group-field-2 th, fieldset .group-header-3 th { padding-left: 3em; } fieldset .group-field-3 th { padding-left: 4.5em; } fieldset .disabled-field th, fieldset .disabled-field th small, fieldset .disabled-field td { color: #666; background-color: #ddd; } .config-form .lastrow { border-top: 1px #000 solid; } .config-form .lastrow { background: ; padding: .5em; text-align: center; } .config-form .lastrow input { font-weight: bold; } /* form elements */ .config-form span.checkbox { padding: 2px; display: inline-block; } .config-form .custom { /* customized field */ background: #FFC; } .config-form span.checkbox.custom { padding: 1px; border: 1px #EDEC90 solid; background: #FFC; } .config-form .field-error { border-color: #A11 !important; } .config-form input[type="text"], .config-form input[type="password"], .config-form input[type="number"], .config-form select, .config-form textarea { border: 1px #A7A6AA solid; height: auto; } .config-form input[type="text"]:focus, .config-form input[type="password"]:focus, .config-form input[type="number"]:focus, .config-form select:focus, .config-form textarea:focus { border: 1px #6676FF solid; background: #F7FBFF; } .config-form .field-comment-mark { font-family: serif; color: #007; cursor: help; padding: 0 0.2em; font-weight: bold; font-style: italic; } .config-form .field-comment-warning { color: #A00; } /* error list */ .config-form dd { margin-left: .5em; } .config-form dd:before { content: "\25B8 "; } .click-hide-message { cursor: pointer; } .prefsmanage_opts { margin-: 2em; } #prefs_autoload { margin-bottom: .5em; margin-left: .5em; } #placeholder .button { position: absolute; cursor: pointer; } #placeholder div.button { font-size: smaller; color: #999; background-color: #eee; padding: 2px; } .wrapper { float: ; margin-bottom: 0.5em; } .toggleButton { position: relative; cursor: pointer; font-size: .8em; text-align: center; line-height: 1.4em; height: 1.55em; overflow: hidden; border-right: .1em solid #888; border-left: .1em solid #888; } .toggleButton table, .toggleButton td, .toggleButton img { padding: 0; position: relative; } .toggleButton .container { position: absolute; } .toggleButton .container td, .toggleButton .container tr { background-image: none; background: none !important; } .toggleButton .toggleOn { color: #fff; padding: 0 1em; } .toggleButton .toggleOff { padding: 0 1em; } .doubleFieldset fieldset { width: 48%; float: ; padding: 0; } .doubleFieldset fieldset.left { margin-: 1%; } .doubleFieldset fieldset.right { margin-: 1%; } .doubleFieldset legend { margin-: 0.5em; } .doubleFieldset div.wrap { padding: 0.5em; } #table_name_col_no_outer { margin-top: 30px; } #table_name_col_no { position: fixed; top: 44px; width: 100%; background: ; } #table_columns input[type="text"], #table_columns input[type="password"], #table_columns input[type="number"], #table_columns input[type="date"], #table_columns select { width: 10em; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } input#auto_increment_opt { width: min-content; } #placeholder { position: relative; border: 1px solid #aaa; float: ; overflow: hidden; width: 450px; height: 300px; } #openlayersmap{ width: 450px; height: 300px; } .placeholderDrag { cursor: move; } #placeholder .button { position: absolute; } #left_arrow { left: 8px; top: 26px; } #right_arrow { left: 26px; top: 26px; } #up_arrow { left: 17px; top: 8px; } #down_arrow { left: 17px; top: 44px; } #zoom_in { left: 17px; top: 67px; } #zoom_world { left: 17px; top: 85px; } #zoom_out { left: 17px; top: 103px; } .colborder { cursor: col-resize; height: 100%; margin-left: -5px; position: absolute; width: 5px; } .colborder_active { border-right: 2px solid #a44; } .pma_table td { position: static; } .pma_table th.draggable span, .sticky_columns th.draggable span, .pma_table tbody td span { display: block; overflow: hidden; } .pma_table tbody td span code span { display: inline; } .modal-copy input { display: block; width: 100%; margin-top: 1.5em; padding: .3em 0; } .cRsz { position: absolute; } .draggable { cursor: move; } .cCpy { background: #000; color: #FFF; font-weight: bold; margin: 0.1em; padding: 0.3em; position: absolute; } .cPointer { background: url(getImgPath('col_pointer.png');?>); height: 20px; margin-left: -5px; /* must be minus half of its width */ margin-top: -10px; position: absolute; width: 10px; } .tooltip { background: #333 !important; opacity: .8 !important; border: 1px solid #000 !important; -moz-border-radius: .3em !important; -webkit-border-radius: .3em !important; border-radius: .3em !important; text-shadow: -1px -1px #000 !important; font-size: .8em !important; font-weight: bold !important; padding: 1px 3px !important; } .tooltip * { background: none !important; color: #FFF !important; } .data_full_width { width: 100%; } .cDrop { left: 0; position: absolute; top: 0; } .coldrop { background: url(getImgPath('col_drop.png');?>); cursor: pointer; height: 16px; margin-left: 0.5em; margin-top: 0.3em; position: absolute; width: 16px; } .coldrop:hover, .coldrop-hover { background-color: #999; } .cList { background: #EEE; border: solid 1px #999; position: absolute; } .cList .lDiv div { padding: .2em .5em .2em .2em; } .cList .lDiv div:hover { background: #DDD; cursor: pointer; } .cList .lDiv div input { cursor: pointer; } .showAllColBtn { border-bottom: solid 1px #999; border-top: solid 1px #999; cursor: pointer; font-size: .9em; font-weight: bold; padding: .35em 1em; text-align: center; } .showAllColBtn:hover { background: #DDD; } .navigation { background: #E5E5E5; border: 1px solid black; margin: 0.8em 0; } .navigation td { margin: 0; padding: 0; vertical-align: middle; white-space: nowrap; } .navigation_separator { color: #555; display: inline-block; text-align: center; width: 1.2em; text-shadow: 1px 0 #FFF; } .navigation input[type=submit] { background: none; border: 0; margin: 0; padding: 0.3em 0.5em; min-width: 1.5em; font-weight: bold; } .navigation input[type=submit]:hover, .navigation input.edit_mode_active { background: #333; color: white; cursor: pointer; } .navigation select { margin: 0 .8em; } .cEdit { margin: 0; padding: 0; position: absolute; } .cEdit input[type=text], .cEdit input[type=password], .cEdit input[type=number] { background: #FFF; height: 100%; margin: 0; padding: 0; } .cEdit .edit_area { background: #FFF; border: 1px solid #999; min-width: 10em; padding: .3em .5em; } .cEdit .edit_area select, .cEdit .edit_area textarea { width: 97%; } .cEdit .cell_edit_hint { color: #555; font-size: .8em; margin: .3em .2em; } .cEdit .edit_box { overflow-x: hidden; overflow-y: scroll; padding: 0; } .cEdit .edit_box_posting { background: #FFF url(getImgPath('ajax_clock_small.gif');?>) no-repeat right center; padding-right: 1.5em; } .cEdit .edit_area_loading { background: #FFF url(getImgPath('ajax_clock_small.gif');?>) no-repeat center; height: 10em; } .cEdit .goto_link { background: #EEE; color: #555; padding: .2em .3em; } .saving_edited_data { background: url(getImgPath('ajax_clock_small.gif');?>) no-repeat left; padding-left: 20px; } /* css for timepicker */ .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; } .ui-timepicker-div dl { text-align: ; } .ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; } .ui-timepicker-div dl dd { margin: 0 10px 10px 85px; } .ui-timepicker-div td { font-size: 90%; } .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; } .ui-timepicker-rtl { direction: rtl; } .ui-timepicker-rtl dl { text-align: right; } .ui-timepicker-rtl dl dd { margin: 0 65px 10px 10px; } input.btn { color: #333; background-color: #D0DCE0; } body .ui-widget { font-size: 1em; } body #ui-datepicker-div { z-index: 9999 !important; } .ui-dialog fieldset legend a { color: #0000FF; } .ui-draggable { z-index: 801; } /* jqPlot */ /*rules for the plot target div. These will be cascaded down to all plot elements according to css rules*/ .jqplot-target { position: relative; color: #222222; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: 1em; /* height: 300px; width: 400px;*/ } /*rules applied to all axes*/ .jqplot-axis { font-size: 0.75em; } .jqplot-xaxis { margin-top: 10px; } .jqplot-x2axis { margin-bottom: 10px; } .jqplot-yaxis { margin-right: 10px; } .jqplot-y2axis, .jqplot-y3axis, .jqplot-y4axis, .jqplot-y5axis, .jqplot-y6axis, .jqplot-y7axis, .jqplot-y8axis, .jqplot-y9axis, .jqplot-yMidAxis { margin-left: 10px; margin-right: 10px; } /*rules applied to all axis tick divs*/ .jqplot-axis-tick, .jqplot-xaxis-tick, .jqplot-yaxis-tick, .jqplot-x2axis-tick, .jqplot-y2axis-tick, .jqplot-y3axis-tick, .jqplot-y4axis-tick, .jqplot-y5axis-tick, .jqplot-y6axis-tick, .jqplot-y7axis-tick, .jqplot-y8axis-tick, .jqplot-y9axis-tick, .jqplot-yMidAxis-tick { position: absolute; white-space: pre; } .jqplot-xaxis-tick { top: 0; /* initial position untill tick is drawn in proper place */ left: 15px; vertical-align: top; } .jqplot-x2axis-tick { bottom: 0; /* initial position untill tick is drawn in proper place */ left: 15px; vertical-align: bottom; } .jqplot-yaxis-tick { right: 0; /* initial position untill tick is drawn in proper place */ top: 15px; text-align: right; } .jqplot-yaxis-tick.jqplot-breakTick { right: -20px; margin-right: 0; padding:1px 5px 1px 5px; z-index: 2; font-size: 1.5em; } .jqplot-y2axis-tick, .jqplot-y3axis-tick, .jqplot-y4axis-tick, .jqplot-y5axis-tick, .jqplot-y6axis-tick, .jqplot-y7axis-tick, .jqplot-y8axis-tick, .jqplot-y9axis-tick { left: 0; /* initial position until tick is drawn in proper place */ top: 15px; text-align: left; } .jqplot-yMidAxis-tick { text-align: center; white-space: nowrap; } .jqplot-xaxis-label { margin-top: 10px; font-size: 11pt; position: absolute; } .jqplot-x2axis-label { margin-bottom: 10px; font-size: 11pt; position: absolute; } .jqplot-yaxis-label { margin-right: 10px; /* text-align: center;*/ font-size: 11pt; position: absolute; } .jqplot-yMidAxis-label { font-size: 11pt; position: absolute; } .jqplot-y2axis-label, .jqplot-y3axis-label, .jqplot-y4axis-label, .jqplot-y5axis-label, .jqplot-y6axis-label, .jqplot-y7axis-label, .jqplot-y8axis-label, .jqplot-y9axis-label { /* text-align: center;*/ font-size: 11pt; margin-left: 10px; position: absolute; } .jqplot-meterGauge-tick { font-size: 0.75em; color: #999999; } .jqplot-meterGauge-label { font-size: 1em; color: #999999; } table.jqplot-table-legend { margin-top: 12px; margin-bottom: 12px; margin-left: 12px; margin-right: 12px; } table.jqplot-table-legend, table.jqplot-cursor-legend { background-color: rgba(255,255,255,0.6); border: 1px solid #cccccc; position: absolute; font-size: 0.75em; } td.jqplot-table-legend { vertical-align:middle; } /* These rules could be used instead of assigning element styles and relying on js object properties. */ /* td.jqplot-table-legend-swatch { padding-top: 0.5em; text-align: center; } tr.jqplot-table-legend:first td.jqplot-table-legend-swatch { padding-top: 0px; } */ td.jqplot-seriesToggle:hover, td.jqplot-seriesToggle:active { cursor: pointer; } .jqplot-table-legend .jqplot-series-hidden { text-decoration: line-through; } div.jqplot-table-legend-swatch-outline { border: 1px solid #cccccc; padding:1px; } div.jqplot-table-legend-swatch { width:0; height:0; border-top-width: 5px; border-bottom-width: 5px; border-left-width: 6px; border-right-width: 6px; border-top-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-style: solid; } .jqplot-title { top: 0; left: 0; padding-bottom: 0.5em; font-size: 1.2em; } table.jqplot-cursor-tooltip { border: 1px solid #cccccc; font-size: 0.75em; } .jqplot-cursor-tooltip { border: 1px solid #cccccc; font-size: 0.75em; white-space: nowrap; background: rgba(208,208,208,0.5); padding: 1px; } .jqplot-highlighter-tooltip, .jqplot-canvasOverlay-tooltip { border: 1px solid #cccccc; font-size: 0.75em; white-space: nowrap; background: rgba(208,208,208,0.5); padding: 1px; } .jqplot-point-label { font-size: 0.75em; z-index: 2; } td.jqplot-cursor-legend-swatch { vertical-align: middle; text-align: center; } div.jqplot-cursor-legend-swatch { width: 1.2em; height: 0.7em; } .jqplot-error { /* Styles added to the plot target container when there is an error go here.*/ text-align: center; } .jqplot-error-message { /* Styling of the custom error message div goes here.*/ position: relative; top: 46%; display: inline-block; } div.jqplot-bubble-label { font-size: 0.8em; /* background: rgba(90%, 90%, 90%, 0.15);*/ padding-left: 2px; padding-right: 2px; color: rgb(20%, 20%, 20%); } div.jqplot-bubble-label.jqplot-bubble-label-highlight { background: rgba(90%, 90%, 90%, 0.7); } div.jqplot-noData-container { text-align: center; background-color: rgba(96%, 96%, 96%, 0.3); } .relationalTable td { vertical-align: top; } .relationalTable select { width: 125px; margin-right: 5px; } .report-data { height:13em; overflow:scroll; width:570px; border: solid 1px; background: white; padding: 2px; } .report-description { height:10em; width:570px; } div#page_content div#tableslistcontainer table.data { border-top: 0.1px solid #EEEEEE; } div#page_content div#tableslistcontainer, div#page_content div.notice, div#page_content div.result_query { margin-top: 1em; } table.show_create { margin-top: 1em; } table.show_create td { border-right: 1px solid #bbb; } #alias_modal table { width: 100%; } #alias_modal label { font-weight: bold; } .ui-dialog { position: fixed; } .small_font { font-size: smaller; } /* Console styles */ #pma_console_container { width: 100%; position: fixed; bottom: 0; : 0; z-index: 100; } #pma_console { position: relative; margin-: 240px; z-index: 100; } #pma_console .templates { display: none; } #pma_console .mid_text, #pma_console .toolbar span { vertical-align: middle; } #pma_console .toolbar { position: relative; background: #ccc; border-top: solid 1px #aaa; cursor: n-resize; } #pma_console .toolbar.collapsed:not(:hover) { display: inline-block; border-top--radius: 3px; border-: solid 1px #aaa; } #pma_console .toolbar.collapsed { cursor: default; } #pma_console .toolbar.collapsed>.button { display: none; } #pma_console .message span.text, #pma_console .message span.action, #pma_console .toolbar .button, #pma_console .toolbar .text, #pma_console .switch_button { padding: 0 3px; display: inline-block; } #pma_console .message span.action, #pma_console .toolbar .button, #pma_console .switch_button { cursor: pointer; } #pma_console .message span.action:hover, #pma_console .toolbar .button:hover, #pma_console .switch_button:hover, #pma_console .toolbar .button.active { background: #ddd; } #pma_console .toolbar .text { font-weight: bold; } #pma_console .toolbar .button, #pma_console .toolbar .text { margin-: .4em; } #pma_console .toolbar .button, #pma_console .toolbar .text { float: ; } #pma_console .content { overflow-x: hidden; overflow-y: auto; margin-bottom: -65px; border-top: solid 1px #aaa; background: #fff; padding-top: .4em; } #pma_console .content.console_dark_theme { background: #000; color: #fff; } #pma_console .content.console_dark_theme .CodeMirror-wrap { background: #000; color: #fff; } #pma_console .content.console_dark_theme .action_content { color: #000; } #pma_console .content.console_dark_theme .message { border-color: #373B41; } #pma_console .content.console_dark_theme .CodeMirror-cursor { border-color: #fff; } #pma_console .content.console_dark_theme .cm-keyword { color: #de935f; } #pma_console .message, #pma_console .query_input { position: relative; font-family: Monaco, Consolas, monospace; cursor: text; margin: 0 10px .2em 1.4em; } #pma_console .message { border-bottom: solid 1px #ccc; padding-bottom: .2em; } #pma_console .message.expanded>.action_content { position: relative; } #pma_console .message:before, #pma_console .query_input:before { left: -0.7em; position: absolute; content: ">"; } #pma_console .query_input:before { top: -2px; } #pma_console .query_input textarea { width: 100%; height: 4em; resize: vertical; } #pma_console .message:hover:before { color: #7cf; font-weight: bold; } #pma_console .message.expanded:before { content: "]"; } #pma_console .message.welcome:before { display: none; } #pma_console .message.failed:before, #pma_console .message.failed.expanded:before, #pma_console .message.failed:hover:before { content: "="; color: #944; } #pma_console .message.pending:before { opacity: .3; } #pma_console .message.collapsed>.query { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } #pma_console .message.expanded>.query { display: block; white-space: pre; word-wrap: break-word; } #pma_console .message .text.targetdb, #pma_console .message.collapsed .action.collapse, #pma_console .message.expanded .action.expand, #pma_console .message .action.requery, #pma_console .message .action.profiling, #pma_console .message .action.explain, #pma_console .message .action.bookmark { display: none; } #pma_console .message.select .action.profiling, #pma_console .message.select .action.explain, #pma_console .message.history .text.targetdb, #pma_console .message.successed .text.targetdb, #pma_console .message.history .action.requery, #pma_console .message.history .action.bookmark, #pma_console .message.bookmark .action.requery, #pma_console .message.bookmark .action.bookmark, #pma_console .message.successed .action.requery, #pma_console .message.successed .action.bookmark { display: inline-block; } #pma_console .message .action_content { position: absolute; bottom: 100%; background: #ccc; border: solid 1px #aaa; border-top--radius: 3px; } html.ie8 #pma_console .message .action_content { position: relative!important; } #pma_console .message.bookmark .text.targetdb, #pma_console .message .text.query_time { margin: 0; display: inline-block; } #pma_console .message.failed .text.query_time, #pma_console .message .text.failed { display: none; } #pma_console .message.failed .text.failed { display: inline-block; } #pma_console .message .text { background: #fff; } #pma_console .message.collapsed>.action_content { display: none; } #pma_console .message.collapsed:hover>.action_content { display: block; } #pma_console .message .bookmark_label { padding: 0 4px; top: 0; background: #369; color: #fff; border-radius: 3px; } #pma_console .message .bookmark_label.shared { background: #396; } #pma_console .message.expanded .bookmark_label { border-top-left-radius: 0; border-top-right-radius: 0; } #pma_console .query_input { position: relative; } #pma_console .mid_layer { height: 100%; width: 100%; position: absolute; top: 0; /* For support IE8, this layer doesn't use filter:opacity or opacity, js code will fade this layer opacity to 0.18(using animation) */ background: #666; display: none; cursor: pointer; z-index: 200; } #pma_console .card { position: absolute; width: 94%; height: 100%; min-height: 48px; : 100%; top: 0; border-: solid 1px #999; z-index: 300; transition: 0.2s; -ms-transition: 0.2s; -webkit-transition: 0.2s; -moz-transition: 0.2s; } #pma_console .card.show { : 6%; box-shadow: -2px 1px 4px -1px #999; } html.ie7 #pma_console .query_input { display: none; } #pma_bookmarks .content.add_bookmark, #pma_console_options .content { padding: 4px 6px; } #pma_bookmarks .content.add_bookmark .options { margin-: 1.4em; padding-bottom: .4em; margin-bottom: .4em; border-bottom: solid 1px #ccc; } #pma_bookmarks .content.add_bookmark .options button { margin: 0 7px; vertical-align: bottom; } #pma_bookmarks .content.add_bookmark input[type=text] { margin: 0; padding: 2px 4px; } #pma_console .button.hide, #pma_console .message span.text.hide { display: none; } #debug_console.grouped .ungroup_queries, #debug_console.ungrouped .group_queries { display: inline-block; } #debug_console.ungrouped .ungroup_queries, #debug_console.ungrouped .sort_count, #debug_console.grouped .group_queries { display: none; } #debug_console .count { margin-right: 8px; } #debug_console .show_trace .trace, #debug_console .show_args .args { display: block; } #debug_console .hide_trace .trace, #debug_console .hide_args .args, #debug_console .show_trace .action.dbg_show_trace, #debug_console .hide_trace .action.dbg_hide_trace, #debug_console .traceStep.hide_args .action.dbg_hide_args, #debug_console .traceStep.show_args .action.dbg_show_args { display: none; } #debug_console .traceStep:after, #debug_console .trace.welcome:after, #debug_console .debug>.welcome:after { content: ""; display: table; clear: both; } #debug_console .debug_summary { float: left; } #debug_console .trace.welcome .time { float: right; } #debug_console .traceStep .file, #debug_console .script_name { float: right; } #debug_console .traceStep .args pre { margin: 0; } /* Code mirror console style*/ .cm-s-pma .CodeMirror-code pre, .cm-s-pma .CodeMirror-code { font-family: Monaco, Consolas, monospace; } .cm-s-pma .CodeMirror-measure>pre, .cm-s-pma .CodeMirror-code>pre, .cm-s-pma .CodeMirror-lines { padding: 0; } .cm-s-pma.CodeMirror { resize: none; height: auto; width: 100%; min-height: initial; max-height: initial; } .cm-s-pma .CodeMirror-scroll { cursor: text; } /* PMA drop-improt style */ .pma_drop_handler { display: none; position: fixed; top: 0; left: 0; width: 100%; background: rgba(0, 0, 0, 0.6); height: 100%; z-index: 999; color: white; font-size: 30pt; text-align: center; padding-top: 20%; } .pma_sql_import_status { display: none; position: fixed; bottom: 0; right: 25px; width: 400px; border: 1px solid #999; background: #f3f3f3; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; -moz-box-shadow: 2px 2px 5px #ccc; -webkit-box-shadow: 2px 2px 5px #ccc; box-shadow: 2px 2px 5px #ccc; } .pma_sql_import_status h2, .pma_drop_result h2 { background-color: #bbb; padding: .1em .3em; margin-top: 0; margin-bottom: 0; color: #fff; font-size: 1.6em; font-weight: normal; text-shadow: 0 1px 0 #777; -moz-box-shadow: 1px 1px 15px #999 inset; -webkit-box-shadow: 1px 1px 15px #999 inset; box-shadow: 1px 1px 15px #999 inset; } .pma_sql_import_status div { height: 270px; overflow-y:auto; overflow-x:hidden; list-style-type: none; } .pma_sql_import_status div li { padding: 8px 10px; border-bottom: 1px solid #bbb; color: rgb(148, 14, 14); background: white; } .pma_sql_import_status div li .filesize { float: right; } .pma_sql_import_status h2 .minimize { float: right; margin-right: 5px; padding: 0 10px; } .pma_sql_import_status h2 .close { float: right; margin-right: 5px; padding: 0 10px; display: none; } .pma_sql_import_status h2 .minimize:hover, .pma_sql_import_status h2 .close:hover, .pma_drop_result h2 .close:hover { background: rgba(155, 149, 149, 0.78); cursor: pointer; } .pma_drop_file_status { color: #235a81; } .pma_drop_file_status span.underline:hover { cursor: pointer; text-decoration: underline; } .pma_drop_result { position: fixed; top: 10%; left: 20%; width: 60%; background: white; min-height: 300px; z-index: 800; -webkit-box-shadow: 0 0 15px #999; border-radius: 10px; cursor: move; } .pma_drop_result h2 .close { float: right; margin-right: 5px; padding: 0 10px; } #composite_index_list { list-style-type: none; list-style-position: inside; } span.drag_icon { display: inline-block; background-image: url('getImgPath('s_sortable.png');?>'); background-position: center center; background-repeat: no-repeat; width: 1em; height: 3em; cursor: move; } .topmargin { margin-top: 1em; } /* styles for sortable tables created with tablesorter jquery plugin */ th.header { cursor: pointer; color: #0000FF; } th.header:hover { text-decoration: underline; } th.header .sorticon { width: 16px; height: 16px; background-repeat: no-repeat; background-position: right center; display: inline-table; vertical-align: middle; float: right; } th.headerSortUp .sorticon, th.headerSortDown:hover .sorticon { background-image: url(getImgPath('s_desc.png');?>); } th.headerSortDown .sorticon, th.headerSortUp:hover .sorticon { background-image: url(getImgPath('s_asc.png');?>); } /* end of styles of sortable tables */ /* styles for jQuery-ui to support rtl languages */ body .ui-dialog .ui-dialog-titlebar-close { : .3em; : initial; } body .ui-dialog .ui-dialog-title { float: ; } body .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: ; } /* end of styles for jQuery-ui to support rtl languages */ /* Override some jQuery-ui styling to have square corners */ body .ui-corner-all, body .ui-corner-top, body .ui-corner-left, body .ui-corner-tl { border-top-left-radius: 0; } body .ui-corner-all, body .ui-corner-top, body .ui-corner-right, body .ui-corner-tr { border-top-right-radius: 0; } body .ui-corner-all, body .ui-corner-bottom, body .ui-corner-left, body .ui-corner-bl { border-bottom-left-radius: 0; } body .ui-corner-all, body .ui-corner-bottom, body .ui-corner-right, body .ui-corner-br { border-bottom-right-radius: 0; } /* Override jQuery-ui styling for ui-dialog */ body .ui-dialog { padding: 0; border-color: #000000; } body .ui-dialog .ui-dialog-titlebar { padding: .3em .5em; border: none; border-bottom: 1px solid #000000; } body .ui-dialog .ui-dialog-titlebar button { border: 1px solid #999999; } body .ui-dialog .ui-dialog-content { padding: .2em .4em; } body .ui-dialog .ui-dialog-buttonpane { background: #D3DCE3; border-top: 1px solid #000000; } body .ui-dialog .ui-dialog-buttonpane button { margin: .1em 0 .1em .4em; border: 1px solid #999999; color: #000000; } body .ui-dialog .ui-button-text-only .ui-button-text { padding: .2em .6em; } .scrollindicator { display: none; } @media only screen and (max-width: 768px) { /* For mobile phones: */ #main_pane_left { width: 100%; } #main_pane_right { padding-top: 0; padding-: 1px; padding-: 1px; } ul#topmenu, ul.tabs { display: flex; } .navigationbar { display: inline-flex; margin: 0 !important; border-radius: 0 !important; overflow: auto; } .scrollindicator { padding: 5px; cursor: pointer; display: inline; } .responsivetable { overflow-x: auto; } body#loginform div.container { width: 100%; } .largescreenonly { display: none; } .width100, .desktop50 { width: 100%; } .width96 { width: 96% !important; } #page_nav_icons { display: none; } table#serverstatusconnections { margin-left: 0; } #table_name_col_no { top: 62px } .tdblock tr td { display: block; } #table_columns { margin-top: 60px; } #table_columns .tablesorter { min-width: 100%; } .doubleFieldset fieldset { width: 98%; } div#serverstatusquerieschart { width: 100%; height: 450px; } .ui-dialog { margin: 1%; width: 95% !important; } #serverinfo .item { margin: 4px; } } /* templates/database/designer */ /* side menu */ #name-panel { overflow:hidden; } db/login/themes/original/screen.png000064400000053757151502156020013335 0ustar00PNG  IHDRHPPLTEӾֻwїAȢZų⹓Wɪ骳aegxxӅ­.IKM[[qqQQjjefّ#Juut/12HH""??cc33tthPSUggSTq{{{eiku{9;ڸUYosuhhTB++њ^ OO]]ԕy㏗ۺ󉊳]EŨt u۳֢#oxa~TIDATx0k϶ͤom&siٶz)Mo&4.GA&o p#ѵ w&Qjd*d0QVPB/J $upF#9!|C4@1}vK{N'ք1jMBI8/zn`ƜǐB 1|>3,cKyuBSV vQ#xRJHjde2 YX.n]e?xj ɫC"t+x<@PDŝr2ѷa5 -53Z S9 \ aH% g}"#nY." YW(v],J9xb)q |STRAdNaz~7"#ݧdN!!3_C-peF_Y;XKYPd8X}ܪ\SH4*:l[m؂/ZBtA}"?պ8{$Q"lIR}^#a]X~cIZ$cO|=)qVa0 C~O tn^<X afiȲ6XN [}{=^7!Zb%r]M;qN1fԬ˲X ;_ėoIcBKYp<wH,\Q[hZkخII.t uz_'Ԅ1B wwwL!jQN[h`gZ\wl߀EؔAC[yyhMJ,Ɗ,cs1l#FSZbιR}] cjY [迨y!<:L-"^V9 qrO @Rugfԑe 6z!\شD,A-B k Y$a, 021l4!124tjsׄHɐ+\ gΞkpW N&XX!NJ¸T1+%-ġ q~l {rp/D֛zܗBs0t|e;.cՂ5] _X]Gav9S;:Vz+^Z!#'/ZU]$ީl BXʦka,FIF8qϾ!4WB)uFHnj+a67[~WKM rOm[N=&[BKo %Q1t{DQH>7ر T{"WQсri?pU;+Cצ+Ex`qiGwVu}ov_XXw돵j !^V(aC7CG*)O|WP"-ӽ !:WD\-GY}jcb DDp!uc[ ]8"w zn#l|K;1wϯdk-l>OMbf+69Z 2q">4wU. ]f?N\#d BM(4^1.W.LWA= ܽ{勗.Th Zkz3y ku'nlZHdTpP[)r !һ[4My‰&1Z0Fo[^9hj@p"FY?_-߬Ds@rbnK91ƸY~_~uDr$8!HX12)Li}o w?=X$y,%1ͭXx9J%LH C9|Zj)OBMXZ@ұ닻w~ nd 9zF "q"Qi"\Ov hc-c՞qm۶lM\ Ԯ @5#P([6Ν;"6( ZZv<-ia0?d)pXs oQo3B(zUz*d>L`D;# /ҷn-aD`lML UKz JaZ B%,|x:?*nW" NHGT,@[ᦙ$03D( +Vؕ|'ْ3F#=B ^͔WŞGkaaf)vT3) hiLUh3 Wk1U+9ˎuj[?DlU7Uµk]Ȧ+XvY~71HpK5 j;AI&=(vVW)kmV8*t]ߞ&nq8eeap0ep~\#gA*|&!KV,#=OŤ#(eʎ@w%D7%1nZiLpl+nvǰ_K6Z=j܉>~N 3ˀe@lz >\} rFʿ0/}at?^5](m-@x^~) YS$3d@ {r}g` )"8L3 E˅)$jAG9e⶧&I%԰$6f!;pۏY̒r$֬De3|d?h_h()4K"BQZUhfq 3gKy:δ)tjQ^)EQCB8^\[;q(U^xNII '- P{9Ԏ֏Q_pD} S}R`m~w\ave-&6f2N7 ,b8ZD"Pj3XIHUٲ<1X,oQ.K,_T=bI][|zL_$J GZ|@Im)<(#XQd)H%DmL11N&DW0q"PhGNiW=u$ t!E*޷>YzC4ʛCkzן  5 \M۝%ʘpDn0X8svd1Y?|?\ }s[fˮnn.bn-2 lc#Ntaө"HFp~~#"<2<#~-L|BеP'ko+P?N#=q2!@fr1 ^ml~(- ъ;F4 R$ ճev9O܈l%Kd6]o=$K.UWj?s2p !hVډ6im!BPQF(I p2z&9K!U.iB!fnBA:CČQU2YP@*b3d=3AQDŽuphBdddr?{kɟz¹GHJK>JU,PL&dsDp77m 2`N"Ea 뿂wo_| *A;=BNȜ" L2(Y@c&8rͳy:\PS<}vj=Y_\nJ,L=Щҷ </+7>s+߿y+Wn^]?d$P]UO,}"%R)+ iC{kIGiq,IF=NDd,( c4h 7Mju;6iDFU]nUKZ&U@x㋖wn_ʝ;7/ߴܿyc|vg޼ś?؝_ ()j0OiZVHb0$󁴉I9i6+C3CRVh42fl!7+GDuP%7PTL,.e{[PwFO?xc+{wnݹs7nܸɝ>6v^dpn<Opx ␃OV5I xPţ;BqIDO@ ǝ K<xM8y%Gp{yDx_kE)|(w>tΝ w/ܽG7>!/ .^c?~ƥ59n W#p}Q7>Yn"N*Q5U½5QODWGG=p "k5ZH5! )(x*BP a<4$iF@*gɬ=FNK'mHegzNsozF%$Y,g@Ha< rc0LEa#ƴiUѠLPH?E/ SXhdr%Bm}CPVDȿhW47<%S JDEPCZjO_s̬j2}Šdtr2'jr_00OaƝ&>BQ>VaDʧg:QB,wrv|bmv[$|t1˦!s))u݆u};KTB.L!tu"\r3~p˒HGư!}:ECyXi |՞1<ړy=i"_ct! W"NL!$7rQ#h!j"Q)Nh%5EZr !!I/VZQ(L҂1d%]c2F0È{D#AT%FR YEG"׼T P Giu)DX鞚FL~5^*zw鼀^H'f B*$>SK! 4\D 00ZkCkיd'^写"LCD$RE,ի7nUB`yN#U2Go5]XM!0(5(s<026 SkF-c2f-i+ҩԖhvckd2=0_廦?g/ KX1ȲzSPӡI{9(B)y兤A+L$ Βk 5<]ѥLe^io@z. g/v_<{vn~_8+9Cٗyy|!xlo4-u2 6jyt!%m^Go9WE̾Ux \K]/wD/=Cv_=C({>/Q|%x6ku=ΠNCHDMMJӦTɚ&(4uM9V9#_ڔpj.`L|M@(8© Wdhs|n6`k B᝹Qt|cj賗[.ZD޽ϞG<v:ǑGGCGq8#q^ QGT -6B1ߌYFgLެW bHid+cb`j FbDZ}+hhy5hF{ϼlѯ?߳G{)G;th338H포v+“d ((\BXT`STd2 4_(EIĢ:z_~:`{T^haܳukqaE?_%=xg[zA%ӳg3ѽPXNjGA H4@ ~p^ q8Y/tlD)'MtJv-HBa5P_z:iăeWev) ~5/y:9ܿ35uD-ϖK,+;!9"!)ϛx/("DqΝw 5WDJ^Sם:t.i0ƾm9t{;=V|µm]ia{8a{xiç[=Tң8j>?x\ڶ>X>z<"Hb rZV8q@j4VᬼC^Q`Lf>:./Œt!O\+.GU6-HWnv_x{B-ѝ#45 g/wwgKdy=۱Fn"QTrEߡpg Պ)p\#BrvqzL1Wkx!PfSvoKVުeK#zR8BuѶy85?>}ZUS "ܫkgY;v\#so_hwmUt=F0| GPGIgj IyÜ ^/NZ;X˖Xoq6iIJ-E|j}~ӂr1XGmې6e[TMI&Eᮾgy Bp}ή{G ל:]T'dGM sL8{1%sLrd(:1 <;tԦIcL,ijn&:{*gL}‹]hI(_]^VDgEHܷ~_X Ő\VP2ʪ b IFcD) 5C+&VS$A P1,#_f@aIEXLrEm$뛉mdy$M¶)t,hx7%[V,^GQ汏bO@@ 1XTEx 8IP- A^-CG6D&d~ jp*5qG/rr9񍮃zQ=:'8O.\WgtvrCvRNՄmv666Du?ķL7}CEzx%nwHr$78ϵjnYni췬B\G Uaa2G2tl\(uPP+㪉'F9hBջ۽Ҙf4 @Ha I 72濑Q"BP#¬2X R B%FWn5^MQؤ(wtwnlҮ~ -+BOevAȍ:Q8hz! -n*ʈ(WnjaQ~'PO?Uc/ 5i6PFj\`i!51buJh4%K0^/Z~Ԉh*wvţ̐gMT]^CVjkhWHEz/Aw X)O(|F{җ33q 6ݒENjf5:f:xyS"R zyQd5Ȧd #|f5wݻNjz1),v Iۋ[{]{#<\DjvKZ]BpU+h*87O/cӞCF:Wr3zǤƆ~(Jguڀ,OhƬNd{"RT'J\l٧OogG_:X]ۂ`]ϛw[PBN<$NH]󋓶EmaqkwB%;62drβ6+LaƭҺig19 gL'OLBVT4eOZ 4`P{ʽ Zoxavqvdy Ҷ62XhA?R( :E*tn QlSI%nTB}mRq#)zxhXEVBr%YX &Gl8˶ ~IapPx5ÑCȡ߳bevdv{޺i\roaYiw)khB]/x"&m -"e! B]r\2DEskESfh9YAFN>Js>EçֹOm[?}iM']{4$C_+֍z^K9m8 Sl5c1`EzKz TrK" |)JADR2[PGBhF:\Og>MHXU &GG}SQN t CG@ B zW_7 HZ u#%̪-( @l-D*w*myҒ#ΐՐ;R^Q`]hi)O-ޙM>9|IxhΨkEF?5om?:dX_ņ;MMuT&5ſO|8|ڵkw:>z΍w\t:(F j4 ɫƬbcX؈}TfU싟s B)C]T{PJS{8^m^vv+.r^Kw?gc7.]ta`fѠHH{!e|0Qb$![0?b:9URkm/޼s^o;.#/w]{.X8$ 0̗LM^ |Љ} R[nSX'U@GPX8yTMƑ Nv?$8SE*EkgyDEo6!|򧙿/o1?7/}zO߽~ꥱO/^إOՔD쌛jg*͛~=.Rk2qn\MGMM$d4ZVNQF}t:MOH|Y!B\%Z]h:B0Fǥ?rƅ ~K\y7:>?HZKT)lWz~mA/#j,XG(h&QhF(3Z;P[A YM5mD1ٔ jkZI+D^j9,Vz5SFZy"֑nt/[ǥs"~s=!@.Q eaŒhYH(, aCR~>RЕrZvg.-<Ly+!Ds)}ʍ|Z5t{,f؃t,^H"mr)N=qK{F+ ՟7q6!G?n:Jؽ jy=u4C`mz 21ɠppʳ!wR`ǚN} 'I, 6XՉ*T` 1)N_ܖ/_I6It(S&KAQF5rzPKkdV(x"q?[t{"l I %ՏUζ~S=*-JFUq͆$N~7g)Nj$6Q\j1 p)[**O$HI*=C"u-M1ґq:ttئ_:]V/, Y6䌐`ߦC ;=Gfy~a0Jo懈*gw$/lM2KGgd`hxҹ-F P~i>޶,_SߢtX<=% ϓ59#y$HG/{2Z ‘~dӹ1>{}.5 !(#d$ks1%F) k}Sf/+'";2Yַ&EGA'ӣaT:K9)%[#p7!/h-ݫ"fD7W 5"e}).6tM6Pp+)SV$9"V8wK+LcX)iNL^w@V_3"MF.RE\`~S%i ٠[RϿ2eCQpFAB|Vsn:|i 9вk̮A`yK^>38BGe%6&鼷he KKHYy(1_1˺D1f˧ƃe.j5=4V;PZwLl,Zu9ko=BЌ{j]YRyMр3Ş8(KDoj}Ɲ\Qpiz^|b`~3;Sg&BD"IPp ClDCl^*Lʑd kH9,G˨deӨ3P>T!nr5D 2:gt  # *Ғ=˚=/+VfWGEܨ8NzÎ;Rhy~)&.Ci]1GPGD٣av53*:[/ͻA Uu>4JiV(24"3aN"51·:q8,<$" ָ pC$H l;ɴ|&P$xaay0P.&K>A JZ_ ODʍʷDŽ[?k;ߏ0GSsáxJi^؟&\8=6~~!$NᰆLxcNn%E@q5uS,q\!I0E4akE+X -H!K7 !hy)*b1ys :_SX!_eUT n!c-r vÛ~0wDT)7gAjDZ] )9s&˳kNrQ#i53@EuΈvFjи٬.RᅎZA}نuja)fDqJ+ (ԛEDN(2D+$(ȄB _ӣFpÌеG"Z)XX\w2t|*ub^ʠ)lOPEVsaÍţI ,-m2mk\o_?-`|eYxns!aKm|vkQm&Veߤ( ϑ½{?7??{o)s==ѧǏyهZY GU(FmsmG#Us1Aw(reyֻ{sECσWJF,?pQKa>ԩ8z&fa~]0;T חfG<۳|ųpd姓%-E(7㞩^?ܦ4uY+q~](oU)}^\~1ty0?<xi6K<K fsdy˺X1 Y֮abUFLOt?Y2p}:;.]jۄ6o|owN`?wD tv}rwwR>oeީZ^d􉚊,[a^:eZ_pבَv߿Bz΅ze~Ջ[$ҋQ 2(IUz!?v7?dp+7::o߸866^yWn~/=  QkRBc]plӟ~~|\K~<7z퀭׻Fx)pp|Nm Bl7b㫃c7>\{\.޾ }x6gޘ.!nРB5IvإKW?'w::.޾>qKc]s=³,ȷΎ2Å#| >f!AAp/_OvFOXG9?9\@Vk=BzuP O[:y 7+ ҶgBMnm)0 ۡ " F _MAn!Ҫb)_ Y' 6^fgW2)h54mQ) 9s$*| sn8Q{߱* ECGזZ&P3QMHL\eGAveZM[r&$e= VAWZ>#v V3AN€ ЧW\߰ Z͢၉q{uOc}xBQɛ~ $ݡ+ۑK3tITD|/l~LE-dgiMhMeZB.=:ݕm0g.-"3{!ճ^Z% L5i_94Zc3^!MRЫL5bIGڿ鈹q/"fPlU#NXmXCUmyu:\(kbC|FMjbTu4:/LH:HBJjv*T*QITm[ !aFp,JdB! "X%KaJA% qzPi7F~:9hhEu2ҹZ|r9ѫi#(y[MhBi0Lڲ%{^laQX6xGz84=ijôVIPKoh'CG|=ti/eMju&41)7YsQuFSV?F8o`?ݼ_I]k-چxASPˋ?G[¾!M-/3mѹ}Om.!\4Clά" k[<(nh.+M&D&$ d^ZZHLIPCp0VP4UcmQg #|DڰIWZ kEZ *[ZYt6aRI_@'/ż|":G2&0 R󺡃ZL[F󺰐+i2ó:h|Xoȸb'3ֲ-%Y*Bnwyc866Q-h0}ݷi5=˄Huҫ"Ldsv[9сźK;-~0kTߨV𛷻8i`lSSdr^- " $U΂ž, wT9P٥a.[zwaԓ zͼZ> *rkf.M-F2dA%i=5f~B%!&ybe0* 5 ?ෘԨpnT;=D9uaX-ǫ]E]_W!kCOْnH H ⴼȯ̏BUK|Ӯ&Ts]a $MGRKڡNSV  tMðC`[W`a a2'9 ^OIJӉ$dI:r{sҵ3rU!06̱ -h7W aFհx"dHc:dВn0(5WFhwro>ѻmF̏EE",i8{(o jؐ^4|auR|;-FT8D0Fx4uBbKsid,kӳdY)e*G&ӃFcS'  C?ܙ`EѻrvR{>o"ُDsyy6B;גY4 EVk`cIGen ǫ 3_Ώ䳾3 QJKJğ3=H}8xMu5F31sՕKɤ5d)Sƺfwrք:Ww81nB *34}vp ɧrJĐ,=i {4@mih2uvim"k'ӓ5z38/v]CJ/7Ago8f1HNd~w +"<﻾+pe4Z 9Vw.YM?yRANǽF᰸<[Qfa0\ xTXRá.?5:3^ ia1i< nq|e+^Y"!lH I, 0avCyAP^9=* oOX//jsSr;]p)4?J@v&rq79Gu{kw'Xlb- @ѕc嵺RsPa)?KSj'b"O8x8\9 d u]]VĪPF1g6n`ܐB,\fH :K-Vο'IVX , ÛOsRPV!yt{s!` b>A#lPVZa-4N|:s3@!)A[K1hb-`[/ApVX 3v}Awq)I k:ls!>A@.MJepZa={w7m(A@$sM!DNAA9GBI|XW#U8b5 Ry.Nx8[cgvI ݀\*d ⵀ<}"%sif$M ԡP \I{mwȑ (;3$I;9 %RQrg[ 0QԢP0o,k|pc3DJ^ ϣ9OR`er#+ ȧO.$spYu(va ?bZ1!S[.E$#%/*աPc7W~I(,#htx v϶}i50U/v´ZVj ^>kKicXGG}Ӕ7rj}Si ;˨˾\Y^zŗH{?-~T޹ aICy)i]!n"@sp0HTB ̣@ Q4 V#k n,B, VÏ%*Kglzr ѝB$LES r*8 \<KNi' Әcz 쳞wg&;ǬgC_ c2[xwS-oC`SL`-Q&.<4<譖i=?FN0AYk.N5d qChEqѸ ֹTB6qd?#ZMy1/){۠ wCx ;T>6( Z!MN0g ],/ 5Ȱ*cP+%Ɣ4ݗwgƮhhY q -齼:Xx_.~5v05ğf-|mޒodF b7IENDB`db/login/themes/original/jquery/images/ui-bg_glass_75_dadada_1x400.png000064400000000176151502156020021446 0ustar00PNG  IHDRDEIDATxczh 013101f3101v013101e3131`b!Q4r fhIENDB`db/login/themes/original/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png000064400000000171151502156020021243 0ustar00PNG  IHDRD@IDAT8cz0Fя &F&UL{/01~eb fA L £!6AD%`IENDB`db/login/themes/original/jquery/images/ui-bg_glass_95_fef1ec_1x400.png000064400000000271151502156020021377 0ustar00PNG  IHDRAIDATx! AQF}3'Y4=Nl3r$G)EOpqz׎  9yVE]M1+Shi04tRS6-}x7./d t0u&Z*FJڱ< N_%,`IENDB`db/login/themes/original/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png000064400000000172151502156020023251 0ustar00PNG  IHDRd2AIDATxcz|.{&{_'04ӿ3  sIJ4=pG&a!IENDB`db/login/themes/original/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png000064400000000267151502156020021407 0ustar00PNG  IHDRA~IDATxbs'@;tiaqM[1 qv =v B.U▶~,u!؄(ҳm_v`a s12C!JmveAB<NIENDB`db/login/themes/original/jquery/images/ui-icons_2e83ff_256x240.png000064400000007265151502156020020450 0ustar00PNG  IHDRIJPLTE..........................................................................................oZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/original/jquery/images/ui-icons_cd0a0a_256x240.png000064400000007265151502156020020503 0ustar00PNG  IHDRIJPLTE 4vZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/original/jquery/images/ui-icons_888888_256x240.png000064400000007265151502156020020252 0ustar00PNG  IHDRIJPLTEDjZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/original/jquery/images/ui-icons_454545_256x240.png000064400000007265151502156020020225 0ustar00PNG  IHDRIJPLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEkOZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/original/jquery/images/ui-bg_glass_65_ffffff_1x400.png000064400000000111151502156020021457 0ustar00PNG  IHDRG#7vIDATxchG(hoIENDB`db/login/themes/original/jquery/images/ui-icons_222222_256x240.png000064400000007265151502156020020206 0ustar00PNG  IHDRIJPLTE""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""FgZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/original/jquery/jquery-ui.css000064400000107326151502156020015323 0ustar00/*! jQuery UI - v1.12.1 - 2016-12-21 * http://jqueryui.com * Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=smoothness&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=2e83ff&fcHighlight=363636&borderColorHighlight=fcefa1&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=fbf9ee&iconColorActive=454545&fcActive=212121&borderColorActive=aaaaaa&bgImgOpacityActive=65&bgTextureActive=glass&bgColorActive=ffffff&iconColorHover=454545&fcHover=212121&borderColorHover=999999&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=dadada&iconColorDefault=888888&fcDefault=555555&borderColorDefault=d3d3d3&bgImgOpacityDefault=75&bgTextureDefault=glass&bgColorDefault=e6e6e6&iconColorContent=222222&fcContent=222222&borderColorContent=aaaaaa&bgImgOpacityContent=75&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=222222&fcHeader=222222&borderColorHeader=aaaaaa&bgImgOpacityHeader=75&bgTextureHeader=highlight_soft&bgColorHeader=cccccc&cornerRadius=4px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; pointer-events: none; } /* Icons ----------------------------------*/ .ui-icon { display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } .ui-widget-icon-block { left: 50%; margin-left: -8px; display: block; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: 0; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { margin: 0; cursor: pointer; /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-item-wrapper { position: relative; padding: 3px 1em 3px .4em; } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item-wrapper { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* Support: IE <= 11 */ overflow: visible; } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2em; box-sizing: border-box; text-indent: -9999px; white-space: nowrap; } /* no icon support for input elements */ input.ui-button.ui-button-icon-only { text-indent: 0; } /* button icon element(s) */ .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; } .ui-button.ui-icon-notext .ui-icon { padding: 0; width: 2.1em; height: 2.1em; text-indent: -9999px; white-space: nowrap; } input.ui-button.ui-icon-notext .ui-icon { width: auto; height: auto; text-indent: 0; white-space: normal; padding: .4em 1em; } /* workarounds */ /* Support: Firefox 5 - 40 */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .ui-controlgroup { vertical-align: middle; display: inline-block; } .ui-controlgroup > .ui-controlgroup-item { float: left; margin-left: 0; margin-right: 0; } .ui-controlgroup > .ui-controlgroup-item:focus, .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { z-index: 9999; } .ui-controlgroup-vertical > .ui-controlgroup-item { display: block; float: none; width: 100%; margin-top: 0; margin-bottom: 0; text-align: left; } .ui-controlgroup-vertical .ui-controlgroup-item { box-sizing: border-box; } .ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } .ui-controlgroup .ui-controlgroup-label span { font-size: 80%; } .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { border-left: none; } .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { border-top: none; } .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { border-right: none; } .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { border-bottom: none; } /* Spinner specific style fixes */ .ui-controlgroup-vertical .ui-spinner-input { /* Support: IE8 only, Android < 4.4 only */ width: 75%; width: calc( 100% - 2.4em ); } .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { border-top-style: solid; } .ui-checkboxradio-label .ui-icon-background { box-shadow: inset 1px 1px 1px #ccc; border-radius: .12em; border: none; } .ui-checkboxradio-radio-label .ui-icon-background { width: 16px; height: 16px; border-radius: 1em; overflow: visible; border: none; } .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { background-image: none; width: 8px; height: 8px; border-width: 4px; border-style: solid; } .ui-checkboxradio-disabled { pointer-events: none; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } /* Icons */ .ui-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; left: .5em; top: .3em; } .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-n { height: 2px; top: 0; } .ui-dialog .ui-resizable-e { width: 2px; right: 0; } .ui-dialog .ui-resizable-s { height: 2px; bottom: 0; } .ui-dialog .ui-resizable-w { width: 2px; left: 0; } .ui-dialog .ui-resizable-se, .ui-dialog .ui-resizable-sw, .ui-dialog .ui-resizable-ne, .ui-dialog .ui-resizable-nw { width: 7px; height: 7px; } .ui-dialog .ui-resizable-se { right: 0; bottom: 0; } .ui-dialog .ui-resizable-sw { left: 0; bottom: 0; } .ui-dialog .ui-resizable-ne { right: 0; top: 0; } .ui-dialog .ui-resizable-nw { left: 0; top: 0; } .ui-draggable .ui-dialog-titlebar { cursor: move; } .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-text { display: block; margin-right: 20px; overflow: hidden; text-overflow: ellipsis; } .ui-selectmenu-button.ui-button { text-align: left; white-space: nowrap; width: 14em; } .ui-selectmenu-icon.ui-icon { float: right; margin-top: 0; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 2em; } .ui-spinner-button { width: 1.6em; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top-style: none; border-bottom-style: none; border-right-style: none; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; } body .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .ui-widget.ui-widget-content { border: 1px solid #d3d3d3; } .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, /* We use html here because we need a greater specificity to make sure disabled works properly when clicked or hovered */ html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { border: 1px solid #d3d3d3; background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color: #555555; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus { border: 1px solid #999999; background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited, a.ui-button:hover, a.ui-button:focus { color: #212121; text-decoration: none; } .ui-visual-focus { box-shadow: 0 0 3px 1px rgb(94, 158, 214); } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border: 1px solid #aaaaaa; background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-icon-background, .ui-state-active .ui-icon-background { border: #aaaaaa; background-color: #212121; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; color: #363636; } .ui-state-checked { border: 1px solid #fcefa1; background: #fbf9ee; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; color: #cd0a0a; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-button:hover .ui-icon, .ui-button:focus .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-active .ui-icon, .ui-button:active .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-highlight .ui-icon, .ui-button .ui-state-highlight.ui-icon { background-image: url("images/ui-icons_2e83ff_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cd0a0a_256x240.png"); } .ui-button .ui-icon { background-image: url("images/ui-icons_888888_256x240.png"); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-caret-1-n { background-position: 0 0; } .ui-icon-caret-1-ne { background-position: -16px 0; } .ui-icon-caret-1-e { background-position: -32px 0; } .ui-icon-caret-1-se { background-position: -48px 0; } .ui-icon-caret-1-s { background-position: -65px 0; } .ui-icon-caret-1-sw { background-position: -80px 0; } .ui-icon-caret-1-w { background-position: -96px 0; } .ui-icon-caret-1-nw { background-position: -112px 0; } .ui-icon-caret-2-n-s { background-position: -128px 0; } .ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 4px; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 4px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { -webkit-box-shadow: -8px -8px 8px #aaaaaa; box-shadow: -8px -8px 8px #aaaaaa; } db/login/themes/svg_gradient.php000064400000003005151502156020012706 0ustar00 array('regexp' => '/^[a-z0-9]+$/i')); $color = filter_input(INPUT_GET, $get_name, FILTER_VALIDATE_REGEXP, $opts); if (preg_match('/^[a-f0-9]{6}$/', $color)) { return '#' . $color; } return $color ? $color : $default; } $from = PMA_gradientGetColor('from', 'white'); $to = PMA_gradientGetColor('to', 'blank'); echo ''; ?> db/login/themes/pmahomme/img/b_print.png000064400000001177151502156020014253 0ustar00PNG  IHDRaFIDATxSA}3նmAm7mDkǠ*ԶEw&٫N/>dHlۆӫ3)P)iA]tcUy3sdUORwX}*իW Ʀ]`2x!O4IykM@ 6@IJHqHi, &%lٲElʗ,1^%}'@$b͟?_#@@H Bv!P)6(_N=ӦMP<~{ǎ[R !K'6!D0&8JVXQy{G5l޼ɓ;שSV\7o //m1ameɓ'U(gϞm!8E>|C ۷oѳgO1D2 ޽caLӈb( *Uu,|D"dP]A4;wTJ(_(wԩXϽ3"RB]PVmو#G۷o, .\uź=Ȉg ˶a6 = vlGN5%F)w !0 ڿ/s_r[4D/IENDB`db/login/themes/pmahomme/img/s_fulltext.png000064400000000260151502156020014777 0ustar00PNG  IHDR2 PLTEgt3d\_tRNS@fUIDATxcp^֪U&*T 1 $1N0P54t%< LȡC5>8C _ IENDB`db/login/themes/pmahomme/img/b_view.png000064400000001032151502156020014057 0ustar00PNG  IHDRh6tRNSnIDATxl3_AME}T ضٶm۶mo7.!B>=9D.]ga;<:dȽeWjW> ۔EQ;\L8{iWVFsAiȩ_xCW̛Tmƶ d]a]Tƶ*iݵ;q) 0ڼ_Kƶl=V3@|ũڸQ<~;KpwN|6r >է 0{kCRŸos1Nף!kM#Nh3mJ[ ܫ͋c۱}NۢZ>?oէ 0ؖ|7>M;on㨞r" ʯ }IENDB`db/login/themes/pmahomme/img/s_host.png000064400000001117151502156020014107 0ustar00PNG  IHDRaIDATx|S3\Q=}k{hb[e baFض5wy:x<>7;v*s-//oNZZ&"BRN~~Ν;T(@rQQQeVV=+"D޻w/H$Rc}62~%&\j4҂ @A~.N?=ҝL|[˒#ϟXh \ӖOn0*]a~A!lۆ%MlVƱG6s`348N ;oLYqnAIE4+gw<؊?LaK2,O&0 W@A17vr'a9C^0+Ք %Ū}PT߈ےA.AYF@Ƶ7`y\G$]F^P[]VYi1My%"2mࡣ< ><=;<9 ><><9<:):7nm*7IF IFCAQEBA?=:{<:M=:#!" P" {$"$" M IFIF9JGLIGD@>=;;8*po%#1#!$"*(,*$"7SP SPNKQNLROUSQNJHDB><=:K>;+))'N)',*1/7586.,$"!M SPSP9SQUSZX_][YVSMJB@><<:/us-+6+)-+75?=DBEC86,*$"7SPTQ6VSWU\Za_b_a^XVLJEC@=>;I?<412/L1/4198ECLKKIFD97-+%#4URWT,XUYV][b_gekjdbXVNKDA?=>;4SPQO64;4163>;GETSZYPOEC86-+&$ *XU XUXU_YV\Y_]dbjhhfc`YWNKFDA>=:`;8a:8<9B?KISRXVWUJI?=42+)(&[!! XUXUXU%YVFZW[Y_]ebifmjfcZWOMEC?==;?=FDOM[Y_]WUMLA?64/,)'D+(#!!YV YVYV^YW]Z`^fclijgda\ZUSPNNLPNUSZX^]\[QOFD;920/-Y)&)& YVYVYV'YWJ[X\Za^fcjgmkljjghefdfdgddb][TRIG><751/H20$)&)&ZW ZWZW]ZX][a_hfqnqnliifheifljhfZXMKCA;975X1/1/ ZWZWZW(ZXN\Y][fcroolb_\Y[X`]jhhfUSGE@=;8L;9%1/1/[X \Y\Yq\Yecspol`]XUWT]ZjhhfSQDB?=k<9;8 \Y^[]Zf\Yfcuqqnb_[XYV_\ljjgSQDAA>_>; <9caa^;`]`]ifwturifdab_fdpnljWUIFDBA?9CAecLdaebhepmzw{xvssprospuspn`^SPJGDAC@Gkiig6hfheliqnvs{x{xxuvsurururqohf^\SPIGECB@4DAmjNkimjpmur|x|xyvtqmkigheifmjompnlj`]TQKIDBDAIropm1pmolspxu|y~}zvrnkfda__]a^fclisqtqjh`]TQJGFCCA/ECspProtqvs{x~}~{xuqnjgdba^q_\q_\b_fdmjqoronka^USLJFCGDJurur tqyspwt{x}{xtqmjhedbLa^$_\$^[Q_\b_gemktrvslia_URKHIFwIFIF ur urvsvszw}z}~{wtrolijgXhe%a_`^^[(^[[`]c`genlrprpomb_VSOLIFDIF!vs vswtvxu{x~{||zwtqpmmjHkhkh_\ _\_\N`]c`hfnluswujg]ZROIF`IF/ZXvsvs vs<9/,+)@>KI0.AXU+ZWdapoXUA?=:8641FDbaIG.,!+YV+ZXebspYWB@=;OLgfOM53)&+ZW+[YfcsqroommkVT><1/+[X+\ZxuXUVSqoGE;8+`]\Y|x]ZZWusEB@>hfebol}}z{xxv][FCA?pmmjvsurca_\lizx_\GDB@ursp|y{xkhb`+^[+`]mk|y`^HEC@vsyv}}spkh+_\+a^nl}{a^IFoDAvsyvxuqn+`]+c`igSPNL)vsvs+a^+\ZoXU>b_ db/login/themes/pmahomme/img/b_dbstatistics.png000064400000000701151502156020015607 0ustar00PNG  IHDRh6tRNS7X}vIDATx%Qߺ Rk?Fh'Fn=be|wtDDMˏpbb`K`džA<=x?i165C"CUwwN ų%ZYy%{| v'ឝ~ v2SjfbZ6m!F`HXע`1ch1Qʬݨܙ@ZDfZ$4hp`Q)+ݠ3纘)+25}(ZMmOҐE 4 DCIf h6|ʒdi= c=m@ra:sMUv_ZzRVcކqS07?m@SbIENDB`db/login/themes/pmahomme/img/b_bookmark.png000064400000001175151502156020014722 0ustar00PNG  IHDRaDIDATxm7I=mm.vζl}mZL뛗z'תzQ{n|˓2Cs=A^|io^8 Op+'6mns0|ʉKp|PAagٱ缛Q90vsNNtE@y90oOElY9LVwĚ~1ltL1*1:I1.r Eީ$l$Ị}rA;a؈F#Zq(&4u@c֤|TB y^8R2hc1!іdX\$&4C8֮y#ʥڋXN8#7;p~8턳8xc>7&{3NdY25ldpViή @! KCF jgn`Y(v|QA䧂:F8Q؃p=*dž }W͜.qi^ GCdFΘ A2| $`+(jȚ!_H4|4f1Ɲێmۮ'qs`30bDfm8IYـm=Vuڸṕ1ZL_SRVQE5<rIENDB`db/login/themes/pmahomme/img/north-mini.png000064400000000502151502156020014671 0ustar00PNG  IHDRVΎW IDATxd@*E() l0t!3g`0`A0 ,ɽGf}!wqhySqPeuƌiBoTݝH!9SBD L2aK5heYa2ta n:$Y N0n1[ e̓ yAi~D0|~87AР U%a[Q|a4 !SnhAI)1vhnЩVACߢ8s=|IENDB`db/login/themes/pmahomme/img/col_pointer.png000064400000000146151502156020015126 0ustar00PNG  IHDR tRNSv8IDATxc` e06@X06N"׃'IENDB`db/login/themes/pmahomme/img/b_sqldoc.png000064400000000220151502156020014370 0ustar00PNG  IHDRaWIDATxA NԆQKl8| 䂪skm F`VG Gud0[}> `IENDB`db/login/themes/pmahomme/img/b_save.png000064400000001043151502156020014045 0ustar00PNG  IHDRaIDATxb4S(t`/,8m[C60{C9Mqj֔=d]{n_ XB4ѐ&rts:#`ʼ.d?#$M|w> /~C *^BA_8)IM :`՗u2\L)-Y j MtOA0-hTRzS(̪w)M~%5L1R (A^Rk"VYe5J]e&^AI!3QI}"(/(: * (hRJ jK@DELDKS$@Z lι j. p_8uϛi22 Sk#?dKZH- '?.GkDu޼;op޷X{Ť5N|ru+pOtUHT0EQ%~!|n7%M&IENDB`db/login/themes/pmahomme/img/b_docsql.png000064400000000205151502156020014373 0ustar00PNG  IHDRaLIDATx 0߁=]O#" =\ "JOH2x;/U &4 I8IENDB`db/login/themes/pmahomme/img/b_newdb.png000064400000001111151502156020014202 0ustar00PNG  IHDRaIDATxb@:5D:۶}Qm ۸ jێS j۶o%7,fG] zr` ؕ8P_HQݻw @8xkbbbUJJ 70x j9Z߫W`ȑ#'_~߼yӿ}O d $~8Z P* App0 fAg[2\.^9<L&N'M2+`c&H7=^pH$l, J9;?R^s]Xn`[v_6۳~Lvn=1Z6BOrrfai1ү0Evv^{s 5%JNmč A*_%khLJ($Z:V ? % xl‡Ul5 ƵYyG!DI7nڴ)M"r?}]4j”Z,K4m{w 4Z #xVmm]4|$<IENDB`db/login/themes/pmahomme/img/s_lock.png000064400000001233151502156020014061 0ustar00PNG  IHDRabIDATxm5t$GEo,333d̑C幙bffif ;u#=GmtUYkoo&x4GcLMee4˴^ ڿ͛71aLXdhhz91,yĉJ)A$Iك9]~ 1s/۷֚֩KW!PJ) s 7<---Cu~ڣG"{쒚mocdN҅=v׊7ic&rC~#5֖w<3%'(#^p$f5R rxg$3;R v UYr(8I1qD75t~>{jY{l=s8"-Yq(d! `Y*0_!/\Q*d u7vΕ%PmQ+?ǵOz25P7?6Av#$0Nal=3ŦÛZ2!w$A8΂*0%_P%ZX tk`;pP/JBKIENDB`db/login/themes/pmahomme/img/b_plus.png000064400000000217151502156020014074 0ustar00PNG  IHDRaVIDATxc,pV\|5EK 05dA@xЄSlp DU&$F 3" q-+MIENDB`db/login/themes/pmahomme/img/bd_export.png000064400000000664151502156020014604 0ustar00PNG  IHDRa{IDATxb,N QS ((5 TT*Rh}D|=('JЄ!m}:9Be9ڨ=5)\M'7- z2`zDaJ}8N!IS`A6xz|DʃωsG#U]FL3`022bx/E ϟܹs'O $ `ffbcc.]M-@4g]׳C|kZ9W?ӕ͵ˁȀt~HHhֽ :C]CiR:oNj@ 3j98^Y!x?̵` ȳ  jdcU&U0t10vhI :;DnY@,o}*1FӢmPeJϷD>oy\F,0ʢ@m]z:U1yAҗ%rz_,Zg}jA*<Ƅ!&u9مm91yH͹6r@ ODskMx[BrQ'Bn]tj٨ CQ\ ČM2I#B*ھ[-'GB^7z?0XR j-"G+W3!W ~D0yjN?3 oLs[k*;QQŃQ sO}p}湻nV P[*C FIdHeu/=0zijafDR)5{b]d0 055ŵa!U`?~t iu'?F7gtK!kttIȉ驮[-̈$[7[5bUaqISZ>a-GV2~EK+(?VkY-7m1 )*QZA඄ 5 02.ScqƂJBcuMZ[0ۖlF/E-)1ˎS8×ax?+0F\R;Ea0歜SEw ]IENDB`db/login/themes/pmahomme/img/b_home.png000064400000001336151502156020014044 0ustar00PNG  IHDRaIDATxR3mW}_۶ͱm<ۈƶm۶mwwc)\,}QbW;E?+'x'^zv^y_*Shlxl/;  Կ✤jA0&B>&J1CJuUST PHX>S|ѝ?ƀOhqfqqqHLL\.%ށ`h422 HKKF5Áo|O:YXh4 zmf[:H(Jdff";;$0˝NS%̒_L= EJ7(ZtSjB|X__Q~=m|e,D['zn?7uFFvF`t7g:S@oTA}1~IENDB`db/login/themes/pmahomme/img/b_pdfdoc.png000064400000000772151502156020014356 0ustar00PNG  IHDRaIDATx Q1ِۜ憬1۶ݼlSmW5}>l btdt)C;FT.Cu]5d({-[lLIr](lj5 `\˲kEQǹ$b֭)pU C[>pa@UU$ .mibΝ\'<Џ AFLyg;5(H$R\@$& 8o ϔNh$_?#2l bFy:SBNHT\;Ҟp|ŸL#}I/ŷ {6Ƿ~=sPY8 Mag"(C8ڭ0߼BdJ2C| lTg}|A jp1xOXIgp$a:Wԭ@$Iy:-[0{נ)hMVHG$9EIENDB`db/login/themes/pmahomme/img/b_relations.png000064400000000214151502156020015106 0ustar00PNG  IHDRaSIDATxc?s( \#X'DքjA'b<bJ@ . E~$7$)Ԉx0f12IENDB`db/login/themes/pmahomme/img/b_sdb.png000064400000000162151502156020013660 0ustar00PNG  IHDR 2Ͻ9IDATxc9\V8^xM;M3HP肘 5nSG/>OIENDB`db/login/themes/pmahomme/img/bd_index.png000064400000000517151502156020014367 0ustar00PNG  IHDR7IDATxσҖ7Ggщ5 lmlmwes>k-]Z0gƔqѩMKg~OhTF2N;g_3'bŢiJ)pмYʨ9m-}ӂ;&uZQ& B 7J6Zw!A]xcEK4ڭ p~Af5mPZBB".c.wHy .9C*b2Ze&tP+.}79 [z;c?IENDB`db/login/themes/pmahomme/img/designer/resize.png000064400000000151151502156020015706 0ustar00PNG  IHDR70IDATxc*` )w 0R7 h 7n,/\Yۈ?IENDB`db/login/themes/pmahomme/img/designer/page_add.png000064400000001266151502156020016141 0ustar00PNG  IHDR }IDATxbP7=)J0;m۶mĵaԶ۠۵m{so1݉'96@rʜL?fh߯mho~1lYD,Gf } j!~i,3ESb^+s>pܾ>iS=gJXEdD3iف=`9=`UƸmnizV"]S;e RÐH "^=R(kHB9(h@p="X>8`F5Bt("l($^D$F%]UD 5zYs*[an? 䐗+\{ispws?)W>٭!@2p|Kv8~A a~SLq'-YwW|~Ow{fvІ@@peJAEξǯ]B"&H IENDB`db/login/themes/pmahomme/img/designer/left_panel_butt.png000064400000000145151502156020017557 0ustar00PNG  IHDR9,IDATxUK0b*Ö$T+2^Svx !,&IENDB`db/login/themes/pmahomme/img/designer/2rightarrow.png000064400000001215151502156020016661 0ustar00PNG  IHDRaTIDATxb2/re58݊`GǎSCm۶m۶m[qmn=ZӀ'NӀG lբ3Z`>2ʍNǂ/r4MyvbH.gC+$] ςus )iЫBQHJNDOX|n;"%|M2"6!5y1BA 0[q2 OC$kUeYnL~+Qco$#o, XFFmtw k=qcQVC &ap<qAO7maV?& @[̲ Bv!PW?7@XG|^ī_r٠7PO=0T\?/կt491 ܥpز3\eohԣx0>yNg[,cː5?r3X>9_0XEtM'_eˎ:vւS2B{aG>-BG_eBMzsJhckE&A[Z*@խ]_ erDdcSĵȡ#SG~ x:STJ#449C\[; 3b-+φ+)'KLՋkmsH76+BIg\:V7R~M6 O\hPbaM/,sD2Q2rIrJ*/CD9R^bh2 mfqY&Ϧ @lG!i4p9 C-hb6+.bʈMGUo]bؿ%琭6QT C-E %|%qz6fiU7g 0U o쟻2/N l!ٳM)D& " ls@7 ʤZIENDB`db/login/themes/pmahomme/img/designer/save.png000064400000000622151502156020015346 0ustar00PNG  IHDRZtRNSnGIDATx3|kakSnTOm/m۶.N>=9>4S9c|4%3X*2\:NL' m%%-A0-v(R/~.Y%pX%`LزDE8"'*a|&FN`41D}Kއ2q\d%˰X!Ew/)q)G5i}5X<&B#J\6p/?zg<;Y70NcW`0g7M3w򈹞}8s~T1AOUl`7qra͒pzqGch&^jMIENDB`db/login/themes/pmahomme/img/designer/pdf.png000064400000001436151502156020015165 0ustar00PNG  IHDR IDATx3-6ژjcmSk۶m۶mƱmopUu&K^Imfzjouk EEpw>{2uɌM:<+x,m2ە?b,\AkM[?9yrq8m8)@bp@Fs-$у1&Hk"B{;N(褡A&x&w)8B\=|h@]MB\ = kA HP7G^Iiׁ,|ap6 ol3(el T kjO /.ag'?ԓ %BTX%E*uڟ~O|< V5d@,N wE&oeqOP>$Bt=<W$@N]Bx0gdcTTgXoЎa c\63RN1%d}> \p#|}YArL"T@r# qT 1nMIƱߙw|++f_m2 +MևWm2ڬA]|rU(u6ilS֤'$a q|MIENDB`db/login/themes/pmahomme/img/designer/downarrow1.png000064400000001237151502156020016516 0ustar00PNG  IHDR fIDATxԓQԎjcmAżem۶m۶~6Ndo{3:[z^H?Qp({AM@D!q[EiV`H[ KH?&瞵*(4>eZφŝBy`=Cv, ث=wK.U6Kx?tφa[c- gF _cΛVE{̀31c:@b7z(. ?p9pK!ufSokRh|o.‹E m( <!o CCa%~Ԏ7(Yc6ˌ _@q'x݌`));|95FhMwj# aaY=" ruӎݷ΋I,|ҐQ&3U@yљӷ&b!`z=7:I3 A@Q440{sH*c(8IENDB`db/login/themes/pmahomme/img/designer/resizeright.png000064400000000154151502156020016747 0ustar00PNG  IHDR73IDATxc06ǫ A|a4Na4Na4v#h i 1h\Y}GIENDB`db/login/themes/pmahomme/img/designer/def.png000064400000001117151502156020015146 0ustar00PNG  IHDR IDATxb("Qy[FV(Qvֶkնm۶m϶msvi[ﮓ[\o;#j*;0as4rQbR% O, ]m[kW?49i4e<=FfxǓ7|΁.R>Ѹ*ߤV֛p\zm xps'&}+N&K^^뤄kX%gSb*K2t[9AF6= 2E,}67fH ^;~ D u¥䏛E!ӱZZu!6Yک8u5J[Xݶ^9=zwW#°NM >;5naHAּ~f;.ʛ#󎆃w^&W&U7 vC˜1M^Lf|PNRhF!YFW'/٥UZܦvB])Um{r\q9_⋅D <,L<=EOYs'La'''eϳnD  6wvy{kw{)2]|?~M0q-F)$@"Ǥ,,B5_LB+kX´2 j)Q&TxSO *bZX] hc.]U R@xE_R%U񴼾IBhWtA l]>dtyq4.*x~ۈ+C4p{"f Ƣ0 `O81oɤa "` &>oqraT#IENDB`db/login/themes/pmahomme/img/designer/top_panel.png000064400000000175151502156020016374 0ustar00PNG  IHDRDIDATx|0 dUlcU3hh$xV3x;fJu?(~~>S5P@YpeVIENDB`db/login/themes/pmahomme/img/designer/8.png000064400000000121151502156020014551 0ustar00PNG  IHDR 2ϽIDATxceV\ G\ΧIENDB`db/login/themes/pmahomme/img/designer/or_icon.png000064400000001045151502156020016040 0ustar00PNG  IHDRaIDATxuqmnڶm۶ j#Ʈ_ɼfNRT3m5=Fxvűaӎ}=WfiBxvd0Ź/7vn]³#-p&ٹNwjC["gGK1x;-')o4dy  ,Lia]ZțO=C]t̵d``5竻5QzT+ǵJO',C?kUUzh FDqY ,?O[QUjtQJN.Բy~BVK's-i (52h`(4+ĜL%& T NNW2][qkӽGEP,v2a.~3_P#Gfij~uZ~) 4^_ ɇBǭkcrǻ&2,w&|95T%Φa6Lo~jf"(;cOsqY^7g$wat3U\l263)ZUrFѠӤ=k[f?7>ڸ}dˠF K(rJ&4o@W'֮g 영[@KdմuѬRM?TZ5ww\:9M}q.Tυ=kM#JCM]}4P-6^~A)EN2;&TM*H Igg{Oܹ&ɩjbL{hrY3s!%-TʦPkHJђTes{Jj^ZMe5U^ ,"O$ϘTŒho9%Pdf!54Pѩ j@@4-BF((aeop| @Q|2/!J\^ %_0Ίh]ZD/ uHZ.OvaUPы!_VZ*YrgČ=3jJ/[\Ӄ3Jkխ;<߼=^Yw7~ 8aL} bM0zP @Ӣτ飚(r}m;-7.IENDB`db/login/themes/pmahomme/img/designer/left_panel_tab.png000064400000000201151502156020017340 0ustar00PNG  IHDR gHIDATxPSƓj(τ&zCo&rqm~r>fzʽIENDB`db/login/themes/pmahomme/img/designer/favicon.ico000064400000002176151502156020016031 0ustar00 h(    RX C$     iksUsUsUi@  sssssU Դ! * *ssU  ssU  ssU  ssU  ssU * K ssU  $ ` s~jsUsUid6? sssss     ! *6?$*?????;1db/login/themes/pmahomme/img/designer/save_as.png000064400000000650151502156020016032 0ustar00PNG  IHDRW?PLTELiqxRJ~*$c뀦k_$GR!d#kD!ʳ۰|x6D*텱x$p嘶8vV"wX!d6$V tI ͪ k mxtRNS@fIDATxʃQoc۞#vO? h4Oh\/4lpx|1s?Nǂ$* fn1 ̦:\(N a;i\I #$ 0,ǼL شm{,ˎ"o= nQIENDB`db/login/themes/pmahomme/img/designer/relation.png000064400000000362151502156020016226 0ustar00PNG  IHDR IDATxc !Q*p%yrbEafV?B ەC8sm .$*1p20Kl= l0(2 0l5aZ9k(iBOf!P6Dڛ@X,3( c8;K=[֡-&IENDB`db/login/themes/pmahomme/img/designer/Header.png000064400000000167151502156020015604 0ustar00PNG  IHDRqܚ>IDATxceb,:\F|A,?ԈO+~ 5bԈQ#(1{jIENDB`db/login/themes/pmahomme/img/designer/bord.png000064400000000113151502156020015331 0ustar00PNG  IHDR9IDATxcpF8XIENDB`db/login/themes/pmahomme/img/designer/page_edit.png000064400000001367151502156020016340 0ustar00PNG  IHDR IDATxՓC,G@ϭ~ضm۶]l'ضm۶lsSU7kY65yi50"k p7 k|13bjۏ^e9kM"T :BoT~s G&7L$xՅ>WM]~~}|i^u.G\U_ĬT#Mgu"J3@r5 罫*B.eQ3/mO/d}@'y>TZ[l׽*([eRqQ ?)!->WZf}@bPKX佻 dm tުb mpP6:@:=]ݫN(EdORgPBx;-Ɔ[ :]cFYi,*Kq2o5XJ# 9'4+YT6{82 3zg%( `L3u{Tt4I3S-:BK9hiО) RqIENDB`db/login/themes/pmahomme/img/designer/reload.png000064400000001372151502156020015661 0ustar00PNG  IHDR IDATxԓOGՎem Nm۶mn϶om{߷nq_2ylXZ,IB78.%`{"cI7,%F.Ĕ R%K'NwUdMYҔA+T  zc-K]w{= dX̨=:P ؆4- mWAu*W=tsFZ0a MqDԘA,@b옼ћ̙(-֢qӀ&|LQw.P&쿭s<;ږ%qv!N>"P4]5<= N?G# 3nO.K>xy1\Q[ \v]Wyxb7HțGee #.QbA >3M.lzBוv[QJH;KpyaN7~fzmvUJH?.enQ̥8Fawb~+3h ?WN( >Pԗ/|vی 6Hcs{ {XsG~I%VUp$1%#uZe\il`[^QcUͧ!cH4cߔ>/>H.i$(q;` b&e0PLNNfsmS_f 4@ x9noj̈́IENDB`db/login/themes/pmahomme/img/designer/2leftarrow.png000064400000001172151502156020016500 0ustar00PNG  IHDRaAIDATxmR\A}Av,k j}{k۶ڶm|m۷s'y眫$2^VIK^VP^fA/3?g(}봴#myYxUV )AB r+?yq^܅]V=qn}q+@VeAⶼSF(:A‰j ٳUHb|+GB=۠I?ƞ =cd(@}ckj)y, F{O*0OOiu8QӸ_?NU⍪-V\Oauh*A9gRw456Ǔ_ۈ_˛Ee ǚp 6^MeMya1t_!ՙ}s}6%/T* (03}Z 7uiwIENDB`db/login/themes/pmahomme/img/designer/Field_small.png000064400000000360151502156020016622 0ustar00PNG  IHDR 2ϽIDATxc Rx5wv_cVb;^T4i 6@\5k*z/ÇmO>`j?ٷoزAQH5H!-\)9iy9Lcڵk )B(butE_"iIENDB`db/login/themes/pmahomme/img/designer/exitFullscreen.png000064400000000633151502156020017406 0ustar00PNG  IHDRZtRNSnPIDATxŒcAFLk(QX=m۶m'O:NJ}:^>;*R[RKȂB.Ëp q KZ&&90.{\uS6&2f#Ǿem)90!rMI@Z`}xYw#0+]0X9VfFmW(%P8>-3l=2ﰵ5 Vok! ]{_`/_b c$(V-|mOr_> V:&c {g?,J8HDxGE6%TIENDB`db/login/themes/pmahomme/img/designer/minus.png000064400000001716151502156020015550 0ustar00PNG  IHDR IDATxplg\ۊmԶ6m۷I'N3c|Dv;4R'25"ۜ^Y{}{.s.6~˯8~@v!zbKx{;{oH q3_Ŏ5D^=ݷmD"rl)`" 9SbUx< Z' ӯgm*;2 U\Ɔb5cu%4枞%"ƳgXm'hTrɖb}Xv3cb X/qa(09m%azT ew_J5*9CX=xCG(HPV5'e@Dn/۷ ^&jp*La)e3x"Wek>;f5*4?AEԾT|Z'Σ@Mrģ%%[ЖFWOɺS~ґGK4eߋSl;mPϲjlhO2w'Ci3KNlef'>5IENDB`db/login/themes/pmahomme/img/designer/1.png000064400000000132151502156020014544 0ustar00PNG  IHDR 2Ͻ!IDATxcXva52Ƨ?2PT!B TǞ'qQ)[}y2i2 ?&5`6@</H5FУh}ObyA%RjM"njGmd XPƠZ2&t\U:6  &q{0n_ahGqS-~JT. 82a[ gRJMIiUA:t꠰8Na͘9 c힁q(˾JSp$ fǔf#DX[tb Y`7eY&OVVx fqoflt  V"sHIENDB`db/login/themes/pmahomme/img/designer/and_icon.png000064400000001313151502156020016160 0ustar00PNG  IHDRaIDATx}4W{gf[m۶mQ۠͠k۶mk'9{gBՀ+(Yz..7d['Kw60sK7?HM6a4pg7;.-^~lR\N"&˖=k3O8HLu~7]n #8X5mښ;6[aB?/aTUdaW9nCVΖu|`Vߨ};ݔM G\;trJc6!{}sLzɐNãUJkAiB0rk-vuzIg|>@Y,!awPn_*x!F@6t3sjKCqqt5 xL:P7`-5r+vI5&B9v?7p <6}Lt~}YOw#%ҍd1-9& ]H_sHHJ .IENDB`db/login/themes/pmahomme/img/designer/rightarrow1.png000064400000001212151502156020016655 0ustar00PNG  IHDR QIDATxՓAԎjβݠ[۶m۶m6OnV^}ZDv"(K!{*Ez12͏٠N"a9$W6 bHH&Bd ݯ5_7L"c@x/[/Xp # 0N"|&c V*B2\-9ZWPv_ig^]lmaX|4+ .7̼r#_h䞍K`ŝi86d:84>bn@&TLϓd (ۘO;*'nOJ*{9~JY&ĺUdaw,}9J\ GzS;%sǦh0[ypD]9y7DjҜ)8"F}R{,lNˏ:F)X~8 >tLYETZE^i\S lDIENDB`db/login/themes/pmahomme/img/designer/rightarrow2.png000064400000001232151502156020016660 0ustar00PNG  IHDR aIDATxb@99EaxT{T{ kZ8m۶mn6dmřw,RC{T~"UHLx^_5#6t9&]ɛ cH+V}9,i"ㆮ23;RU5 r1~3CpwXXC&".pμrWs9 dtd.&:{o굍"{_VXR Я% X KuۉGA?R]S0oWo]K9SzfqTw Dk&nƞ?t2f#$ d x2 w܆%#X ,g<49F P^`}ւf=zi)C6VbȦJ',";&֔~@%;2Bq;n=|)YIoٿ-![fMPn_N=u⬙uD>o$ꯙ7t63Ac3 z?63y5Y 2wBxM].Q">f, |Vgih =Ƴ*qvA~ce}E Zvl!5 ЇfJ4M=;0?3XvL5Xs=kIz-lp`#_P~:ldIa/dMmMbfE) ,g0v_Bd(`gE( U=J!t^!b7("H٣z, Xu ,+N;h46)A6f9dT->ٷu2ثu!NcⳞ*{J47b6N~=mW,?Ŋ:c.ۨ/!뉲GꊮlNʏCZ~=q^蘴aCɥ(3&=3frE#IENDB`db/login/themes/pmahomme/img/designer/Header_Linked.png000064400000000137151502156020017067 0ustar00PNG  IHDRqܚ&IDATxcke`X1j7ʍHF1j"]$>vmtHB)Hiއabs]HZ6풄Xq]v'$`?T&0]vQuMFk D\!A%$ɦvA[!Ats[!3&&&&&&&~]%hIENDB`db/login/themes/pmahomme/img/designer/2.png000064400000000214151502156020014546 0ustar00PNG  IHDR 2ϽSIDATxc>Xva5 Rټ& xK=@)~ lb4z@iO  Fa6T `0Z IENDB`db/login/themes/pmahomme/img/designer/exec.png000064400000001315151502156020015334 0ustar00PNG  IHDRaIDATx#m^k~m۶m۶mX۶mֶ8*8nVon|>qWXԟ\l\3fgv_ܳL &K!ܚnQp.܉]AOࠝwY,wn@׏nX[2isdP2E FHè)2v&-A!:5FYM[u@5LwӋ<ɶwCOϩfRyV҂ǣ.ӷf9( 5_1rID0c1B( Ǝ.JN/IM冐@g2}cap~9)"Z$5UbfecӬ帺3`܀v'3Ut:߮[E=4T@V@sUYܖczٖxkT0te(!BtWQo6zxj&҇݉aDĐԌ+,rKq_@͠,;_=Y3H*z,*ׇ蝢J:'K,vzOD[#vCnFg[d/@ۥ.8WUp`&IcY=lh}5i6k땋5ޕ=;!z`>M* LCA~Ǫdd1[iZIENDB`db/login/themes/pmahomme/img/designer/help.png000064400000001216151502156020015340 0ustar00PNG  IHDR UIDATxՓ\aԎjβmcm۶mv{E7|g71})SM^AF8q ale,8%bZr7Gs 6]R2+@-:e,ZZ/PqC+;/”@ ct]j Z,`B; Y?3oHWf ]Z: . $\|H y4[z.`%¤!z')vcqU Oޝ#3sK^W%!*)Iï0IhY&fg3}K,?7?D`% [mH:l#L <pӠ*eRj6JR xmupwg3*3IENDB`db/login/themes/pmahomme/img/designer/table.png000064400000000202151502156020015471 0ustar00PNG  IHDR IIDATxc`)Zm9 5H3К(&džQ .u I  Db3!Y1AKiIENDB`db/login/themes/pmahomme/img/designer/anchor.png000064400000000713151502156020015663 0ustar00PNG  IHDRaIDATxRdQ~"C @0B ``l`h \L3͹noߛ.e?}1F^8Nƶm|L&s~fe  8>Lv663m݃n@bXx8,_`L 8q ~n <:t:Mw˲V h9!IRk?XBp(U ͎_P.?D D{l87uCfSDfYT xo5 }y9hAME)_Z"qX_NjBx^Z$`KDo!fJ f)@@~@)S(]AIENDB`db/login/themes/pmahomme/img/designer/5.png000064400000000123151502156020014550 0ustar00PNG  IHDR 2ϽIDATxcd p*?%ѤIENDB`db/login/themes/pmahomme/img/designer/Field_small_char.png000064400000000200151502156020017610 0ustar00PNG  IHDR ';6GIDATx@Dя,$=Bsv}OV=+č[K1-vT )`?nIENDB`db/login/themes/pmahomme/img/designer/page_delete.png000064400000001272151502156020016650 0ustar00PNG  IHDR IDATxbP7=@G=NbDqYٶc۶Q6ڸ*WUl۶ms1w7'm i?wo?ɰH0R<_cYD ~ꦗ_ӎm}ď; і i?Y f` ,2;,K/Omw7r aC f01>`Jeֺ+V چv4?[h$b!q!3< "6M]XRhw%, rP P{D@gp CؿX6AoD H 2#;tugՃN047ԙl^#= Y Gέwє7ԣii{=Wdn 8đw^GH˨ysy}L0cl\~Kp&m>`#{+g5377!3v)4 Fj _QU? >*6Z׎}mp}:نkV|.kkm;7l5"2~dMu[SA C6fIENDB`db/login/themes/pmahomme/img/designer/toggle_lines.png000064400000000637151502156020017071 0ustar00PNG  IHDRZtRNSLiqTIDATxb,$' la\l۶=ȶd۵vN]|+Pͬ+]'l(z]ԕ&l7/b=[ f^nϯ}^ Mf sdumSxLLu^!\kTScS(N/!Qhd,<2D`jl`@ڐ4nWcE{jG,$E3k!˄b=h٬ ˈxgʫH$Z e%5ZRRD2Uo1s4~#όƼH , ߲6NRvaxmzb*LGpKg<3Hz%-q}| R\_e8<3y oWgsTԳOImdC%DŽ86@ h>(mV:>~=VyO.yV+ǽt߾9a] SvKQ <^k՞5}lEgmn<+A%P> iQ6eO9t璘s]j3kqJ6UZ!đB r3#O'؅oaRPs[lt /Y,{?kb@ IENDB`db/login/themes/pmahomme/img/designer/other_table.png000064400000001056151502156020016702 0ustar00PNG  IHDRZtRNSnIDATxԍ3@@7Ruic۶mkm۶g۶mX_9{[qIsٸxԘ?fiRU7Mu~nX]?ד.0A]Z,,R2s)$̻3L={1npɘjѸpj38 .Pp+ Y[+h "^h[aa mX};^߉NhGq8Ki0t‰2 08]ns5@1|=ѽ3wy׫g]C7Fh{߶e4#g,j'Q 08O&nbfvqы7Y'oq̟WJ݌ ?>ͫ1{D(c_ɧϦJ'OJnxlpF@x0eCc*е@fxY,ك)IENDB`db/login/themes/pmahomme/img/designer/exec_small.png000064400000000225151502156020016523 0ustar00PNG  IHDR r|\IDATxc,f~;@ P xM)? İڌaFьULC7`ȇk«Y]#/h'&DVOY虄@IENDB`db/login/themes/pmahomme/img/designer/uparrow2_m.png000064400000001203151502156020016501 0ustar00PNG  IHDR JIDATxbP=9Q< 8GhTm۶m۶mbo/34=jya~ۃn>9]A5 u|'=C p=铩9vB.8e -AI]Vаdp[-Tg 4k+zhliyѷ8*eJϚ?&mqiZ:; n^'5-[`3sh빅E<]ye|AWY693zԵuF )4F`b{WmP4K% I),GZAUK*}!J2('g#,-QJb //E/@60:.A#c۠ 6Y?RRL{T<102fh|n1xW$e kI(.(Y3J%f|?/f%BEJb - JR׷2 lMh|*?kX</Cj $QmlʋL8Ba al>+srQk,v0Sʼn+_0iP=9} y%;JC`Y&0 I*L(D؝r(F1I,c8usC. ؏&n- >7 a<߃W_{ppa 0LeUQū+SiaXxg87m qŋ6:&Towж[˸\\s6VzBYtn:1\lmN%-Bf :d $eJW墤(HG䗤u(ɊQDIENDB`db/login/themes/pmahomme/img/s_views.png000064400000001133151502156020014265 0ustar00PNG  IHDRa"IDATxU]@׵#۶Ȟalh\5#cG /@*M#$R_+R$}'RuЧUEX@ !8 }9K 3ϩ(T(Iy^)_H1m\΍xn0Ru4Ë[l)h7@ !UXKId I+T! }o B ^,!4\0K1?|HF@(WYpQ<d.d8 P` ?*io>DE˭~j_<! =Wd=ѯe+hMjq4]>­ǹиr(G\v-U_Bኅ|Yswv%PE#qIENDB`db/login/themes/pmahomme/img/bd_primary.png000064400000000446151502156020014744 0ustar00PNG  IHDR7IDATxmnQoֵm۶ͨmha78S]RZAZ ~f[R^78ZBRg_‹ls!J^TܰcXJ}rI AV]2L0 lKa{5rJ'CNp<ѻfF s̹pFui=ݬqK" +!裖^ķFzhau:ҹ^aE>cˌ3k$|dEf%$JI'IENDB`db/login/themes/pmahomme/img/b_tbloptimize.png000064400000000231151502156020015447 0ustar00PNG  IHDRa`IDATx PC;wN0d&փ5?"x'SRP.}/"37~D} ,OP-, {IENDB`db/login/themes/pmahomme/img/b_routine_add.png000064400000000613151502156020015406 0ustar00PNG  IHDRaRIDATxRoeao"`moYfP۶_ jN|93W 䋝{?/fsVfzR(<3m4VlW&&O71yJ;PzgFO)~jT\؀>/NL6 >,--!&v:0  u\]Ţif~ f'F# ж-x1 rN?_q9X4Ba(%q% i"2E,QU]A CJP;HM{ J"!k c8+pZDܢ]D =f#08X` Z>ZhJ!IENDB`db/login/themes/pmahomme/img/s_vars.png000064400000001013151502156020014100 0ustar00PNG  IHDRaIDATx5Pq-hpD wqwwwhwx2qO}2|c7K5(^  jnxEVye"ǎ;rI5 *{9m4M($$aΝ\R^nJ Cq> uaYTUe @7ٻw/TX~Be 84M1$pA/besoXr[n|('Ee#}x䖆g njXq_Ǣ+*T3`z06}7.biP4c̹|Fƕ `i^}GǸBGOOX~MCI\}q s2AcOd1q'C9:iU_>.`,~D3 ͊$ Ae*{?1zsFT4Mk._ I% )hL֥XYЙ$dm$ʘ IENDB`db/login/themes/pmahomme/img/b_table_add.png000064400000001073151502156020015011 0ustar00PNG  IHDRaIDATxA@ϢmnP7m FX6ڶ2;3:׆R80yRLJVR"$zzp`W!|vl6TjސŸ~ o1ƕ.pqd^Npni-# @x BF XmKvQ]sq ûTg1 \ǧfkmXɅg&x"" & 7.1}P "Sq]`pu} Xҳ&' +QZ= *ǭlL=GFZw?_٧t{p ެX~ѣnw> [ LAJCfx?p]O]-ٶnݛ%)-|FQ7ըoP0hZ(QYԩPZHLKsG> nLU xɯ-s,㫛p%ci1]x w7l˹@1 l[ps. ڀIENDB`db/login/themes/pmahomme/img/s_sync.png000064400000000706151502156020014111 0ustar00PNG  IHDRaIDATxC^1X?\]նm6V=l۶s&|h] zG3@yPJ]@+* >֭[~oPE2ƀSRRwtkMTPr4ɵyb(mo2 -`X+vuH\lL>Xu 1KEJAx,K8e[[~XiX432qłkx_~(V^Z;jkmu.e I E0LWO,3>DGF1!k ߻wUUUoj̀OJ{?DǨ@~~~B ؙr48G%&O;D4hZtGy /vKgL&IENDB`db/login/themes/pmahomme/img/b_view_add.png000064400000001246151502156020014676 0ustar00PNG  IHDRamIDATxb'g8Y8ڶm6QnNFhb۶m=g>]Ojϵ]}o&.КVMJ)aFi!՚&B##zfJ3g<\#Ffį @HVVG)59'#kh +Msh W6-!  co(Nxv%8]|8pwG@WĿ[)]>_,YXn> T&v"0NZܓ݊`v<}K&z\fQTG"qK琱J jK|)j6jUg(H251XDZ<~h{޺mmdoq& 5Z zZ7nETk׾y~0hu/&_~!߼ߧgo闌y /_r6W9q׷< zj)⿸Egm Lo}/}^6 U@1n /^nIENDB`db/login/themes/pmahomme/img/bd_empty.png000064400000000507151502156020014415 0ustar00PNG  IHDR7IDATxtzagSw]vckY6wΉg:o2!U_F|>C j.qӐ+ܠ P%1KXCMA$H>dRt&HB"-zFߢ5^=AwA`ԛ'~¬̳P|:]j쬠xil6jek xt=V+k &ћ 3=gRP % \"|Ł/y _<% &\p IENDB`db/login/themes/pmahomme/img/b_tblexport.png000064400000001002151502156020015125 0ustar00PNG  IHDRaIDATxCWQ7۶m-&^˶-q]lg`>f|?/f%BEJb - JR׷2 lMh|*?kX</Cj $QmlʋL8Ba al>+srQk,v0Sʼn+_0iP=9} y%;JC`Y&0 I*L(D؝r(F1I,c8usC. ؏&n- >7 a<߃W_{ppa 0LeUQū+SiaXxg87m qŋ6:&Towж[˸\\s6VzBYtn:1\lmN%-Bf :d $eJW墤(HG䗤u(ɊQDIENDB`db/login/themes/pmahomme/img/zoom-minus-mini.png000064400000000352151502156020015657 0ustar00PNG  IHDRVΎWIDATx0 -=A!z`@̀&wZL[? ؖ2HӈbG[K큺 3y'>вܲaP);ͳφ̦3 %֧jš0 hb3\~`G2ĘcD>C7iOR(U|Mb6~SvܐAJQsIENDB`db/login/themes/pmahomme/img/s_cancel2.png000064400000000374151502156020014445 0ustar00PNG  IHDRaIDATxc?EĨG"*=o+# ڀ#r-~~ߵ(:[.g\ |PI ߦu= 9uz q\~13şep)+Un ,v2W @Cc1HhRƍD@IENDB`db/login/themes/pmahomme/img/show.png000064400000000407151502156020013571 0ustar00PNG  IHDR7IDATxbD@Qpʦ"轨,F%i4Anywcj w1.qw}i?Tagس 78PKp!; >pTk@O$NidԒ *u!wd -CzԽ]k-GrG1WL8\F":=A~ SqQ|$IENDB`db/login/themes/pmahomme/img/eye.png000064400000001227151502156020013374 0ustar00PNG  IHDRa^IDATxS34W۶*ۘ}Io\sunmTAsLf7%>j>Ś+!0#hI1Gm|w}/ )\K%(!+ВCwWc[{_y$$RE, B*^$q@,Ҡzi3'q]889p= KBVj_#ZClnqzŧYibV3/÷{j9?v0+{@;"t;зוeq3}:F:p C  XǞFd%䗯ض ְ, m++\xUɃZkfcj*( `Xp$cÕ{c8sn, rBZnФ@,8qC[ xm2F|b37ݭ5N۶%R8|af0kFJv_`B4G,ƄK9i׆?ɛYŎEB@p%4uS[=OmgQ:-<,Vwp 0|О3F=/}w~?u鶵2IENDB`db/login/themes/pmahomme/img/more.png000064400000000125151502156020013550 0ustar00PNG  IHDR g=IDATxc-IENDB`db/login/themes/pmahomme/img/b_select.png000064400000001121151502156020014363 0ustar00PNG  IHDRaIDATx`Fo,m[l۶m{m۶׶kO;[Is:>ݔp\X0No3¸:Wd/.d:vpT4vv06tT,- 8)Q`A߂fl `O&lKXk *(4\OZ3*fZ+mjobmRP@')Sp ׌*L8w;|nǁXtfߝJبssUvTD-#p D x]t sv\JފI+AtJ!R .6bg,]+p5u;V Ga֯e2f5zd6v 4ҲVJcVcܙ?_l~qb |3Vm.3S1Pwҹ)~HRٽ&x݉^hs_ nvo=|ʩ=Y]"heءȺ6ʅ ^!* @^cuĞ?Ȱ'kxw@4%YIk+-N<5VyRz RIIENDB`db/login/themes/pmahomme/img/s_notice.png000064400000001067151502156020014417 0ustar00PNG  IHDRaIDATxAóm66ڈԶm۶ԶmL/[[_Xaf*~ƒ-%m*ugC'UXq%ٓ*c1>XP˳=4!EQUNp(d?Ƣt&ƃ0k\%HP+R&Y%9.l\(b=QJ~ue6INauZg0C%:KO+3tl 2$_Fd^[|gE9 #8Zhd6}yLT5%ī3a&J-@aҝ V@²ӆbxtb´$( ƀi5! ֔d6s!IENDB`db/login/themes/pmahomme/img/b_column_add.png000064400000000657151502156020015226 0ustar00PNG  IHDRavIDATxPAgsplۗm۶m۶5ȶ7~}=t0ļ֏?`<98%@t1xNa )ƍ9c(N]3bcXFq F#G`73U`9)xtC-t'ao*4| o>3>R\y8ڼ4QBCN2u$}{pu lnH 18IõHs2Y DpY>rڂh&d8$GOT@b$|1{o -uOkQ? ;@WyIENDB`db/login/themes/pmahomme/img/s_error.png000064400000001146151502156020014265 0ustar00PNG  IHDRa-IDATxp1_mvmaΜmoiڶ&yi8{yv{Mr>#.FDO@".#{/w VO{s?|^;@UŒmÀd$ePM)둱%~ F-6HYo: Ru[ A:.0Agcta,\B(>27%d!Eaby*#2 aZ3!2! >f@s3QQ+idDߔf@ D8Z."Io2R+ eQK{xCEi ee2h T@dY/S穌L1`(]n@R^PP 'C}*l;q27@*R¢3K1m)7efL[R0|~VKJ)5`CG.P-΢=|KBǶ+CCmΓWe sˇY&{gTUab]6ؖ+0f~UV$`v~{^9=''Go U-&ܟHi&ѯ>^!ܗ_#r1dnu2%<YcTȒψ̀?>U}R|X4ě5Ӻ]&$DN8Vz~#Nl#r$Osq;:W)M( 8o*k<IENDB`db/login/themes/pmahomme/img/play.png000064400000000511151502156020013552 0ustar00PNG  IHDRaIDATxS#`azWWWWfK>۶m۶m۶vG$AdoxcmzN` mH|sY:h\xGjo`_Ψk^='A{v7jAr-,:Ma>2[sK5 #vLj[xW]j\A7xJ2! A؄X#U\Ws- (XU3Q*䍇*YIfr%뿊IENDB`db/login/themes/pmahomme/img/b_no_favorite.png000064400000000571151502156020015427 0ustar00PNG  IHDRa@IDATxSQ i׶m׶(7TaW<9+Vm+ G~gث GnG0V"oYOKvG-G`7E^1tU+=x|j%|l)pЕC/ͥKK_nch{.8t&_p?j<5ppЕ۳ <3Vm w8t:1U悃kЕu^+Oj~]ށ~LIF1 ]:YpwЕcA\1d7?1"~0;IENDB`db/login/themes/pmahomme/img/arrow_rtl.png000064400000000146151502156020014624 0ustar00PNG  IHDR&N&-IDATxc?AE-#CE=5l԰$FO9Ǿ bIENDB`db/login/themes/pmahomme/img/b_inline_edit.png000064400000001021151502156020015366 0ustar00PNG  IHDRaIDATxSwQڶ\۶ͧڶm۶mŶƧ2NY,L9,%󗿁feInx8;wܖ==RȚ?dY&++D$>"vm_uۮz#\B ib6b)PUIHMMEB9Ho@)9{@0P䐳d.ÎN ?.~ɏ#1˿⹥d/kĈF˗}ä{ȍoGbE OLRmp $;ayfdDp $\'ls̨XÑ; %%RSp )n۝Ŀ5s8=-J׵%x<, 51XEVMlf'm[՚SkG!mKnt=Ƈ3S'N+cmۺ8P9W0{j1i&!n,pIENDB`db/login/themes/pmahomme/img/s_rights.png000064400000000715151502156020014435 0ustar00PNG  IHDRaIDATxĒ_QwWm۶Ce/)-s̮1sqm3@9kq IENDB`db/login/themes/pmahomme/img/b_usrdrop.png000064400000001271151502156020014610 0ustar00PNG  IHDRaIDATxSH^[m_aykzm۶m۶mF֏Iz50(-S4}> 㴹{_tt4r'j\^HC}[s{A5SM8,{.$:7R?ʂ!~ hފ%0瀾sTi#e|{Sx_X(wå! F w?^租m~w7X,uBmwW!\|zX0v[}^9Y\Dsg O:$w q&hnǯE}<|{Z@x <<-CߌHxf>~uc± +  M"xE`mrCX3O\4E>]K>I Pp"lc8x<&xJpǏ ;a}Pob(NnlT}HƓq)s $Mp͕ MgB*pjŔʔ]yDxBIqu̺=EuFF$7:v+2޸QϞso.u2dYg_M +mFz]شިmW)lj4svvMIENDB`db/login/themes/pmahomme/img/b_close.png000064400000000231151502156020014212 0ustar00PNG  IHDR7`IDATxcP&Ϡe½ 4@i(i a pp0`/\J47rbN ;HCF  #;gIENDB`db/login/themes/pmahomme/img/b_primary.png000064400000001030151502156020014566 0ustar00PNG  IHDRaIDATxQGLm 4,Fm j۶13k{wO7X#/9 h2WGo}oe4{*))ɹ0hpXԿ9Տ=iB ˖pPlCpR ݥQ(Y2E$n=I߂5d]i`BPC[h2v ­E+XeLϙNԓeE;QOL(~'I؟b.auUlXĭK0?w pNϡ-j^Qm2ƻ8 ͼ]Gں_&4IENDB`db/login/themes/pmahomme/img/b_index.png000064400000001203151502156020014214 0ustar00PNG  IHDRaJIDATx1ڶmv;Fm jvGm۶϶iokA$ݍKb*THmejR )S0q {vMO{1PRA %($Rٚ &% fKizR&LfJ &,a;aw2),$%4i;TJoD3 e4qxA_c/ z7@6ǭG{V&$؄ >0qк4*)QQ\@a M|z@!{= LE`2JdS0RM ڢ?A s2P9 A[Л#WHPЅn2B}k3n) N`v8D~DC+TFT/n}ie_x=\Ǐ1Qf2 )3} 5pxق-+ t(C. U(dCvzjˇw1ͷtwaY;X/ !3>]#KW)_|^uJH-R(hi H\N[IENDB`db/login/themes/pmahomme/img/new_data_selected_hovered.png000064400000000264151502156020017760 0ustar00PNG  IHDR:{IDATxuϧ1 {{諌e*dϞr7K(H WБ+݁_yK/1[ ,܅ = (`wQ \(IwnxG%4/IENDB`db/login/themes/pmahomme/img/b_key.png000064400000000446151502156020013705 0ustar00PNG  IHDR7IDATxmnQoֵm۶ͨmha78S]RZAZ ~f[R^78ZBRg_‹ls!J^TܰcXJ}rI AV]2L0 lKa{5rJ'CNp<ѻfF s̹pFui=ݬqK" +!裖^ķFzhau:ҹ^aE>cˌ3k$|dEf%$JI'IENDB`db/login/themes/pmahomme/img/b_versions.png000064400000000707151502156020014765 0ustar00PNG  IHDRaIDATxsAmk۶m۶mdM>VZto=42b0b7?v_T˟Ⱦ˨Y""r͙m h&-?Y(ZV)EAwX&OJ,i^<(g we0I>RFد hJ)HKc!|KZ,ŜB#C"'X3@M׎}>ȺaG7 H~$<>7~ G  qåY q ya"˛IENDB`db/login/themes/pmahomme/img/b_minus.png000064400000000173151502156020014245 0ustar00PNG  IHDR7BIDATxcOJF+Ϯ` 0!P LC }B /BgP,#IENDB`db/login/themes/pmahomme/img/b_props.png000064400000001075151502156020014257 0ustar00PNG  IHDRaIDATxPE?Z۶m۶m۶mCsN}X,F= Vp;۠R"U3=5 .i<2(H fkqr5\ %wwܫ*xX-)pMAer! <xs>.YXdOe?̀/yUaV'༡߂aD !lSaRj{Jg\s=pB Fr#hC)Yv 7"9PAȳG!vjl> Ftcbf 1b~R*9L_{>77Qh6ՍNO/"%/ uK4dCƖ5A$@H / 3+<*~5<(c*%݈ѩpC7vQ/%%ѐֹvC5TE)X?h]IENDB`db/login/themes/pmahomme/img/centralColumns_add.png000064400000001244151502156020016412 0ustar00PNG  IHDRakIDATxp%YSXֶmۅضm6c1m'Ui5s{lG]paan S9^>wbnm|\McYOmXFiڛmr!<~/|E=k5ع9e`xﺀA R{J$NԂ+I.(։wN?PVBCChBAr|>\/,,\,-?@tdE}}`ZvST*xQ-100TWW׽F񣖖'jkk+//<@,?rߢh翕$ ..|Z="ͱDNBp# ly&b%Byv,P/z{j,H3)U)'nw}ͧmmm*Ǧ&d2Jgb,JgG+ENoaw~k>=zB,6yf A| 1 E`H2OԶW9ZS<|iJ $H +Lj8пE~Ffz)땠Hw_S(_s*њ"T{eDXL^D4FFVMJ374H9)Cۗ4=ዏ*WEШRތP(Yˮ6"Z(tBz ǏM]I(sTIENDB`db/login/themes/pmahomme/img/b_nextpage.png000064400000000511151502156020014721 0ustar00PNG  IHDRaIDATxS#`azWWWWfK>۶m۶m۶vG$AdoxcmzN` mH|sY:h\xGjo`_Ψk^='A{v7jAr-,:Ma>2[sK5 #vLj[xW]j\A7xJ2! A؄X#U\Ws- (XU3Q*䍇*YIfr%뿊IENDB`db/login/themes/pmahomme/img/bd_prevpage.png000064400000000305151502156020015064 0ustar00PNG  IHDR7IDATxbXԾ q0r(੿m3b۶ZRH6<d_کIC#u`SХHW}?H\T%ɩSJEaB cKv'kIe19f󌍐!8IPE$IENDB`db/login/themes/pmahomme/img/logo_right.png000064400000010322151502156020014743 0ustar00PNG  IHDRePLTELiqlwlxfw ɾ&ܻlxlxlx  ڽ¤ݹelzlxkx Ʋؿqqmxlylyjylx/¦!Īlxkylxlxlxlxlxr| D%C>Q߸{Ƿ׿lxlxjylxIĭ`Loɻlxlxmxlxmylxlxmy ݹ8YE!kxlx u.lxlwrlx!a 0T4rEƳ@$Rèjvݶ|75]ݺڼ\3bKtRNS (Xϰ3NUkNH#'>,v@0`"]vv@"GDZx"rd X\X ^/~2;(P8â9/K;r,.\2}s,[0sG^"Z%52?+7SהiYK7ZBjCd$)0LG'q7>VLX:m* bCPMa 5{)w20// mS+bmQ'y)PZ#jX*IB=521œW/ _yhԩqkRعÜ|0BB:ks&|L|ԩU CjC9}vK$(ZkqjT1{>хz4URpUQy88:Bi_T(%ìݴ8Ҿ^[zm)=GU;,̘c/m +\KP9RynqEq,JSgP$9z\33$߲QTl Y AgnSB*#1(gZYp"І=E듲5hC8mu۠V #>If(,^iw>S@D'joupaVbOAfsZuaFԸ-A桁ql:50#Nj$?60R"l{fA @F=(,$M9+ؠ5 91MKWxS|ُةC:N_ug;lJP*c\`'33ի:ԿwmN5]+&W^P_vY1+Q꼞Xb$+UJ;gȲCMmU9}s#ۢ axbh칶jvl*qƶAO:4:{:E/G Q$~b,6D3.>>*!W ?~xrO6tڤ9/qKIpUH7P@~X!=p5"=٩VPe-aujE,2d(ƭ3lm@(FQPZ]u*Y"j'Z,c"c]1zeqO7am$(+#"" SEΉ1M}kItOFIf̜9ћ+=20塎s3yp]~/YNsIlB+,R Odbh;-YLd+DR-+*Z-WfZcGp?]pXol`7663#}[l]+,yv (m:)ʑjzCa%߳ݎ`*޹kn֕=m{}Aѽ>t׮sDd.+ 1Um"GqGEi)Gٖ5KcRcǎJg gϞ}YPV ƽ'l{]*s=8;#2;oF(fER[YupNOd"wD$[k"L]=/Swg}v?JFb'rK"2"6^rhüG|n0-+4EDҜţN8DpiSd] QiFC!‹)x0+( i͹A|nE !Ʋŭ҃uC}q(-*zC8!\'f7JLN !|_y>c C?"-xPhJv_xM?gm&gΚowvpQk<_glrtO;8%NB̙9{ H[` _~MA yD4Yް`JV` @<{r@/< _o!~%xς92z٭"?ɯQR{Mݔw9Y\\ͧW{/lcгBY0O ̮SN/3r<.IENDB`db/login/themes/pmahomme/img/b_empty.png000064400000001011151502156020014240 0ustar00PNG  IHDRaIDATx\QOTAm۶Ƽjm{؞d}fh Do?>C!Dj F1n;;;$,;y(SSS099,sgqg <:ū033Ituu텾>|g8ILp PT@QT $3Ϧ {3.8C]i"I<` EڇDn߹:6peWeU[ں;7 uw 1ը x<5_kjk޾{mgϟ3 }lUkT>=44zF6R4^%,X[[uӖ)x$J@ťE3R#:vNIa+2j @&`a+`2XC3$`u@(H,ںW&K|#W,M> 4l L RoVIENDB`db/login/themes/pmahomme/img/bd_deltbl.png000064400000000470151502156020014524 0ustar00PNG  IHDR7IDATxгql{쵽%_@vSm佭15eod(wes3-J[{dv_n/TJ%]j86K1)Xu5A.Tydۡ4Chv1rBh*L\,l0WKe{J:ܺ,Kƴ8(`zJ3~{d~M ov?IENDB`db/login/themes/pmahomme/img/b_globe.gif000064400000002025151502156020014161 0ustar00GIF89a^b8IvJwAc`ד9*[23W^EqGu֜}OCMJxׇRVQ%V륾wESp~D D3a#Hc扸pyLpŒ蔫᤯jzK UjMz>mXW_U~w͓yKjTm1aXuPxЃ"Avw{݌¥9i:cb-_,^ń#C!,e H (4QSL rCL(*Spш:T8E*BW$0h`MlXԛ""ć@ܸcIVE+@b#r$U!:8bZX,j( D*6KN!&J&> I)@2bՌ4Vt)M4ڐ,/;$W6e0ʢX$zꃩ;60ui`]1Y2 OOӃ(WƊŹ{WO6.{u `1z'F9bZ<W GS(ĊD9'4.;wmkиX1[sPPz?هRY~Pid26nϥyEPP=ћ+Q Ȧ+$sƠt u1rD?)%쫥d~ +ˤ~Iʄ_BUV4[^ `ѹ׾<IENDB`db/login/themes/pmahomme/img/s_sortable.png000064400000000314151502156020014743 0ustar00PNG  IHDR7IDATxOad`#񂻻$ ڎ\uuwRWv6S;}K7뒲q{ S=x\mW8%Ԛ)/A5>/~?O^~w4} =/4yy4+hز{w?[ !+Xn|'+/9Թָ B3GY5C\s\ؘ+ψ5Kt)[+3k ʋ:p63'>>LcIENDB`db/login/themes/pmahomme/img/s_process.png000064400000000672151502156020014615 0ustar00PNG  IHDR7IDATxUC$A۶m۶m۞)c9^64>EDF=뎮mV=.g7QR:_ndxo&#i{9qR[kh;+^K\#ڹ|Gyˋ 1)H>car˫S{,f6[lgcʯKӂ#񂐌,kV峧9񞱲/<#2[ 7;M 0Xf*S65.r39<B=%1!> .F<68|r&'x"̭aމr-1>CD [m$ҜB}Jj;]] ]s2GIENDB`db/login/themes/pmahomme/img/arrow_ltr.png000064400000000145151502156020014623 0ustar00PNG  IHDR&N&,IDATxcR?A*T4rCF1l԰QH N99ݤyIENDB`db/login/themes/pmahomme/img/south-mini.png000064400000000477151502156020014714 0ustar00PNG  IHDRVΎWIDATxc``O 2cԧ]dtOo%8ľ+&U +Bf3cqm>Ib 9?Dm]옝 r:p;PL!zi-X\E;CweMU+:\鮀kAykOZ=$0i/sH_P<$؋[| {q[]dIKȈM*v{Jf@71's^\Fm-]ֵn7m X\07"%QPlx6N>DI4xH myGK.? Vn-=!Y8lYj';EJ7&s{MHйh\5#cG /@*M#$R_+R$}'RuЧUEX@ !8 }9K 3ϩ(T(Iy^)_H1m\΍xn0Ru4Ë[l)h7@ !UXKId I+T! }o B ^,!4\0K1?|HF@(WYpQ<d.d8 P` ?*io>DE˭~j_<! =Wd=ѯe+hMjq4]>­ǹиr(G\v-U_Bኅ|Yswv%PE#qIENDB`db/login/themes/pmahomme/img/logo_left.png000064400000005231151502156020014563 0ustar00PNG  IHDRg `IDATx[ex1J:133333c.717ϛdK phW#>aex dM݄*k!}6Sp|V_)}F'o<$%AGfnTM:;Y}z6 ̲ط8ol8_XnbsuC#PQ ^ݿk37]U۾Zu"Z>[r:8hJ˱أo߷J۸)~l@_?o/CC @"죓 j6x2Va-Vn58P?WH{BsU Ҭ"Ι576oFW{<-?vP?S|o̱X9K!߁x?4[< )}?+v Ŧ9RɅ2  " R^PHt;sїu1`S @Nbvp1{ O|v&YƛQ7Ϧ˳ !P}CgB74_fۿVhOr#~;n?^˅Imċ 3N ; da$OYa&_k7I>iwKҊ4)m w ;Yt7S(~Zۖ Hj;!Eø>$z2}}ՊgZq0]?(A reиa&dS/O`i_E¿i :IF#'T*t Qo[L ֳzwlﴪ"ͨ5cy8Q#PLl9!;;3~_SۅԶJױa %69_ǤZ҆bI ̴к.aX56Qr CTLЛ\v+1R<6d}8 qv-a$khfC2ʚLtwpp|shDl 8(lCrC?0F'IhϚ9f2tͪ5^3 $Wh+ qf|.$iB61O@jOdt/\К$6>/ &(XWBPO'V Pqrwq/@VШI _ooߢX*m4 8T*K"t$i&$ސȇoS 5r?Yĉ׸dlf1%)AOÕ!KGB;O{ݨzZ&vM-ƙ1aBSPiDJ/''A)KqF-?EU \#yP@H=ЊQJV}k҂e'4!w:jn:Rj9$?i %вkQ i(*3u`?bD9@K4K{sUψͤ1,Oib||hEJ?l }jM:{(ͮ}T'6*oghI+PC , J>oS OMԟN`(( []lQZnZߵEON }(wMFF, kK8vH (wjp0CkRACRZuA l"u~mN +gOhkw ʮu ʮu`IENDB`db/login/themes/pmahomme/img/b_docs.png000064400000001301151502156020014034 0ustar00PNG  IHDRaIDATxRbgI^cڬmm۶Ƕm{q {m|ӐȦwژph]2v.Iv_JRGF_&ozW(FOjgS܀{ kԼQ3ZLiE0@wl>`Y(v|QA䧂:F8Q؃p=*dž }W͜.qi^ GCdFΘ A2| $`+(sEs>iT}/-k> Z :]) 4G($lH9Jwg:IENDB`db/login/themes/pmahomme/img/b_favorite.png000064400000000601151502156020014725 0ustar00PNG  IHDRaHIDATx%`'7ml,/kN7m۶m|m[Ե\AA , G  s5hNKAy @Z0m)5$O!-C ; 1|fn%[$\cd֤>3JO\ow$NMdɼh'Gx Ѓ.u6~NQN\򁧛iY"GuLܐ{s< DL\ p @RW#cx/ԡ[Y deкpj. P;n-H*7&M0IENDB`db/login/themes/pmahomme/img/centralColumns.png000064400000001112151502156020015574 0ustar00PNG  IHDRaIDATx$E{Yg۶m6c\t 7<ڶ]˛BQ'{bXXŋ:AgClt+V'trXkL&Q͚Z]'v[̅ TA"Bf1t`vw5Gi1im_9M,~//DFFE7 A~˖-KwuiiiNjGjqF \ȊfX ljǏ4RSS JHHl4\~d2hҤI3,<}0I^XP]tP`O8v:.۹s䪪 "Fp^Fc8!:tRNSv8$IDATxc``X- Z` ZEbXLzA܉IENDB`db/login/themes/pmahomme/img/bd_firstpage.png000064400000000625151502156020015244 0ustar00PNG  IHDR7\IDATxyQU:fj`:P SC 3'pbf10`;?QmKl_\'Gm7$+!! ,w Ie9*, (*(B5[1 ZIah!GexzJ0e6@V|U4Dm%$͛p \Gx }@+| =+ 1- Ea5l)+!! ,y )䨞'AKڍ,E\(l&;5 5D03a0--ÃpH4V % i p[R"| #  6iZwcw*!! ,y )䨞,K*0 a;׋аY8b`4n ¨Bbbx,( Ƚ  % >  2*i* /:+$v*!! ,u )䨞l[$ Jq[q 3`Q[5:IX!0rAD8 CvHPfiiQAP@pC %D PQ46  iciNj0w )#!! ,y ). q ,G Jr(J8 C*B,&< h W~-`, ,>; 8RN<, <1T] c' qk$ @)#!;db/login/themes/pmahomme/img/b_tblanalyse.png000064400000000230151502156020015242 0ustar00PNG  IHDRa_IDATx@ &RnXBڱ./A*Q@|Z6V]TSf p@Q~219|FIENDB`db/login/themes/pmahomme/img/s_asci.png000064400000000224151502156020014047 0ustar00PNG  IHDR:tRNS["MIDATxcπ (ϟ߿^* @y08UE*X;ª">Ǫ>cUa( DxzXIENDB`db/login/themes/pmahomme/img/bd_spatial.png000064400000000363151502156020014714 0ustar00PNG  IHDR:tRNSv8IDATxbi2@a^vA(@1FE_ P Pn9\RtP] {hOMDW^`7nqaC3, qDiB=ݤ}WM2&"c@Z\1fD.ÎAMTh2%uǣ.;1IENDB`db/login/themes/pmahomme/img/b_find_replace.png000064400000001235151502156020015525 0ustar00PNG  IHDRadIDATxSAǷڶZ۶m=۶[g+g+Mjkwh] dk,xm̬Ps,-8t2`f&B?œjx΂Xl4op;DveAU~XHςs?ϴ2B/JXi,ʅ>U.9Q;,pܺ{x,qZ QLj/ YcZzvwt }L''v;2/=ŶJIDw+ R-W,l4%YIk+-؎lxj()@@;IENDB`db/login/themes/pmahomme/img/col_drop.png000064400000000157151502156020014414 0ustar00PNG  IHDR76IDATxcO^dS`&H3`UJc*@gP$=xIENDB`db/login/themes/pmahomme/img/east-mini.png000064400000000437151502156020014502 0ustar00PNG  IHDRVΎWIDATxc``O~ -π1?e! iPZI1A'/ ʛ8 =q c|Ill c&uo HA}jjsP O& xL'k|$O^`M}E/YrtddK"gZ# 6svIENDB`db/login/themes/pmahomme/img/b_event_add.png000064400000001375151502156020015050 0ustar00PNG  IHDRaIDATx\p$kS^k *mۻ-Ƕm۶m 7ƹ?zN/1˺'|'n'3W Ƃ|X''P)a!?w?;6>{V i E.Gw_2 t!6RB]t Z6$ȶ2b̷6c ֞LNlhm:}@|A"޽BR@ZoC@!,ACwr⢥ )` qu >{P)$P: EZ2ԄXvB Jl2ix1r !! P^UIG H; @JĝEEUkzMJ~IxrN)(ʃ5 nak#ZښPaZ`6( .6wDAڰ灚F+%bdds3p8mDynXCFC4$xVAua~ZMll8t:awU h`'bFچ_x} jIUacq)5 VCcFې[eŠr$ۉ3g4B/w;~TU]f"?wϡ[\" Y =Q]`X|]xwJ߾+}gXs#(`ߚs#. WܣwW f0 À( Tğ@Ά qِOpaIENDB`db/login/themes/pmahomme/img/vertical_line.png000064400000000103151502156020015422 0ustar00PNG  IHDR*kɜ IDATc@ G#xIENDB`db/login/themes/pmahomme/img/new_data_selected.png000064400000000263151502156020016243 0ustar00PNG  IHDR:zIDATu!@ ab01[W]=_~"oҴv7wO=/t;sW2+9>+؄ H,LʍɌ D/zacIENDB`db/login/themes/pmahomme/img/spacer.png000064400000000104151502156020014060 0ustar00PNG  IHDR  IDATxc``9:IENDB`db/login/themes/pmahomme/img/bd_insrow.png000064400000000243151502156020014575 0ustar00PNG  IHDR:tRNSv8\IDATxe  3U+Bj@OO~B ,Zx~ *=bf]sssUq61PWVư2w9IENDB`db/login/themes/pmahomme/img/b_tblops.png000064400000001031151502156020014407 0ustar00PNG  IHDRaIDATxa@]*SJvm{bm۶mio|\)j 03&`0#lX ZlllK}}=*7^?茎T*;E^^999deeyHtwwߞYTT,涤|955E__MMM444AWW3NMeQI!NOO5)))4!TWWyyD=KNNILL phb\C) #'lm ##{ZZ5l_Wn}>;"*2'oWOxۺjQsHm'ӟ\ VWP7$p>mLIq%N"ҶLб=eeFi^Q!Ļݢzn) |'vlgji!.̱遲-uid׵d/rHG:[~J;TJE D6J!)" Db 18iQi)JyXtElH;ibDWzNvE-@P,v_9mxjZ{ݖ-ɴY$ь(;? 6ǯن4d0h_C&zb_||+z40ݍ{>3hcy$:}dDuiJnưIENDB`db/login/themes/pmahomme/img/lightbulb_off.png000064400000001144151502156020015416 0ustar00PNG  IHDRa+IDATxR3AARcwm۶m?۶m6~s2;6vmȩInk/k2{2* xc:J[z=tF|#k'|' mBҫAc`*< ͪR*[r7-ɂ>3ܙ}\Q,o.%YE[/X$iP5&%nsFQP5>0)xVĮٕ;DU#I1nHFr?)RfIp/[NTq Cщwf:=w`R8%@v9T4].Sw<>g;SBqEā$*{rE {XJ} tEi{Kb >O'OcrmIK_^n~;;pU;*4:o~/|.?mNFggs _chv/ sjp@A (>-IENDB`db/login/themes/pmahomme/img/bd_nextpage.png000064400000000303151502156020015064 0ustar00PNG  IHDR7IDATxʵaBa?2d=)848L | 𤂫O,Nf֨,YX$SfV t`p*'j ZHSD&&B 9A ~8o˄;D0"}Pr;nMX9QnwIENDB`db/login/themes/pmahomme/img/b_ftext.png000064400000001046151502156020014244 0ustar00PNG  IHDRaIDATxAOjE7Fm۶{m۶m۶?ۨvgjMf<arh7R Hn!I "kUV"BR)p_Ƌ%<\`v=io UO>(č!r0!W ڟyCV YG4۫ tj{^¦۾#GAT Hw,q*tPV)`}=z(ՠ_RxQ=Ɗʊ#} \ '(ׂDٗ?6*sscg  wԢrkB˨y9}G&[Ԏtu܅`\򖩠Klr*8w!"80Ӭy9A_uR9`}5WjܦmX[3w $2Ntd)3]7'cq.b'Cq,}{׫|S 0(4"IENDB`db/login/themes/pmahomme/img/b_move.png000064400000000575151502156020014066 0ustar00PNG  IHDRaDIDATx$F'΅Sζm۶m۶=mcWbz^+Xf10^X;3~6,[$U:?+ #xZ C^8Vp?c r #xd[n{]n4(ֈ 9ܵ,b7܁]0ԏ() `Q~oM8XϿ%kyor+heB^JLd lK-k_K!#eBQك ^$m"Fy.B_S֨H@ 7XpsIENDB`db/login/themes/pmahomme/img/b_group.png000064400000001252151502156020014245 0ustar00PNG  IHDRaqIDATxCx$ kxm۶ۭضڈ؞ضm~q\_'q-5^T孰۝+/$b*8,eE^/'b$)+mK{s؍  /ͫuuFrJ"x|Π@d]¾S-=͙v<1IOr89A%C[{+.5F _ $C`i>W6`Ǥkeg+7Z! Cq"L}9F^A.Tj!B>ZP#}dOTUUn\-\;;g9)9.rκ@NժZl*iʃ&2X[-nnsPд*'ݹ)jRs;42V 6)HNΏ(A 6* dYOg^@DY)nsRd4I!y9MeHb!:JCiJ :tҜ7[kQ@0?aFvBH @㠴:QIENDB`db/login/themes/pmahomme/img/window-new.png000064400000000724151502156020014711 0ustar00PNG  IHDRaIDATxb *0yvlkfƔ=oa޲kŇ{_{ko߳v8PmC[a_m38ռ|u?΀kJFxm @ \u 7Y H&8DE/,BPHv ԛl1tWw)` $o03^w fDš= {~BmZFq`&f ߺIs^( K)R%Dә۶!Zt8g*O0Mi04fA[ DCCCF}J}}CB8QDKED">4fD(&!$T}Zy283-ɭGwV&Z٬Z6Bz~Iړ$WBIENDB`db/login/themes/pmahomme/img/pause.png000064400000000377151502156020013734 0ustar00PNG  IHDRh6tRNS7X}IDATxb?) iso D 0~O[Q@p @A7/mmdj#CiΏB 2Ψ:…L%y] 72:xEl#C ,ͅL3aDLAӝ,̧;۱}?}j& [IENDB`db/login/themes/pmahomme/img/b_tblimport.png000064400000001054151502156020015125 0ustar00PNG  IHDRaIDATx1@am۶m#hl۶m۶y, wWtFGUfRy0itHM:9sXҺwIR0ja76;w#@HALAtj¶a2^ ұ`7ߌTHRaYzB)S`'C崬8sZ.- #PZ{ BbD)b܂> cS\IENDB`db/login/themes/pmahomme/img/s_attention.png000064400000001067151502156020015143 0ustar00PNG  IHDRaIDATxAóm66ڈԶm۶ԶmL/[[_Xaf*~ƒ-%m*ugC'UXq%ٓ*c1>XP˳=4!EQUNp(d?Ƣt&ƃ0k\%HP+R&Y%9.l\(b=QJ~ue6INauZg0C%:KO+3tl 2$_Fd^[|gE9 #8Zhd6}yLT5%ī3a&J-@aҝ V@²ӆbxtb´$( ƀi5! ֔d6s!IENDB`db/login/themes/pmahomme/img/s_top.png000064400000000334151502156020013734 0ustar00PNG  IHDRaIDATxc,"XL {J߿ߞ={H6СC@ބ:!  *jJ;x,A:Hm y E@y"K q } $+ڵK (nUqm0H3 _ipIENDB`db/login/themes/pmahomme/img/b_firstpage.png000064400000001230151502156020015071 0ustar00PNG  IHDRa_IDATxl/}7mGmm۶m۶Ir7vH0Dو:)?gnwv(/YM-=B9ҘV;1]9f J_]ِC1hRX\s`4lҖdXRjuF04z$JQ* F^eD-ЀsmVbE$azUiRV<*q)Yd5 uv~2[dsX#gfZ\r%:Lhpk j#֤Ĥ4AZqѾFT-/ pͭ |.F3S zh 7zqW%h@+N8W]ZͿ. K48Y>(U hqóG3k4Չe5ˌ/H9MrD,ۼV-^-a0YP:ې%ZMYZU6*ȵ`buV_R Y`B?z7d)C /WHT`Te$HQ~(%=lG[z'0"w™f# z_)gz9>$+81 (D \|#?fԄ702̄ <\#XIENDB`db/login/themes/pmahomme/img/s_desc.png000064400000000222151502156020014044 0ustar00PNG  IHDR7YIDATxcO- _w'Pќ(X-ˊ_P&Kt~[NGVIΔ!  sIENDB`db/login/themes/pmahomme/img/bd_ftext.png000064400000000436151502156020014412 0ustar00PNG  IHDR7IDATx%Q]wNӥ'P&aȞ.3ϤOLEŵxZEAӭC{[RgRra+-i)DaHQpR ZKk97\} -dgT8Rlt]jQ4=%<{edYcG/V؍wf%/},>6yR'Vڎw~ZhS6xr%]9= X xVMgIENDB`db/login/themes/pmahomme/img/hide.png000064400000000434151502156020013522 0ustar00PNG  IHDR7IDATxb :K 2H7s;+@*d!qHwt;׺QxڙgɹT,+|ݏyqIC T .eb{KPW!( N,e`Phҍrj˖TyZ7,kEK T/(,XɥL#޸:.QEg.h⌏' }5[xٔQJt4preb;eIENDB`db/login/themes/pmahomme/img/bd_select.png000064400000000505151502156020014534 0ustar00PNG  IHDR7 IDATx3zfF[}Um+*m۶7T9y/.K sҴ2H=[$1c+"f4H} 3 +,3Yc„bB`%p- ÊeY`{&`|xW 038+}nE3L33C󥺖>T,nsGoRItd()rR*}c>ܯ9FJ4 'oqwa0fm8&-vmv<"@`-IENDB`db/login/themes/pmahomme/img/item.png000064400000000162151502156020013545 0ustar00PNG  IHDR oGtRNSn'IDATxcfљ3gp!T`a@a"ۇ% :vIENDB`db/login/themes/pmahomme/img/b_usredit.png000064400000001365151502156020014575 0ustar00PNG  IHDRaIDATxC$HV{m1ڶm۶m۶m*+C:#+C;n+/~C_<.p T4 GD3\瀋;]s.=&΄\XN<0: o[˙gPbwFA/oC$9TDHEX^S*їf"7lt!En&Dz/_ ܸݞ 0S*ݕWM_,a?-?|BIwJ=>E[;#Aa$Ըki!+8u16#8ګ?D(R-Dة@;n&ڵ0vH{+io7bx 8W`{ 4B &e@as̄[%?-~;2ZZP6%+&? ޠ@_YW^`Ȗ ŀUBJۮaFy)2w2tFh1#v=()*6G_/nh>zM,)`T:cOx-.(rrΔdkv؟h TP Hh)u[Nd2H3jZ;r)^jH- <iwumyԞhy"!URXJ3ѷ3IENDB`db/login/themes/pmahomme/img/b_sqlhelp.png000064400000001000151502156020014550 0ustar00PNG  IHDRaIDATxra@lضѵmIrΜ=k4bzz4$ _Fz؉b8P@e08Ž؉LcR!ʊ. ;;;a||@*@f= (®`0oeK100 )d2P&Q b7Lrƙkp=J#(ȥvy|߯查/g߰D ȏSePdAi?fMRS KEzynk'"g4q$Ϸmó.eҚ ^Fn݉Z9S}$CZj C leR4w?Њ#e<IENDB`db/login/themes/pmahomme/img/new_struct.png000064400000000445151502156020015010 0ustar00PNG  IHDR(-SoPLTE#&%!$wݪψUb"2#֙#fqDR! 3B""+ʋqIDATxeE@Cqaz3_v\(Q@RBC m v臬ѣH>%Z qnU +W W+gˇ:BjnW?֜]IENDB`db/login/themes/pmahomme/img/s_tbl.png000064400000001205151502156020013711 0ustar00PNG  IHDRaLIDATxK&7nǶmkf7ݮmo۵?et4ẍ_,̳Lpa]DMX(8jPT )M/ zyã.a.l#NzsZh'!x'r>8Hmxc~ # g'$iw쥸} ^s3Q} Z9X&%#sJEuu5tG_^8\J~J~VTj-~ :RʊE0s!w4&xޕoĿ^꣎PeՇee< 0:O]{ g?~;JkB0/`E_YQFӌ z)o v4cF%'&iQݿN|pgv0(l\%* ʼn2Gw~k>=zB,6yf A| 1 E`H2OԶW9ZS<|iJ $H +Lj8пE~Ffz)땠Hw_S(_s*њ"T{eDXL^D4FFVMJ374H9)Cۗ4=ዏ*WEШRތP(Yˮ6"Z(tBz ǏM]I(sTIENDB`db/login/themes/pmahomme/img/zoom-world-mini.png000064400000001351151502156020015653 0ustar00PNG  IHDR٬IDATxb``FCLLffLte%3sm""Sxx mj4϶m۶ֶm۶m6kFfRRZ DD::&۷}66SR흂|:+ ]l}}uuzzk44 zEF_{gθnf˛B PNv陒Ʀ)+thi]w]m[ f彡} ȫW=R20(3OrMЂ>SQ17"ǏHMLJqb}c$TU<@EDF=뎮mV=.g7QR:_ndxo&#i{9qR[kh;+^K\#ڹ|Gyˋ 1)H>car˫S{,f6[lgcʯKӂ#񂐌,kV峧9񞱲/<#2[ 7;M 0Xf*S65.r39<B=%1!> .F<68|r&'x"̭aމr-1>CD [m$ҜB}Jj;]] ]s2GIENDB`db/login/themes/pmahomme/img/s_asc.png000064400000000222151502156020013674 0ustar00PNG  IHDR7YIDATxcO=%V^$SzeWSU (uW_y, _?oC,$ IENDB`db/login/themes/pmahomme/img/bd_routine_add.png000064400000000415151502156020015552 0ustar00PNG  IHDR7IDATxaA E5p 1:wdf"-4x_XOE~RSt:Mc9&f|ɺsu!(_ ^;\:Eryx u:)"vG!"ɧ +M$藳F'd9Ho~k'f'{̈́RB3LS̑BE/M3C)Cj-s%C1wWUIENDB`db/login/themes/pmahomme/img/bd_lastpage.png000064400000000622151502156020015055 0ustar00PNG  IHDR7YIDATxLqPU+:a7Uf0s2ff0+/;Lj/u=|}9{!x0M2[ GI - >S x_Z!}!xo%%ѣCd%7@kؠ(!fMB`Sc9⿸[IVN HuĂ-tX&}~H(uRAFx^9kؠWN~+ͩ%oqFA9»1C{z&71m v(VZL9myJ ջl>a{W0QQ̘̍Mw;Y??QEnIENDB`db/login/themes/pmahomme/img/b_edit.png000064400000000571151502156020014041 0ustar00PNG  IHDRa@IDATx3x%@m\۶c۶YibUl۶mvNl͓[ F|l?S-R#ߴ4{~FeF,f0Q|H7xL:&+}0ۖ4$!ϊie`M,Zzm/NF`N%J(uAS򬙰vC1Y@lݝHzBc;o]m"[o|O?"3PFÏ\GER/|/Ax~GJ1X4SmLy/M:7Do$ U\&F^IENDB`db/login/themes/pmahomme/img/s_db.png000064400000000510151502156020013513 0ustar00PNG  IHDR7IDATx\b-QFim[/qRbb']\Ŷ͵)RƲ΀rU`덌Ҭ)1Bt|lӦN֞էGB1{IFXUCn}G60{0-!gWHp9 /J !܉lp8ᰣ0 ;*XYg5Q1&X4N !@ :Vg3%yʷ0Ц/EEIaT"M "ݳxFO^ݴ/OFIENDB`db/login/themes/pmahomme/img/s_link.png000064400000000430151502156020014064 0ustar00PNG  IHDR7IDATxc2@;ݜ$*.T*W~ڏѥWһmO_?ǟmK|(ޟey3_Wzw.̔Kvr.~\^'@Uzo?\ۮU5!d2p%{ϐO߷2`` dnF"IENDB`db/login/themes/pmahomme/img/b_import.png000064400000001054151502156020014423 0ustar00PNG  IHDRaIDATx1@am۶m#hl۶m۶y, wWtFGUfRy0itHM:9sXҺwIR0ja76;w#@HALAtj¶a2^ ұ`7ߌTHRaYzB)S`'C崬8sZ.- #PZ{ BbD)b܂> cS\IENDB`db/login/themes/pmahomme/img/s_partialtext.png000064400000000262151502156020015473 0ustar00PNG  IHDR2 PLTEgt3d\_tRNS@fWIDATxcp^֪U&*"T:00.a`p'y)P(Е &P)y@FCC5>(+#c` ?KIENDB`db/login/themes/pmahomme/img/s_unlink.png000064400000001115151502156020014430 0ustar00PNG  IHDRaIDATxkqڶm۶m۾Qmֶݿ;UTfSZ  ҶU\ፇJV78TzvUtTUu5U\W.ut/5Ƣ`ek#lG022YYYyRXt<# 6;88Ե7oIOO)--eOG9ꔞpaaᾏQ{{- @rr2^ޗ;+++{͂9sfV[E"V֗bRTT~Օvquu%ؽ24|e'GGǥ|>X,&$55Ɂ&rJJJj{{*vvv"""ǿ`WABX>rp`c4/TR{X0KY1e|Zd=\JVJGz3[7 ZОUiai5߉NCh{|xIENDB`db/login/themes/pmahomme/img/database.png000064400000000510151502156020014350 0ustar00PNG  IHDR7IDATx\b-QFim[/qRbb']\Ŷ͵)RƲ΀rU`덌Ҭ)1Bt|lӦN֞էGB1{IFXUCn}G60{0-!gWHp9 /J !܉lp8ᰣ0 ;*XYg5Q1&X4N !@ :Vg3%yʷ0Ц/EEIaT"M "ݳxFO^ݴ/OFIENDB`db/login/themes/pmahomme/img/b_drop.png000064400000001175151502156020014061 0ustar00PNG  IHDRaDIDATxb?EC990 pԶm+wڮdk۶m۶ƴk}yüEjb+(\ B^臀*ȡ>3*UQ.w޴GwW|Ib|`,,딓M2y8x$#y,6 g؍n=w^ I y=ti?#s4f iW@qX<f>qI O=(`&ޕ],Ghs~Bw8xll ݣ%N4vK'!PZc#f"{+nKLw6MeX59_4qsL%|f1:0^qj%ّ9TDc+n]9xݪ!r@yD5y܋\Fl2U1&{*kT$b"r|Ki9p]L!/RpmtpLVyg' vN לn\Wmd<%_v[ V.%wdROop/bkG$^P|>#Thlg>b 2bX%^Png>ÂZV,(}g50L'!+rr٧j.m <@ֱOSD!ElQHo0yȒJv ٤ kv2/nvIП'kHP˯ͻ9sDecXIENDB`db/login/themes/pmahomme/img/s_loggoff.png000064400000001162151502156020014555 0ustar00PNG  IHDRa9IDATxR]A=m6WmXvF"ݨqmz]ohyʾGl̔VF"ܹjx)U`*"(3 vǰ6F3uʰ4< 8/PXKK(w"6)D_`2!@+6&^1[pS<J ^4|ZwG ˎ%J';hb@61o} {n)lqy$9N57J0&F8a׸[ӧkodDȳyNhĢVXD ԩ E Wݝ<~ӈAQԫWTG9DͰ6Pd QwV=nH͏ADx=WUBlo"Y'v W5A=;bx^莌߁KcՉJ8XqPM cZYNTɄ 88`&/^8_Qo Nb`f`b`ecX 9)rb|Q&V5F&3$vɉkIENDB`db/login/themes/pmahomme/img/s_theme.png000064400000001404151502156020014233 0ustar00PNG  IHDRaIDATxtRARʌm۶mm۶m۶mΞoZ*+ fo__{mu\᭾ M8tǛE9Z2=sr$X`!u@a,VDu,+ѝdR{$^3AX| {7Rs#$G0p5GⅥ']_TWNb_H2X~,} +}fa !}•9OW[-M` ^a1 &B0ATUp, !SGO%B$Q$ˮ},'i=mݼT+E`4 c!Gv0c"!=z0}4Un. Z#,D8HVrgA0I.gvp|wP%&gUD鄁 ,ptN9%>Ö#o+6|h REw9<_0 QFHQd :Jxk;5 Ś_nT4ƭ4[rB?9_t;z}aÂvT` 5s:X>%{jAn_vXD'nTGpXcVI "IIsF4Ŷ\Duݒ#E ٻDϛM!g L8]ʟ%K(>dcl@ELaٮIENDB`db/login/themes/pmahomme/img/new_data_hovered.png000064400000000404151502156020016104 0ustar00PNG  IHDR(-SWPLTE#ŐbVNuC:a0X~LviأְTvLwj|utDk9Gl>og͘Ï|}}hIDATxuO1:9H@`L M}V\+#RrW@h<,4hI`Ht9l)iȩIHKнSUDDpLE큌$t%x* <)oo$8p (wC0Pt( ;dҞF~4{%t[T0Ӡ F+}HuIW j0}*6Ԝo Sxb.;Phj$'c) W߆ifPevVKT n(8فUxhT{Ժ-UrXN@I j۩>ENiOw oښgDLP3rY8٧.k;j{0^'aX0asbw9l; =Õw1gtgW$AtxeySG y3'RƍG!N0~zlk5n,IENDB`db/login/themes/pmahomme/img/s_okay.png000064400000001306151502156020014075 0ustar00PNG  IHDRaIDATxC1;LmԺc۶m۶m6j"s|f݅J [e[6_@Xz aR#eRRvQ Z:FD8taO.'P**޴aЀ#*"~*}vYaM=wP+:S9nVq"1}s >ЫA*P6#A,AYISbYSiaXN;Xpo,D9_`VTćyڠr*$uQCu),RÊW0ibz<;ܑXDtPvĈe3gv.q` s7g@oq|4DgЬ}?IENDB`db/login/themes/pmahomme/img/b_plugin.png000064400000001000151502156020014376 0ustar00PNG  IHDRaIDATxR3^aŶmWf.f7q.n6MltضfvsjfuA.jid.˚0O>ոW"fC7}?OO#8Xws Ak7F|}+ Ibפ}jp z7saY2;пU&rpIEՏg dY90sh $SP5AJ-=$HYU|l/nw>ހ`. rE:G7Ù+q|*> X 'Zbŧg9)4-l2'&0:~}<⟤|"AdЦoп2Eb}d Ɖg j a`!x1^}x Ih٤%U`¨0`Pg1[{v{WCD*x[V m"fIENDB`db/login/themes/pmahomme/img/west-mini.png000064400000000454151502156020014527 0ustar00PNG  IHDRVΎWIDATxc?f` O?a?IQ ' A20%ZN\?'!qgϾ 3T6%%AuL!҉ڜ۷߃' aO?ϟ|X aCB6G?G|l RZz%K ʳŒʹ/F(/ߙs1SIENDB`db/login/themes/pmahomme/img/b_usradd.png000064400000001236151502156020014375 0ustar00PNG  IHDRaeIDATxLZŶm;ٶmmf![֫jw5?6W)p #b#=t9;Qqb?8lS\uF]Է2sTvMʋhCсr~ܯBw-p6 w68~GϯMxif"XzQw0F8Yj+)OR5)+hb2cWB́4XEl1LDy+{bPiж@d=|7[rHz.=A%@ Pdʀ9ab $!.6۟ ,5X?\bg$ֽB`;VKXJ Op*@* D)duJ< qc֨sZL羺iLH29T$q(NOx'"9x)OvyN5G1'X ,CNW(>VF>3ZͨhK))$K!O Wi8H'|O_,ƶ;,x꫒ۚ_J.߻+d3a@*O gC8Ft IENDB`db/login/themes/pmahomme/img/b_events.png000064400000001277151502156020014424 0ustar00PNG  IHDRaIDATxSaVc"nP=:mg۶?ָ{竍$j7K\dPd *ՔbENz?ɿ_/Jeuk ѡA$|^xOr@׬+c׃6"35J &a7.&PP̵6# ہr2axw|L>l8dXz <@sD=0{a3H$oaLr"LG@gW;sCFwqbBiB}c | Y\8kAzJe3jPXqVD0EJd2x"; %f\ڨb:#4xN ' Ce5I?tz5g=s2f4uR3FOGg+ XϜ?bm}c0 ts5?6 ?L#%S*4I?Nr?a?yIENDB`db/login/themes/pmahomme/img/b_usrcheck.png000064400000001316151502156020014721 0ustar00PNG  IHDRaIDATxQSlml۶m۶m'vsvwq{E92xO]žg vў\Ͳ2:B42~8H mM/cp 9E6\JtZ=ol\C\ͱGmwg"΂fp]!lpf7 g Yv 1e*Gvcp(7_|i/O5h5x)=oBmz%?lSOg XA.QzE8_5`/tJt_}ȫz'J b`r nL^o:Q  s o(Ր-!Hj c\Z{FZ!oZG4.x{;C8Hdb$$BVR*UU4L3`%r ݂&+h!y?ǤC`Y '$N,D\+jVm*[NyC:3z0#\IIo117kϕ@,8D}fm*vf΄lw)#aو[!P+7Xߒ1C$×=y\W}Ur[Ke/EmnR yfx":Zh% 8m-IIENDB`db/login/themes/pmahomme/img/b_saveimage.png000064400000001243151502156020015052 0ustar00PNG  IHDRajIDATx}c'p0T7uE%|,v 7rږqhxIENDB`db/login/themes/pmahomme/img/b_sql.png000064400000001250151502156020013706 0ustar00PNG  IHDRaoIDATxMlG{{AmۊSq*jn԰kv{94K3p3ܿgzppqm ,XǁW51puG^w 5-/Y~]OSǁTG˒4TɎDIIm5L4}{F-fCqJ (R޲uBqs;ydn^J,R 4!)*vxU>^ 7Naxi? +;cb<߹^ 6K0~ᚣWN4Qy e|H&˰^i%skx)^`0Y>hT>A-^VΟ|뺑%X'{qsZ:, 1W?9 t>;uC5TO" If~cP>w2pGP;z/}큠|f" AE oM,tvrw $DfGIENDB`db/login/themes/pmahomme/img/new_struct_hovered.png000064400000000445151502156020016524 0ustar00PNG  IHDR(-SoPLTE#mwPW?CEJ\dbkֿgqƥͭV]Y\JPβLPnxtru~yei愑aj腓8qIDATxeE@Cqaz3_v\(Q@RBC m v臬ѣH>%Z qnU +W W+gˇ:BjnW?֜]IENDB`db/login/themes/pmahomme/img/s_reload.png000064400000001017151502156020014377 0ustar00PNG  IHDRaIDATx@s9@l\۶m۶m۶̼AfWsptt2M6IJ]O0mv<6a%rX |3ڝWpCRuQTQt(Y✴APNV>5ETmRAz}[<ſlz$QOȈju*_}2>5_69NK'8v;F&m!c>D2Q+.V\#}Izˇؗ 0Uw'g)EI]ú֘ωo0)àX8r4;I%j*bB !b"exPJWBEjC96OȨ/ qtQWOx,%THsc~Ot1ҼaIENDB`db/login/themes/pmahomme/img/b_usrlist.png000064400000001245151502156020014620 0ustar00PNG  IHDRalIDATxQ3Z6ضEl۶m۶m,y~`M>"j0h+}wQ➟frg'`7g(x3uC^"Ra8U K0uC!bCg;ԦU_j𦘁dX;́c"iƻXR`.|+jEi~1E(J( ęa$,E:|^D#WET%hF0qB\S rq))t{hS 4"H !X2dY*5V# J,w1G@ё}\uaW UTCLb Qt3_3j\3A h&*߅ ;GSZV1.MH B62!| ˫=ZҦ>|S*DM(`#hQ|YZAz9VwX\\*[8l\; (EQ3+[ZIFDR1˗L>V$q9i>RHb)p, N톱Ta+\N6+0jh7w|+O.I6AG[IENDB`db/login/themes/pmahomme/img/bd_unique.png000064400000000464151502156020014567 0ustar00PNG  IHDR7IDATxb O'0;a/Hn@! Fb۶d;^.9Elmc۶͙sIhUv J?)b206s)B2\`k>,ic@!tA~7TX!Dhzc(d4V*p bkK7@]5cBkp_X᪾fPm+̰ZoE^yig:WP\edTFIENDB`db/login/themes/pmahomme/img/b_more.png000064400000000157151502156020014056 0ustar00PNG  IHDR76IDATxcO^dS`&H3`UJc*@gP$=xIENDB`db/login/themes/pmahomme/img/b_unique.png000064400000001107151502156020014416 0ustar00PNG  IHDRaIDATx]QQ)cVP۶mcm۶m۶g֘'9:d/33צ#TfZ" * P|e X#,eg_e%J\uBӆO2ׯ<}G,yidwjkK$*~` LpAar<~y9MF\q֭XOZdl:jU Emt4̝< DBLJ^cT } {-߾GӝG8k[viSleFsi!MDPIENDB`db/login/themes/pmahomme/img/normalize.png000064400000000771151502156020014615 0ustar00PNG  IHDRaIDATx3]Am۶f[*lc4;KUX|sH ACB~9ROs[30s@/oWJg!lqu^J~C'@Cl@˵Y?K5nP:NT^>#[ |Z= jJ"/:2x [6@8 56f\BQ# f@d?z^PPÇCxu3 .de:W?#GFF"99yyys0 So@x#""sssЌWi?D]SvTk޽{Q]]=#'$$ $=222PUUJ4 !>>~vQLNN"((iiizd=---~́VOӲaaa1#P IENDB`db/login/themes/pmahomme/img/eye_grey.png000064400000000437151502156020014424 0ustar00PNG  IHDR:tRNS@OIDATxbt`@XʞĈ ض9@;NV9Gm[UYV=(ZPan,?,~MBj?ͿG}Y TZĿ e{^}Ia)60_3 iF8oҳ$[ˈٚ6T;rI?V،C1˦n$yș0OBnL۸IENDB`db/login/themes/pmahomme/img/b_tipp.png000064400000001270151502156020014065 0ustar00PNG  IHDRaIDATxC[D?um۶m۶mٶm<јiTn1yԦk)UO?o1Ӭ.nF-[{ʳ ]* !0Yx}hBs~:@TOssMU "#Tp>:9H@`L M}V\+#RrW@h<,4hI`Ht9l)iȩIHKнSUDDpLE큌$t%x* <)oo$8p (wC0Pt( ;dҞF~4{%t[T0Ӡ F+}HuIW j0}*6Ԝo Sxb.;Phj$'c) W߆ifPevVKT n(8فUxhT{Ժ-UrXN@I j۩>ENiOw oښgDLP3rY8٧.k;j{0^'aX0asbw9l; =Õw1gtgW$AtxeySG y3'RƍG!N0~zlk5n,IENDB`db/login/themes/pmahomme/img/zoom-plus-mini.png000064400000000500151502156020015502 0ustar00PNG  IHDRVΎWIDATx@%F(H`]]؅0wm<#z*۬D &l9t.^XI囧/A}4*rf?￾?0>1 $P3+!pE&ž?h" qe@II6y=ä0CE |dm 9)&M:GP2L0,,pUp~|JdBp[v0 J ^/*[QUzd0(=(}`sI)W DEW5IENDB`db/login/themes/pmahomme/img/bd_edit.png000064400000000330151502156020014176 0ustar00PNG  IHDR7IDATxb \\4(=Ka r2Vhhri@`}[99"nV wj2SIENDB`db/login/themes/pmahomme/layout.inc.php000064400000004206151502156020014126 0ustar00getImgPath('designer/left_panel_butt.png'); // unplanned execution path if (! defined('PHPMYADMIN') && ! defined('TESTSUITE')) { exit(); } ?> .icon { margin: 0; margin-left: .3em; padding: 0 !important; width: 16px; height: 16px; } .icon_fulltext { width: 50px; height: 19px; } .ic_asc_order { background-image: url('getImgPath('asc_order.png'); ?>'); } .ic_b_bookmark { background-image: url('getImgPath('b_bookmark.png'); ?>'); } .ic_b_browse { background-image: url('getImgPath('b_browse.png'); ?>'); } .ic_b_calendar { background-image: url('getImgPath('b_calendar.png'); ?>'); } .ic_b_chart { background-image: url('getImgPath('b_chart.png'); ?>'); } .ic_b_close { background-image: url('getImgPath('b_close.png'); ?>'); } .ic_b_column_add { background-image: url('getImgPath('b_column_add.png'); ?>'); } .ic_b_comment { background-image: url('getImgPath('b_comment.png'); ?>'); } .ic_b_dbstatistics { background-image: url('getImgPath('b_dbstatistics.png'); ?>'); } .ic_b_deltbl { background-image: url('getImgPath('b_deltbl.png'); ?>'); } .ic_b_docs { background-image: url('getImgPath('b_docs.png'); ?>'); } .ic_b_docsql { background-image: url('getImgPath('b_docsql.png'); ?>'); } .ic_b_drop { background-image: url('getImgPath('b_drop.png'); ?>'); } .ic_b_edit { background-image: url('getImgPath('b_edit.png'); ?>'); } .ic_b_empty { background-image: url('getImgPath('b_empty.png'); ?>'); } .ic_b_engine { background-image: url('getImgPath('b_engine.png'); ?>'); } .ic_b_event_add { background-image: url('getImgPath('b_event_add.png'); ?>'); } .ic_b_events { background-image: url('getImgPath('b_events.png'); ?>'); } .ic_b_export { background-image: url('getImgPath('b_export.png'); ?>'); } .ic_b_favorite { background-image: url('getImgPath('b_favorite.png'); ?>'); } .ic_b_find_replace { background-image: url('getImgPath('b_find_replace.png'); ?>'); } .ic_b_firstpage { background-image: url('getImgPath('b_firstpage.png'); ?>'); } .ic_b_ftext { background-image: url('getImgPath('b_ftext.png'); ?>'); } .ic_b_globe { background-image: url('getImgPath('b_globe.gif'); ?>'); } .ic_b_group { background-image: url('getImgPath('b_group.png'); ?>'); } .ic_b_help { background-image: url('getImgPath('b_help.png'); ?>'); } .ic_b_home { background-image: url('getImgPath('b_home.png'); ?>'); } .ic_b_import { background-image: url('getImgPath('b_import.png'); ?>'); } .ic_b_index { background-image: url('getImgPath('b_index.png'); ?>'); } .ic_b_index_add { background-image: url('getImgPath('b_index_add.png'); ?>'); } .ic_b_inline_edit { background-image: url('getImgPath('b_inline_edit.png'); ?>'); } .ic_b_insrow { background-image: url('getImgPath('b_insrow.png'); ?>'); } .ic_b_lastpage { background-image: url('getImgPath('b_lastpage.png'); ?>'); } .ic_b_minus { background-image: url('getImgPath('b_minus.png'); ?>'); } .ic_b_more { background-image: url('getImgPath('b_more.png'); ?>'); } .ic_b_move { background-image: url('getImgPath('b_move.png'); ?>'); } .ic_b_newdb { background-image: url('getImgPath('b_newdb.png'); ?>'); } .ic_b_newtbl { background-image: url('getImgPath('b_newtbl.png'); ?>'); } .ic_b_nextpage { background-image: url('getImgPath('b_nextpage.png'); ?>'); } .ic_b_no_favorite { background-image: url('getImgPath('b_no_favorite.png'); ?>'); } .ic_b_pdfdoc { background-image: url('getImgPath('b_pdfdoc.png'); ?>'); } .ic_b_plugin { background-image: url('getImgPath('b_plugin.png'); ?>'); } .ic_b_plus { background-image: url('getImgPath('b_plus.png'); ?>'); } .ic_b_prevpage { background-image: url('getImgPath('b_prevpage.png'); ?>'); } .ic_b_primary { background-image: url('getImgPath('b_primary.png'); ?>'); } .ic_b_print { background-image: url('getImgPath('b_print.png'); ?>'); } .ic_b_props { background-image: url('getImgPath('b_props.png'); ?>'); } .ic_b_relations { background-image: url('getImgPath('b_relations.png'); ?>'); } .ic_b_report { background-image: url('getImgPath('b_report.png'); ?>'); } .ic_b_routine_add { background-image: url('getImgPath('b_routine_add.png'); ?>'); } .ic_b_routines { background-image: url('getImgPath('b_routines.png'); ?>'); } .ic_b_save { background-image: url('getImgPath('b_save.png'); ?>'); } .ic_b_saveimage { background-image: url('getImgPath('b_saveimage.png'); ?>'); } .ic_b_sbrowse { background-image: url('getImgPath('b_sbrowse.png'); ?>'); } .ic_b_sdb { background-image: url('getImgPath('b_sdb.png'); ?>'); width: 10px; height: 10px; } .ic_b_search { background-image: url('getImgPath('b_search.png'); ?>'); } .ic_b_select { background-image: url('getImgPath('b_select.png'); ?>'); } .ic_b_snewtbl { background-image: url('getImgPath('b_snewtbl.png'); ?>'); } .ic_b_spatial { background-image: url('getImgPath('b_spatial.png'); ?>'); } .ic_b_sql { background-image: url('getImgPath('b_sql.png'); ?>'); } .ic_b_sqldoc { background-image: url('getImgPath('b_sqldoc.png'); ?>'); } .ic_b_sqlhelp { background-image: url('getImgPath('b_sqlhelp.png'); ?>'); } .ic_b_table_add { background-image: url('getImgPath('b_table_add.png'); ?>'); } .ic_b_tblanalyse { background-image: url('getImgPath('b_tblanalyse.png'); ?>'); } .ic_b_tblexport { background-image: url('getImgPath('b_tblexport.png'); ?>'); } .ic_b_tblimport { background-image: url('getImgPath('b_tblimport.png'); ?>'); } .ic_b_tblops { background-image: url('getImgPath('b_tblops.png'); ?>'); } .ic_b_tbloptimize { background-image: url('getImgPath('b_tbloptimize.png'); ?>'); } .ic_b_tipp { background-image: url('getImgPath('b_tipp.png'); ?>'); } .ic_b_trigger_add { background-image: url('getImgPath('b_trigger_add.png'); ?>'); } .ic_b_triggers { background-image: url('getImgPath('b_triggers.png'); ?>'); } .ic_b_undo { background-image: url('getImgPath('b_undo.png'); ?>'); } .ic_b_unique { background-image: url('getImgPath('b_unique.png'); ?>'); } .ic_b_usradd { background-image: url('getImgPath('b_usradd.png'); ?>'); } .ic_b_usrcheck { background-image: url('getImgPath('b_usrcheck.png'); ?>'); } .ic_b_usrdrop { background-image: url('getImgPath('b_usrdrop.png'); ?>'); } .ic_b_usredit { background-image: url('getImgPath('b_usredit.png'); ?>'); } .ic_b_usrlist { background-image: url('getImgPath('b_usrlist.png'); ?>'); } .ic_b_versions { background-image: url('getImgPath('b_versions.png'); ?>'); } .ic_b_view { background-image: url('getImgPath('b_view.png'); ?>'); } .ic_b_view_add { background-image: url('getImgPath('b_view_add.png'); ?>'); } .ic_b_views { background-image: url('getImgPath('b_views.png'); ?>'); } .ic_b_left { background-image: url('getImgPath('b_left.png'); ?>'); } .ic_b_right { background-image: url('getImgPath('b_right.png'); ?>'); } .ic_bd_browse { background-image: url('getImgPath('bd_browse.png'); ?>'); } .ic_bd_deltbl { background-image: url('getImgPath('bd_deltbl.png'); ?>'); } .ic_bd_drop { background-image: url('getImgPath('bd_drop.png'); ?>'); } .ic_bd_edit { background-image: url('getImgPath('bd_edit.png'); ?>'); } .ic_bd_empty { background-image: url('getImgPath('bd_empty.png'); ?>'); } .ic_bd_export { background-image: url('getImgPath('bd_export.png'); ?>'); } .ic_bd_firstpage { background-image: url('getImgPath('bd_firstpage.png'); ?>'); } .ic_bd_ftext { background-image: url('getImgPath('bd_ftext.png'); ?>'); } .ic_bd_index { background-image: url('getImgPath('bd_index.png'); ?>'); } .ic_bd_insrow { background-image: url('getImgPath('bd_insrow.png'); ?>'); } .ic_bd_lastpage { background-image: url('getImgPath('bd_lastpage.png'); ?>'); } .ic_bd_nextpage { background-image: url('getImgPath('bd_nextpage.png'); ?>'); } .ic_bd_prevpage { background-image: url('getImgPath('bd_prevpage.png'); ?>'); } .ic_bd_primary { background-image: url('getImgPath('bd_primary.png'); ?>'); } .ic_bd_routine_add { background-image: url('getImgPath('bd_routine_add.png'); ?>'); } .ic_bd_sbrowse { background-image: url('getImgPath('bd_sbrowse.png'); ?>'); } .ic_bd_select { background-image: url('getImgPath('bd_select.png'); ?>'); } .ic_bd_spatial { background-image: url('getImgPath('bd_spatial.png'); ?>'); } .ic_bd_unique { background-image: url('getImgPath('bd_unique.png'); ?>'); } .ic_centralColumns { background-image: url('getImgPath('centralColumns.png'); ?>'); } .ic_centralColumns_add { background-image: url('getImgPath('centralColumns_add.png'); ?>'); } .ic_centralColumns_delete { background-image: url('getImgPath('centralColumns_delete.png'); ?>'); } .ic_col_drop { background-image: url('getImgPath('col_drop.png'); ?>'); } .ic_console { background-image: url('getImgPath('console.png'); ?>'); } .ic_database { background-image: url('getImgPath('database.png'); ?>'); } .ic_eye { background-image: url('getImgPath('eye.png'); ?>'); } .ic_eye_grey { background-image: url('getImgPath('eye_grey.png'); ?>'); } .ic_hide { background-image: url('getImgPath('hide.png'); ?>'); } .ic_item { background-image: url('getImgPath('item.png'); ?>'); width: 9px; height: 9px; } .ic_lightbulb { background-image: url('getImgPath('lightbulb.png'); ?>'); } .ic_lightbulb_off { background-image: url('getImgPath('lightbulb_off.png'); ?>'); } .ic_more { background-image: url('getImgPath('more.png'); ?>'); width: 13px; } .ic_new_data { background-image: url('getImgPath('new_data.png'); ?>'); } .ic_new_data_hovered { background-image: url('getImgPath('new_data_hovered.png'); ?>'); } .ic_new_data_selected { background-image: url('getImgPath('new_data_selected.png'); ?>'); } .ic_new_data_selected_hovered { background-image: url('getImgPath('new_data_selected_hovered.png'); ?>'); } .ic_new_struct { background-image: url('getImgPath('new_struct.png'); ?>'); } .ic_new_struct_hovered { background-image: url('getImgPath('new_struct_hovered.png'); ?>'); } .ic_new_struct_selected { background-image: url('getImgPath('new_struct_selected.png'); ?>'); } .ic_new_struct_selected_hovered { background-image: url('getImgPath('new_struct_selected_hovered.png'); ?>'); } .ic_normalize { background-image: url('getImgPath('normalize.png'); ?>'); } .ic_pause { background-image: url('getImgPath('pause.png'); ?>'); } .ic_php_sym { background-image: url('getImgPath('php_sym.png'); ?>'); } .ic_play { background-image: url('getImgPath('play.png'); ?>'); } .ic_s_asc { background-image: url('getImgPath('s_asc.png'); ?>'); } .ic_s_asci { background-image: url('getImgPath('s_asci.png'); ?>'); } .ic_s_attention { background-image: url('getImgPath('s_attention.png'); ?>'); } .ic_s_cancel { background-image: url('getImgPath('s_cancel.png'); ?>'); } .ic_s_cancel2 { background-image: url('getImgPath('s_cancel2.png'); ?>'); } .ic_s_cog { background-image: url('getImgPath('s_cog.png'); ?>'); } .ic_s_db { background-image: url('getImgPath('s_db.png'); ?>'); } .ic_s_desc { background-image: url('getImgPath('s_desc.png'); ?>'); } .ic_s_error { background-image: url('getImgPath('s_error.png'); ?>'); } .ic_s_host { background-image: url('getImgPath('s_host.png'); ?>'); } .ic_s_info { background-image: url('getImgPath('s_info.png'); ?>'); } .ic_s_lang { background-image: url('getImgPath('s_lang.png'); ?>'); } .ic_s_link { background-image: url('getImgPath('s_link.png'); ?>'); } .ic_s_lock { background-image: url('getImgPath('s_lock.png'); ?>'); } .ic_s_loggoff { background-image: url('getImgPath('s_loggoff.png'); ?>'); } .ic_s_notice { background-image: url('getImgPath('s_notice.png'); ?>'); } .ic_s_okay { background-image: url('getImgPath('s_okay.png'); ?>'); } .ic_s_passwd { background-image: url('getImgPath('s_passwd.png'); ?>'); } .ic_s_process { background-image: url('getImgPath('s_process.png'); ?>'); } .ic_s_really { background-image: url('getImgPath('s_really.png'); ?>'); width: 11px; height: 11px; } .ic_s_reload { background-image: url('getImgPath('s_reload.png'); ?>'); } .ic_s_replication { background-image: url('getImgPath('s_replication.png'); ?>'); } .ic_s_rights { background-image: url('getImgPath('s_rights.png'); ?>'); } .ic_s_sortable { background-image: url('getImgPath('s_sortable.png'); ?>'); } .ic_s_status { background-image: url('getImgPath('s_status.png'); ?>'); } .ic_s_success { background-image: url('getImgPath('s_success.png'); ?>'); } .ic_s_sync { background-image: url('getImgPath('s_sync.png'); ?>'); } .ic_s_tbl { background-image: url('getImgPath('s_tbl.png'); ?>'); } .ic_s_theme { background-image: url('getImgPath('s_theme.png'); ?>'); } .ic_s_top { background-image: url('getImgPath('s_top.png'); ?>'); } .ic_s_unlink { background-image: url('getImgPath('s_unlink.png'); ?>'); } .ic_s_vars { background-image: url('getImgPath('s_vars.png'); ?>'); } .ic_s_views { background-image: url('getImgPath('s_views.png'); ?>'); } .ic_show { background-image: url('getImgPath('show.png'); ?>'); } .ic_window-new { background-image: url('getImgPath('window-new.png'); ?>'); } .ic_ajax_clock_small { background-image: url('getImgPath('ajax_clock_small.gif'); ?>'); } .ic_s_partialtext { background-image: url('getImgPath('s_partialtext.png'); ?>'); } .ic_s_fulltext { background-image: url('getImgPath('s_fulltext.png'); ?>'); } db/login/themes/pmahomme/css/enum_editor.css.php000064400000002412151502156020015727 0ustar00 /** * ENUM/SET editor styles */ p.enum_notice { margin: 5px 2px; font-size: 80%; } #enum_editor p { margin-top: 0; font-style: italic; } #enum_editor .values, #enum_editor .add { width: 100%; } #enum_editor .add td { vertical-align: middle; width: 50%; padding: 0 0 0; padding-: 1em; } #enum_editor .values td.drop { width: 1.8em; cursor: pointer; vertical-align: middle; } #enum_editor .values input { margin: .1em 0; padding-: 2em; width: 100%; } #enum_editor .values img { width: 1.8em; vertical-align: middle; } #enum_editor input.add_value { margin: 0; margin-: 0.4em; } #enum_editor_output textarea { width: 100%; float: ; margin: 1em 0 0 0; } /** * ENUM/SET editor integration for the routines editor */ .enum_hint { position: relative; } .enum_hint a { position: absolute; : 81%; bottom: .35em; } db/login/themes/pmahomme/css/printview.css000064400000005272151502156020014665 0ustar00@media print { #back_button_print_view, #print_button_print_view { display: none; } } /* For removing element from Print View */ .print_ignore { display: none; } .nowrap { white-space: nowrap; } .hide { display: none; } /* Standard CSS */ body, table, th, td { color: #000; background-color: #fff; font-size: 12px; } /* To remove link text decoration */ a:link { color:#000; text-decoration:none } /* To remove any image borders */ img { border: 0; } /* Table specific */ table, th, td { border: .1em solid #000; background-color: #fff; } table { border-collapse: collapse; border-spacing: 0.2em; } thead { border-collapse: collapse; border-spacing: 0.2em; border: .1em solid #000; font-weight: 900; } th, td { padding: 0.2em; } thead th { font-weight: bold; background-color: #e5e5e5; border: .1em solid #000; } th.vtop, td.vtop { vertical-align: top; } th.vbottom, td.vbottom { vertical-align: bottom; } /* Common Elements not to be included */ /* Hide Navigation and Top Menu bar */ #pma_navigation, #floating_menubar { display: none; } /* Hide console */ #pma_console_container { display: none; } /* Hide Navigation items (like Goto Top) */ #page_nav_icons { display: none; } /* Hide the Create Table form */ #create_table_form_minimal { display: none; } /* Hide the Page Settings Modal box */ #page_settings_modal { display: none; } /* Hide footer, Demo notice, errors div */ #pma_footer, #pma_demo, #pma_errors { display: none; } /* Hide the #selflink div */ #selflink { display: none; } /* Position the main content */ #page_content { position: absolute; left: 0; top: 0; width: 95%; float: none; } /* Specific Class for overriding while Print */ .print { background-color: #000; } /* For the Success message div */ div.success { background-color: #fff; } .sqlOuter { color: black; background-color: #000; } /* For hiding 'Open a New phpMyAdmin Window' button */ .ic_window-new, .ic_s_cog { display: none; } .sticky_columns tr { display: none; } #structure-action-links, #addColumns { display: none; } /* Hide extra menu on tbl_structure.php */ #topmenu2 { display: none; } .cDrop, .cEdit, .cList, .cCpy, .cPointer { display: none; } /* odd items 1,3,5,7,... */ table tbody:first-of-type tr:nth-child(odd), table tbody:first-of-type tr:nth-child(odd) th { background: #fff; } /* even items 2,4,6,8,... */ table tbody:first-of-type tr:nth-child(even), table tbody:first-of-type tr:nth-child(even) th { background: #DFDFDF; } .column_attribute { font-size: 100%; } db/login/themes/pmahomme/css/codemirror.css.php000064400000003125151502156020015564 0ustar00 .CodeMirror { height: em; direction: ltr; } #inline_editor_outer .CodeMirror { height: em; } .insertRowTable .CodeMirror { height: em; width: em; border: 1px solid #a9a9a9; } #pma_console .CodeMirror-gutters { background-color: initial; border: none; } span.cm-keyword, span.cm-statement-verb { color: #909; } span.cm-variable { color: black; } span.cm-comment { color: #808000; } span.cm-mysql-string { color: #008000; } span.cm-operator { color: fuchsia; } span.cm-mysql-word { color: black; } span.cm-builtin { color: #f00; } span.cm-variable-2 { color: #f90; } span.cm-variable-3 { color: #00f; } span.cm-separator { color: fuchsia; } span.cm-number { color: teal; } .autocomplete-column-name { display: inline-block; } .autocomplete-column-hint { display: inline-block; float: right; color: #666; margin-left: 1em; } .CodeMirror-hints { z-index: 999; } .CodeMirror-lint-tooltip { z-index: 200; font-family: inherit; } .CodeMirror-lint-tooltip code { font-family: monospace; font-weight: bold; } db/login/themes/pmahomme/css/designer.css.php000064400000023030151502156020015214 0ustar00getImgPath('designer/Header.png'); $headerLinkedImg = $theme->getImgPath('designer/Header_Linked.png'); $minusImg = $theme->getImgPath('designer/minus.png'); $plusImg = $theme->getImgPath('designer/plus.png'); $leftPanelButtonImg = $theme->getImgPath('designer/left_panel_butt.png'); $topPanelImg = $theme->getImgPath('designer/top_panel.png'); $smallTabImg = $theme->getImgPath('designer/small_tab.png'); $frams1Img = $theme->getImgPath('designer/1.png'); $frams2Img = $theme->getImgPath('designer/2.png'); $frams3Img = $theme->getImgPath('designer/3.png'); $frams4Img = $theme->getImgPath('designer/4.png'); $frams5Img = $theme->getImgPath('designer/5.png'); $frams6Img = $theme->getImgPath('designer/6.png'); $frams7Img = $theme->getImgPath('designer/7.png'); $frams8Img = $theme->getImgPath('designer/8.png'); $resizeImg = $theme->getImgPath('designer/resize.png'); ?> /* Designer */ .input_tab { background-color: #A6C7E1; color: #000; } .content_fullscreen { position: relative; overflow: auto; } #canvas_outer { position: relative; width: 100%; display: block; } #canvas { background-color: #fff; color: #000; } canvas.designer { display: inline-block; overflow: hidden; text-align: left; } canvas.designer * { behavior: url(#default#VML); } .designer_tab { background-color: #fff; color: #000; border-collapse: collapse; border: 1px solid #aaa; z-index: 1; -moz-user-select: none; } .designer_tab .header { background-image: url(); background-repeat: repeat-x; } .tab_zag { text-align: center; cursor: move; padding: 1px; font-weight: bold; } .tab_zag_2 { background-image: url(); background-repeat: repeat-x; text-align: center; cursor: move; padding: 1px; font-weight: bold; } .tab_field { background: #fff; color: #000; cursor: default; } .tab_field:hover, .tab_field_3:hover { background-color: #CCFFCC; color: #000; background-repeat: repeat-x; cursor: default; } .tab_field_3 { background-color: #FFE6E6 !important; /*#DDEEFF*/ color: #000; cursor: default; } #designer_hint { white-space: nowrap; position: absolute; background-color: #99FF99; color: #000; z-index: 3; border: #00CC66 solid 1px; display: none; } .scroll_tab { overflow: auto; width: 100%; height: 500px; } .designer_Tabs { cursor: default; color: #0055bb; white-space: nowrap; text-decoration: none; text-indent: 3px; font-weight: bold; margin-left: 2px; text-align: ; background-color: #fff; background-image: url(); border: #ccc solid 1px; } .designer_Tabs:hover { cursor: default; color: #0055bb; background: #FFEE99; text-indent: 3px; font-weight: bold; white-space: nowrap; text-decoration: none; border: #9999FF solid 1px; text-align: ; } .owner { font-weight: normal; color: #888; } .option_tab { padding-left: 2px; padding-right: 2px; width: 5px; } .select_all { vertical-align: top; padding-left: 2px; padding-right: 2px; cursor: default; width: 1px; color: #000; background-image: url(); background-repeat: repeat-x; } .small_tab { vertical-align: top; background-color: #0064ea; color: #fff; background-image: url(); cursor: default; text-align: center; font-weight: bold; padding-left: 2px; padding-right: 2px; width: 1px; text-decoration: none; } .small_tab:hover { vertical-align: top; color: #fff; background-color: #FF9966; cursor: default; padding-left: 2px; padding-right: 2px; text-align: center; font-weight: bold; width: 1px; text-decoration: none; } .small_tab_pref { background-image: url(); background-repeat: repeat-x; text-align: center; width: 1px; } .small_tab_pref:hover { vertical-align: top; color: #fff; background-color: #FF9966; cursor: default; text-align: center; font-weight: bold; width: 1px; text-decoration: none; } .butt { border: #4477aa solid 1px; font-weight: bold; height: 19px; width: 70px; background-color: #fff; color: #000; vertical-align: baseline; } .L_butt2_1 { padding: 1px; text-decoration: none; vertical-align: middle; cursor: default; } .L_butt2_1:hover { padding: 0; border: #0099CC solid 1px; background: #FFEE99; color: #000; text-decoration: none; vertical-align: middle; cursor: default; } /* ---------------------------------------------------------------------------*/ .bor { width: 10px; height: 10px; } .frams1 { background: url() no-repeat right bottom; } .frams2 { background: url() no-repeat left bottom; } .frams3 { background: url() no-repeat left top; } .frams4 { background: url() no-repeat right top; } .frams5 { background: url() repeat-x center bottom; } .frams6 { background: url() repeat-y left; } .frams7 { background: url() repeat-x top; } .frams8 { background: url() repeat-y right; } #osn_tab { position: absolute; background-color: #fff; color: #000; } .designer_header { background-color: #EAEEF0; color: #000; text-align: center; font-weight: bold; margin: 0; padding: 0; background-image: url(); background-position: top; background-repeat: repeat-x; border-right: #999 solid 1px; border-left: #999 solid 1px; height: 28px; z-index: 101; width: 100%; position: fixed; } .designer_header a, .designer_header span{ display: block; float: ; margin: 3px 1px 4px; height: 20px; border: 1px dotted #fff; } .designer_header .M_bord { display: block; float: ; margin: 4px; height: 20px; width: 2px; } .designer_header a.first { margin-right: 1em; } .designer_header a.last { margin-left: 1em; } a.M_butt_Selected_down_IE, a.M_butt_Selected_down { border: 1px solid #C0C0BB; background-color: #99FF99; color: #000; } a.M_butt_Selected_down_IE:hover, a.M_butt_Selected_down:hover, a.M_butt:hover { border: 1px solid #0099CC; background-color: #FFEE99; color: #000; } #layer_menu { z-index: 98; position: relative; float: right; background-color: #EAEEF0; border: #999 solid 1px; } #layer_menu.left { float: left; } #layer_upd_relation { position: absolute; : 637px; top: 224px; z-index: 100; } #layer_new_relation { position: absolute; : 636px; top: 85px; z-index: 100; width: 153px; } #designer_optionse { position: absolute; : 636px; top: 85px; z-index: 100; width: 153px; } #layer_menu_sizer { background-image: url(); cursor: ew-resize; } #layer_menu_sizer .icon { margin: 0; } .panel { position: fixed; top: 60px; : 0; width: 350px; max-height: 500px; display: none; overflow: auto; padding-top: 34px; z-index: 102; } a.trigger { position: fixed; text-decoration: none; top: 60px; : 0; color: #fff; padding: 10px 40px 10px 15px; background: #333 url() 85% 55% no-repeat; border: 1px solid #444; display: block; z-index: 102; } a.trigger:hover { color: #080808; background: #fff696 url() 85% 55% no-repeat; border: 1px solid #999; } a.active.trigger { background: #222 url() 85% 55% no-repeat; z-index: 999; } a.active.trigger:hover { background: #fff696 url() 85% 55% no-repeat; } .toggle_container .block { background-color: #DBE4E8; border-top: 1px solid #999; } .history_table { text-align: center; cursor: pointer; background-color: #DBE4E8; } .history_table:hover { background-color: #9999CC; } #ab { min-width: 300px; } #ab .ui-accordion-content { padding: 0; } #box { display: none; } #foreignkeychk { text-align: ; position: absolute; cursor: pointer; } .side-menu { float: left; position: fixed; width: auto; height: auto; background: #efefef; border: 1px solid grey; overflow: hidden; z-index: 50; padding: 2px; } .side-menu.right { float: right; right: 0; } .side-menu .hide { display: none; } .side-menu a { display: block; float: none; overflow: hidden; } .side-menu img, .side-menu .text { float: left; } #name-panel { border-bottom: 1px solid grey; text-align: center; background: #efefef; width: 100%; font-size: 1.2em; padding: 10px; font-weight: bold; } #container-form { width: 100%; position: absolute; left: 0; } db/login/themes/pmahomme/css/resizable-menu.css.php000064400000001773151502156020016350 0ustar00 ul.resizable-menu a, ul.resizable-menu span { display: block; margin: 0; padding: 0; white-space: nowrap; } ul.resizable-menu .submenu { display: none; position: relative; } ul.resizable-menu .shown { display: inline-block; } ul.resizable-menu ul { margin: 0; padding: 0; position: absolute; list-style-type: none; display: none; border: 1px #ddd solid; z-index: 2; : 0; } ul.resizable-menu li:hover { getCssGradient('ffffff', 'e5e5e5'); ?> } ul.resizable-menu li:hover ul, ul.resizable-menu .submenuhover ul { display: block; background: #fff; } ul.resizable-menu ul li { width: 100%; } db/login/themes/pmahomme/css/rte.css.php000064400000001564151502156020014216 0ustar00 .rte_table { table-layout: fixed; } .rte_table td { vertical-align: middle; padding: 0.2em; } .rte_table tr td:nth-child(1) { font-weight: bold; } .rte_table input, .rte_table select, .rte_table textarea { width: 100%; margin: 0; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } .rte_table input[type=button], .rte_table input[type=checkbox], .rte_table input[type=radio] { width: auto; margin-right: 6px; } .rte_table .routine_params_table { width: 100%; } db/login/themes/pmahomme/css/navigation.css.php000064400000023165151502156020015564 0ustar00 /******************************************************************************/ /* Navigation */ #pma_navigation { width: px; position: fixed; top: 0; : 0; height: 100vh; background: url(./themes/pmahomme/img/left_nav_bg.png) repeat-y right 0 ; color: ; z-index: 800; } #pma_navigation_header { overflow: hidden; } #pma_navigation_content { width: 100%; height: 100%; position: absolute; top: 0; : 0; z-index: 0; } #pma_navigation ul { margin: 0; } #pma_navigation form { margin: 0; padding: 0; display: inline; } #pma_navigation select#select_server, #pma_navigation select#lightm_db { width: 100%; } /******************************************************************************/ /* specific elements */ #pma_navigation div.pageselector { text-align: center; margin: 0; margin-: 0.75em; border-: 1px solid #666; } #pma_navigation div#pmalogo { } #pma_navigation #pmalogo, #pma_navigation #serverChoice, #pma_navigation #navipanellinks, #pma_navigation #recentTableList, #pma_navigation #favoriteTableList, #pma_navigation #databaseList, #pma_navigation div.pageselector.dbselector { text-align: center; padding: 5px 10px 0; border: 0; } #pma_navigation #recentTable, #pma_navigation #favoriteTable { width: 200px; } #pma_navigation #favoriteTableList select, #pma_navigation #serverChoice select { width: 80%; } #pma_navigation_content > img.throbber { display: none; margin: .3em auto 0; } /* Navigation tree*/ #pma_navigation_tree { margin: 0; margin-: 5px; overflow: hidden; color: #444; height: 74%; position: relative; } #pma_navigation_select_database { text-align: left; padding: 0 0 0; border: 0; margin: 0; } #pma_navigation_db_select { margin-top: 0.5em; margin-: 0.75em; } #pma_navigation_db_select select { background: url("./themes/pmahomme/img/select_bg.png") repeat scroll 0 0; -webkit-border-radius: 2px; border-radius: 2px; border: 1px solid #bbb; border-top: 1px solid #bbb; color: #333; padding: 4px 6px; margin: 0 0 0; width: 92%; font-size: 1.11em; } #pma_navigation_tree_content { width: 100%; overflow: hidden; overflow-y: auto; position: absolute; height: 100%; } #pma_navigation_tree_content a.hover_show_full { position: relative; z-index: 100; vertical-align: sub; } #pma_navigation_tree a { color: ; } #pma_navigation_tree a:hover { text-decoration: underline; } #pma_navigation_tree li.activePointer { color: ; background-color: ; } #pma_navigation_tree li.selected { color: ; background-color: ; } #pma_navigation_tree li .dbItemControls { padding-left: 4px; } #pma_navigation_tree li .navItemControls { display: none; padding-left: 4px; } #pma_navigation_tree li.activePointer .navItemControls { display: inline; opacity: 0.5; } #pma_navigation_tree li.activePointer .navItemControls:hover { display: inline; opacity: 1.0; } #pma_navigation_tree ul { clear: both; padding: 0; list-style-type: none; margin: 0; } #pma_navigation_tree ul ul { position: relative; } #pma_navigation_tree li, #pma_navigation_tree li.fast_filter { white-space: nowrap; clear: both; min-height: 16px; } #pma_navigation_tree img { margin: 0; } #pma_navigation_tree i { display: block; } #pma_navigation_tree div.block { position: relative; width: 1.5em; height: 1.5em; min-width: 16px; min-height: 16px; float: ; } #pma_navigation_tree div.block.double { width: 2.5em; } #pma_navigation_tree div.block i, #pma_navigation_tree div.block b { width: 1.5em; height: 1.7em; min-width: 16px; min-height: 8px; position: absolute; bottom: 0.7em; : 0.75em; z-index: 0; } #pma_navigation_tree div.block i { /* Top and right segments for the tree element connections */ display: block; border-: 1px solid #666; border-bottom: 1px solid #666; position: relative; z-index: 0; } #pma_navigation_tree div.block i.first { /* Removes top segment */ border-: 0; } #pma_navigation_tree div.block b { /* Bottom segment for the tree element connections */ display: block; height: 0.75em; bottom: 0; : 0.75em; border-: 1px solid #666; } #pma_navigation_tree div.block a, #pma_navigation_tree div.block u { position: absolute; : 50%; top: 50%; z-index: 10; } #pma_navigation_tree div.block a + a { : 100%; } #pma_navigation_tree div.block.double a, #pma_navigation_tree div.block.double u { : 33%; } #pma_navigation_tree div.block.double a + a { : 85%; } #pma_navigation_tree div.block img { position: relative; top: -0.6em; : 0; margin-: -7px; } #pma_navigation_tree div.throbber img { top: 2px; : 2px; } #pma_navigation_tree li.last > ul { background: none; } #pma_navigation_tree li > a, #pma_navigation_tree li > i { line-height: 1.5em; height: 1.5em; padding-: 0.3em; } #pma_navigation_tree .list_container { border-: 1px solid #666; margin-: 0.75em; padding-: 0.75em; } #pma_navigation_tree .last > .list_container { border-: 0 solid #666; } /* Fast filter */ li.fast_filter { padding-: 0.75em; margin-: 0.75em; padding-: 35px; border-: 1px solid #666; list-style: none; } li.fast_filter input { margin: 3px 0 0 0; font-size: 0.7em; padding-top: 2px; padding-bottom: 2px; padding-: 4px; padding-: 1.7em; width: 100%; } li.fast_filter span { position: relative; : 1.5em; padding: 0.2em; cursor: pointer; font-weight: bold; color: #800; font-size: 0.7em; } /* IE10+ has its own reset X */ html.ie li.fast_filter span { display: none; } html.ie.ie9 li.fast_filter span, html.ie.ie8 li.fast_filter span { display: auto; } html.ie li.fast_filter input { padding-: .2em; } html.ie.ie9 li.fast_filter input, html.ie.ie8 li.fast_filter input { padding-: 1.7em; } li.fast_filter.db_fast_filter { border: 0; margin-left: 0; margin-right: 10px; } #navigation_controls_outer { min-height: 21px !important; } #navigation_controls_outer.activePointer { background-color: transparent !important; } #navigation_controls { float: right; padding-right: 23px; } /* Resize handler */ #pma_navigation_resizer { width: 3px; height: 100%; background-color: #aaa; cursor: col-resize; position: fixed; top: 0; : 240px; z-index: 801; } #pma_navigation_collapser { width: 20px; height: 22px; line-height: 22px; background: #eee; color: #555; font-weight: bold; position: fixed; top: 0; : px; text-align: center; cursor: pointer; z-index: 800; text-shadow: 0 1px 0 #fff; filter: dropshadow(color=#fff, offx=0, offy=1); border: 1px solid #888; } /* Quick warp links */ .pma_quick_warp { margin-top: 5px; margin-: 2px; position: relative; } .pma_quick_warp .drop_list { float: ; margin-: 3px; padding: 2px 0; } .pma_quick_warp .drop_button { padding: 0 .3em; border: 1px solid #ddd; border-radius: .3em; background: #f2f2f2; cursor: pointer; } .pma_quick_warp .drop_list:hover .drop_button { background: #fff; } .pma_quick_warp .drop_list ul { position: absolute; margin: 0; padding: 0; overflow: hidden; overflow-y: auto; list-style: none; background: #fff; border: 1px solid #ddd; border-radius: .3em; border-top--radius: 0; border-bottom--radius: 0; box-shadow: 0 0 5px #ccc; top: 100%; : 3px; : 0; display: none; z-index: 802; } .pma_quick_warp .drop_list:hover ul { display: block; } .pma_quick_warp .drop_list li { white-space: nowrap; padding: 0; border-radius: 0; } .pma_quick_warp .drop_list li img { vertical-align: sub; } .pma_quick_warp .drop_list li:hover { background: #f2f2f2; } .pma_quick_warp .drop_list a { display: block; padding: .2em .3em; } .pma_quick_warp .drop_list a.favorite_table_anchor { clear: left; float: left; padding: .1em .3em 0; } db/login/themes/pmahomme/css/gis.css.php000064400000001423151502156020014200 0ustar00 /** * GIS data editor styles */ a.close_gis_editor { float: ; } #gis_editor { display: none; position: fixed; _position: absolute; /* hack for IE */ z-index: 1001; overflow-y: auto; overflow-x: hidden; } #gis_data { min-height: 230px; } #gis_data_textarea { height: 6em; } #gis_data_editor { background: #D0DCE0; padding: 15px; min-height: 500px; } #gis_data_editor .choice { display: none; } #gis_data_editor input[type="text"] { width: 75px; } db/login/themes/pmahomme/css/common.css.php000064400000213577151502156020014725 0ustar00 /******************************************************************************/ /* general tags */ html { font-size: getFontSize(); ?> } input, select, textarea { font-size: 1em; } body { font-family: ; padding: 0; margin: 0; margin-: 240px; color: ; background: ; } body#loginform { margin: 0; } #page_content { margin: 0 .5em; } .desktop50 { width: 50%; } .all100 { width: 100%; } .all85{ width: 85%; } .auth_config_tbl{ margin: 0 auto; } textarea, tt, pre, code { font-family: ; } h1 { font-size: 140%; font-weight: bold; } h2 { font-size: 2em; font-weight: normal; text-shadow: 0 1px 0 #fff; padding: 10px 0 10px; padding-: 3px; color: #777; } /* Hiding icons in the page titles */ h2 img { display: none; } h2 a img { display: inline; } .data, .data_full_width { margin: 0 0 12px; } .data_full_width { width: 100%; } h3 { font-weight: bold; } a, a:link, a:visited, a:active, button.mult_submit, .checkall_box+label { text-decoration: none; color: #235a81; cursor: pointer; outline: none; } a:hover, button.mult_submit:hover, button.mult_submit:focus, .checkall_box+label:hover { text-decoration: underline; color: #235a81; } #initials_table { background: #f3f3f3; border: 1px solid #aaa; margin-bottom: 10px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } #initials_table td { padding: 8px !important; } #initials_table a { border: 1px solid #aaa; background: #fff; padding: 4px 8px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; getCssGradient('ffffff', 'e0e0e0'); ?> } #initials_table a.active { border: 1px solid #666; box-shadow: 0 0 2px #999; getCssGradient('bbbbbb', 'ffffff'); ?> } dfn { font-style: normal; } dfn:hover { font-style: normal; cursor: help; } th { font-weight: bold; color: ; background: #f3f3f3; getCssGradient('ffffff', 'cccccc'); ?> } a img { border: 0; } hr { color: ; background-color: ; border: 0; height: 1px; } form { padding: 0; margin: 0; display: inline; } input, select { /* Fix outline in Chrome: */ outline: none; } input[type=text], input[type=password], input[type=number], input[type=date] { border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; background: white; border: 1px solid #aaa; color: #555; padding: 4px; } input[type=text], input[type=password], input[type=number], input[type=date], input[type=checkbox], select { margin: 6px; } input[type=number] { width: 50px; } input#auto_increment_opt { width: min-content; } input[type=text], input[type=password], input[type=number], input[type=date], select { transition: all 0.2s; -ms-transition: all 0.2s; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; } input[type=text][disabled], input[type=text][disabled]:hover, input[type=password][disabled], input[type=password][disabled]:hover, input[type=number][disabled], input[type=number][disabled]:hover, input[type=date][disabled], input[type=date][disabled]:hover, select[disabled], select[disabled]:hover { background: #e8e8e8; box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none; } input[type=text]:hover, input[type=text]:focus, input[type=password]:hover, input[type=password]:focus, input[type=number]:hover, input[type=number]:focus, input[type=date]:hover, input[type=date]:focus, select:focus { border: 1px solid #7c7c7c; background: #fff; } input[type=text]:hover, input[type=password]:hover, input[type=number]:hover, input[type=date]:hover { box-shadow: 0 1px 3px #aaa; -webkit-box-shadow: 0 1px 3px #aaa; -moz-box-shadow: 0 1px 3px #aaa; } input[type=submit], input[type=button], button[type=submit]:not(.mult_submit) { font-weight: bold !important; } input[type=submit], input[type=button], button[type=submit]:not(.mult_submit), input[type=reset], input[name=submit_reset], input.button { margin: 6px 14px; border: 1px solid #aaa; padding: 3px 7px; color: #111; text-decoration: none; background: #ddd; border-radius: 12px; -webkit-border-radius: 12px; -moz-border-radius: 12px; text-shadow: 0 1px 0 #fff; getCssGradient('f8f8f8', 'd8d8d8'); ?> } input[type=submit]:hover, input[type=button]:hover, button[type=submit]:not(.mult_submit):hover, input[type=reset]:hover, input[name=submit_reset]:hover, input.button:hover { position: relative; getCssGradient('fff', 'ddd'); ?> cursor: pointer; } input[type=submit]:active, input[type=button]:active, button[type=submit]:not(.mult_submit):active, input[type=reset]:active, input[name=submit_reset]:active, input.button:active { position: relative; getCssGradient('eee', 'ddd'); ?> box-shadow: 0 1px 6px -2px #333 inset; text-shadow: none; } input[type=submit]:disabled, input[type=button]:disabled, button[type=submit]:not(.mult_submit):disabled, input[type=reset]:disabled, input[name=submit_reset]:disabled, input.button:disabled { background: #ccc; color: #666; text-shadow: none; } textarea { overflow: visible; margin: 6px; } textarea.char { margin: 6px; } fieldset, .preview_sql { margin-top: 1em; border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; border: #aaa solid 1px; padding: 0.5em; background: #eee; text-shadow: 1px 1px 2px #fff inset; -moz-box-shadow: 1px 1px 2px #fff inset; -webkit-box-shadow: 1px 1px 2px #fff inset; box-shadow: 1px 1px 2px #fff inset; } fieldset fieldset { margin: .8em; background: #fff; border: 1px solid #aaa; background: #E8E8E8; } fieldset legend { font-weight: bold; color: #444; padding: 5px 10px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border: 1px solid #aaa; background-color: #fff; -moz-box-shadow: 3px 3px 15px #bbb; -webkit-box-shadow: 3px 3px 15px #bbb; box-shadow: 3px 3px 15px #bbb; max-width: 100%; } .some-margin { margin: 1.5em; } /* buttons in some browsers (eg. Konqueror) are block elements, this breaks design */ button { display: inline; } table caption, table th, table td { padding: .1em .3em; margin: .1em; vertical-align: middle; text-shadow: 0 1px 0 #fff; } /* 3.4 */ .datatable{ table-layout: fixed; } table { border-collapse: collapse; } thead th { border-right: 1px solid #fff; } th { text-align: left; } img, button { vertical-align: middle; } input[type="checkbox"], input[type="radio"] { vertical-align: -11%; } select { -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; border: 1px solid #bbb; color: #333; padding: 3px; background: white; margin:6px; } select[multiple] { getCssGradient('ffffff', 'f2f2f2'); ?> } /******************************************************************************/ /* classes */ .clearfloat { clear: both; } .floatleft { float: ; margin-: 1em; } .floatright { float: ; } .center { text-align: center; } .displayblock { display: block; } table.nospacing { border-spacing: 0; } table.nopadding tr th, table.nopadding tr td { padding: 0; } th.left, td.left { text-align: left; } th.center, td.center { text-align: center; } th.right, td.right { text-align: right; padding-right: 1em; } tr.vtop th, tr.vtop td, th.vtop, td.vtop { vertical-align: top; } tr.vmiddle th, tr.vmiddle td, th.vmiddle, td.vmiddle { vertical-align: middle; } tr.vbottom th, tr.vbottom td, th.vbottom, td.vbottom { vertical-align: bottom; } .paddingtop { padding-top: 1em; } .separator { color: #fff; text-shadow: 0 1px 0 #000; } div.tools { /* border: 1px solid #000; */ padding: .2em; } div.tools a { color: #3a7ead !important; } div.tools, fieldset.tblFooters { margin-top: 0; margin-bottom: .5em; /* avoid a thick line since this should be used under another fieldset */ border-top: 0; text-align: ; float: none; clear: both; -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 5px; } div.null_div { height: 20px; text-align: center; font-style: normal; min-width: 50px; } fieldset .formelement { float: ; margin-: .5em; /* IE */ white-space: nowrap; } /* revert for Gecko */ fieldset div[class=formelement] { white-space: normal; } button.mult_submit { border: none; background-color: transparent; } /* odd items 1,3,5,7,... */ table tbody:first-of-type tr:nth-child(odd), table tbody:first-of-type tr:nth-child(odd) th, #table_index tbody:nth-of-type(odd) tr, #table_index tbody:nth-of-type(odd) th { background: #fff; } /* even items 2,4,6,8,... */ table tbody:first-of-type tr:nth-child(even), table tbody:first-of-type tr:nth-child(even) th, #table_index tbody:nth-of-type(even) tr, #table_index tbody:nth-of-type(even) th { background: #DFDFDF; } table tr th, table tr { text-align: ; } /* marked table rows */ td.marked:not(.nomarker), table tr.marked:not(.nomarker) td, table tbody:first-of-type tr.marked:not(.nomarker) th, table tr.marked:not(.nomarker) { getCssGradient('ced6df', 'b6c6d7'); ?> color: ; } /* hovered items */ table tbody:first-of-type tr:not(.nopointer):hover, table tbody:first-of-type tr:not(.nopointer):hover th, .hover:not(.nopointer) { getCssGradient('ced6df', 'b6c6d7'); ?> color: ; } /* hovered table rows */ #table_index tbody:hover tr, #table_index tbody:hover th, table tr.hover:not(.nopointer) th { getCssGradient('ced6df', 'b6c6d7'); ?> color: ; } /** * marks table rows/cells if the db field is in a where condition */ .condition { border-color: !important; } th.condition { border-width: 1px 1px 0 1px; border-style: solid; } td.condition { border-width: 0 1px 0 1px; border-style: solid; } tr:last-child td.condition { border-width: 0 1px 1px 1px; } /* for first th which must have right border set (ltr only) */ .before-condition { border-right: 1px solid ; } /** * cells with the value NULL */ td.null { font-style: italic; color: #7d7d7d; } table .valueHeader { text-align: ; white-space: normal; } table .value { text-align: ; white-space: normal; } /* IE doesnt handles 'pre' right */ table [class=value] { white-space: normal; } .value { font-family: ; } .attention { color: red; font-weight: bold; } .allfine { color: green; } img.lightbulb { cursor: pointer; } .pdflayout { overflow: hidden; clip: inherit; background-color: #fff; display: none; border: 1px solid #000; position: relative; } .pdflayout_table { background: #D3DCE3; color: #000; overflow: hidden; clip: inherit; z-index: 2; display: inline; visibility: inherit; cursor: move; position: absolute; font-size: 80%; border: 1px dashed #000; } /* Doc links in SQL */ .cm-sql-doc { text-decoration: none; border-bottom: 1px dotted #000; color: inherit !important; } /* no extra space in table cells */ td .icon { image-rendering: pixelated; margin: 0; } .selectallarrow { margin-: .3em; margin-: .6em; } /* message boxes: error, confirmation */ #pma_errors, #pma_demo, #pma_footer { position: relative; padding: 0 0.5em; } .success h1, .notice h1, div.error h1 { border-bottom: 2px solid; font-weight: bold; text-align: ; margin: 0 0 .2em 0; } div.success, div.notice, div.error { margin: .5em 0 0.5em; border: 1px solid; background-repeat: no-repeat; background-position: 10px 50%; padding: 10px 10px 10px 10px; background-position: 99% 50%; padding: 10px 35px 10px 10px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; -moz-box-shadow: 0 1px 1px #fff inset; -webkit-box-shadow: 0 1px 1px #fff inset; box-shadow: 0 1px 1px #fff inset; } .success a, .notice a, .error a { text-decoration: underline; } .success { color: #000; background-color: #ebf8a4; } h1.success, div.success { border-color: #a2d246; } .success h1 { border-color: #00FF00; } .notice { color: #000; background-color: #e8eef1; } h1.notice, div.notice { border-color: #3a6c7e; } .notice h1 { border-color: #ffb10a; } .error { border: 1px solid maroon !important; color: #000; background: pink; } h1.error, div.error { border-color: #333; } div.error h1 { border-color: #ff0000; } .confirmation { color: #000; background-color: pink; } fieldset.confirmation { } fieldset.confirmation legend { } /* end messageboxes */ .new_central_col{ width: 100%; } .tblcomment { font-size: 70%; font-weight: normal; color: #000099; } .tblHeaders { font-weight: bold; color: ; background: ; } div.tools, .tblFooters { font-weight: normal; color: ; background: ; } .tblHeaders a:link, .tblHeaders a:active, .tblHeaders a:visited, div.tools a:link, div.tools a:visited, div.tools a:active, .tblFooters a:link, .tblFooters a:active, .tblFooters a:visited { color: #0000FF; } .tblHeaders a:hover, div.tools a:hover, .tblFooters a:hover { color: #FF0000; } /* forbidden, no privileges */ .noPrivileges { color: #FF0000; font-weight: bold; } /* disabled text */ .disabled, .disabled a:link, .disabled a:active, .disabled a:visited { color: #666; } .disabled a:hover { color: #666; text-decoration: none; } tr.disabled td, td.disabled { background-color: #f3f3f3; color: #aaa; } .nowrap { white-space: nowrap; } /** * login form */ body#loginform h1, body#loginform a.logo { display: block; text-align: center; } body#loginform { margin-top: 1em; text-align: center; } body#loginform div.container { text-align: ; width: 30em; margin: 0 auto; } form.login label { width: 10em; font-weight: bolder; display: inline-block; margin-: 2em; } form.login input[type=text], form.login input[type=password], form.login select { box-sizing: border-box; width: 14em; } .commented_column { border-bottom: 1px dashed #000; } .column_attribute { font-size: 70%; } .cfg_dbg_demo{ margin: 0.5em 1em 0.5em 1em; } .central_columns_navigation{ padding:1.5% 0em !important; } .central_columns_add_column{ display:inline-block; margin-left:1%; max-width:50% } .message_errors_found{ margin-top: 20px; } .repl_gui_skip_err_cnt{ width: 30px; } .font_weight_bold{ font-weight: bold; } .color_gray{ color: gray; } .pma_sliding_message{ display: inline-block; } li.last.database{ margin-bottom: 15px !important; } /******************************************************************************/ /* specific elements */ /* topmenu */ #topmenu a { text-shadow: 0 1px 0 #fff; } #topmenu .error { background: #eee;border: 0 !important;color: #aaa; } ul#topmenu, ul#topmenu2, ul.tabs { font-weight: bold; list-style-type: none; margin: 0; padding: 0; } ul#topmenu2 { margin: .25em .5em 0; height: 2em; clear: both; } ul#topmenu li, ul#topmenu2 li { float: ; margin: 0; vertical-align: middle; } #topmenu img, #topmenu2 img { margin-right: .5em; vertical-align: -3px; } .menucontainer { getCssGradient('ffffff', 'dcdcdc'); ?> border-top: 1px solid #aaa; } .scrollindicator { display: none; } /* default tab styles */ .tabactive { background: #fff !important; } ul#topmenu2 a { display: block; margin: 7px 6px 7px; margin-: 0; padding: 4px 10px; white-space: nowrap; border: 1px solid #ddd; border-radius: 20px; -moz-border-radius: 20px; -webkit-border-radius: 20px; background: #f2f2f2; } span.caution { color: #FF0000; } fieldset.caution a { color: #FF0000; } fieldset.caution a:hover { color: #fff; background-color: #FF0000; } #topmenu { margin-top: .5em; padding: .1em .3em; } ul#topmenu ul { -moz-box-shadow: 1px 1px 6px #ddd; -webkit-box-shadow: 2px 2px 3px #666; box-shadow: 2px 2px 3px #666; } ul#topmenu ul.only { : 0; } ul#topmenu > li { border-right: 1px solid #fff; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; } ul#topmenu > li:first-child { border-left: 0; } /* default tab styles */ ul#topmenu a, ul#topmenu span { padding: .6em; } ul#topmenu ul a { border-width: 1pt 0 0 0; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } ul#topmenu ul li:first-child a { border-width: 0; } /* enabled hover/active tabs */ ul#topmenu > li > a:hover, ul#topmenu > li > .tabactive { text-decoration: none; } ul#topmenu ul a:hover, ul#topmenu ul .tabactive { text-decoration: none; } ul#topmenu a.tab:hover, ul#topmenu .tabactive { /* background-color: ; */ } ul#topmenu2 a.tab:hover, ul#topmenu2 a.tabactive { background-color: ; border-radius: .3em; -moz-border-radius: .3em; -webkit-border-radius: .3em; text-decoration: none; } /* to be able to cancel the bottom border, use
  • */ ul#topmenu > li.active { /* border-bottom: 0pt solid ; */ border-right: 0; border-bottom-color: #fff; } /* end topmenu */ /* zoom search */ div#dataDisplay input, div#dataDisplay select { margin: 0; margin-: .5em; } div#dataDisplay th { line-height: 2em; } table#tableFieldsId { width: 100%; } /* Calendar */ table.calendar { width: 100%; } table.calendar td { text-align: center; } table.calendar td a { display: block; } table.calendar td a:hover { background-color: #CCFFCC; } table.calendar th { background-color: #D3DCE3; } table.calendar td.selected { background-color: #FFCC99; } img.calendar { border: none; } form.clock { text-align: center; } /* end Calendar */ /* table stats */ div#tablestatistics table { float: ; margin-bottom: .5em; margin-: 1.5em; margin-top: .5em; min-width: 16em; } /* end table stats */ /* server privileges */ #tableuserrights td, #tablespecificuserrights td, #tabledatabases td { vertical-align: middle; } /* end server privileges */ /* Heading */ #topmenucontainer { padding-: 1em; width: 100%; } #serverinfo { background: #888; padding: .3em .9em; padding-: 2.2em; text-shadow: 0 1px 0 #000; max-width: 100%; max-height: 16px; overflow: hidden; } #serverinfo .item { white-space: nowrap; color: #fff; } #page_nav_icons { position: fixed; top: 0; : 0; z-index: 99; padding: .25em 0; } #goto_pagetop, #lock_page_icon, #page_settings_icon { padding: .25em; background: #888; } #page_settings_icon { cursor: pointer; display: none; } #page_settings_modal { display: none; } #pma_navigation_settings { display: none; } #span_table_comment { font-weight: bold; font-style: italic; white-space: nowrap; margin-left: 10px; color: #D6D6D6; text-shadow: none; } #serverinfo img { margin: 0 .1em 0; margin-: .2em; } #textSQLDUMP { width: 95%; height: 95%; font-family: Consolas, "Courier New", Courier, mono; font-size: 110%; } #TooltipContainer { position: absolute; z-index: 99; width: 20em; height: auto; overflow: visible; visibility: hidden; background-color: #ffffcc; color: #006600; border: .1em solid #000; padding: .5em; } /* user privileges */ #fieldset_add_user_login div.item { border-bottom: 1px solid silver; padding-bottom: .3em; margin-bottom: .3em; } #fieldset_add_user_login label { float: ; display: block; width: 10em; max-width: 100%; text-align: ; padding-: .5em; } #fieldset_add_user_login span.options #select_pred_username, #fieldset_add_user_login span.options #select_pred_hostname, #fieldset_add_user_login span.options #select_pred_password { width: 100%; max-width: 100%; } #fieldset_add_user_login span.options { float: ; display: block; width: 12em; max-width: 100%; padding-: .5em; } #fieldset_add_user_login input { width: 12em; clear: ; max-width: 100%; } #fieldset_add_user_login span.options input { width: auto; } #fieldset_user_priv div.item { float: ; width: 9em; max-width: 100%; } #fieldset_user_priv div.item div.item { float: none; } #fieldset_user_priv div.item label { white-space: nowrap; } #fieldset_user_priv div.item select { width: 100%; } #fieldset_user_global_rights fieldset { float: ; } #fieldset_user_group_rights fieldset { float: ; } #fieldset_user_global_rights>legend input { margin-: 2em; } /* end user privileges */ /* serverstatus */ .linkElem:hover { text-decoration: underline; color: #235a81; cursor: pointer; } h3#serverstatusqueries span { font-size: 60%; display: inline; } .buttonlinks { float: ; white-space: nowrap; } /* Also used for the variables page */ fieldset#tableFilter { padding: 0.1em 1em; } div#serverStatusTabs { margin-top: 1em; } caption a.top { float: ; } div#serverstatusquerieschart { float: ; width: 500px; height: 350px; margin-: 50px; } table#serverstatusqueriesdetails, table#serverstatustraffic { float: ; } table#serverstatusqueriesdetails th { min-width: 35px; } table#serverstatusvariables { width: 100%; margin-bottom: 1em; } table#serverstatusvariables .name { width: 18em; white-space: nowrap; } table#serverstatusvariables .value { width: 6em; } table#serverstatusconnections { float: ; margin-: 30px; } div#serverstatus table tbody td.descr a, div#serverstatus table .tblFooters a { white-space: nowrap; } div.liveChart { clear: both; min-width: 500px; height: 400px; padding-bottom: 80px; } #addChartDialog input[type="text"] { margin: 0; padding: 3px; } div#chartVariableSettings { border: 1px solid #ddd; background-color: #E6E6E6; margin-left: 10px; } table#chartGrid td { padding: 3px; margin: 0; } table#chartGrid div.monitorChart { background: #EBEBEB; overflow: hidden; border: none; } div.tabLinks { margin-left: 0.3em; float: ; padding: 5px 0; } div.tabLinks a, div.tabLinks label { margin-right: 7px; } div.tabLinks .icon { margin: -0.2em 0.3em 0 0; } .popupContent { display: none; position: absolute; border: 1px solid #CCC; margin: 0; padding: 3px; -moz-box-shadow: 2px 2px 3px #666; -webkit-box-shadow: 2px 2px 3px #666; box-shadow: 2px 2px 3px #666; background-color: #fff; z-index: 2; } div#logTable { padding-top: 10px; clear: both; } div#logTable table { width: 100%; } div#queryAnalyzerDialog { min-width: 700px; } div#queryAnalyzerDialog div.CodeMirror-scroll { height: auto; } div#queryAnalyzerDialog div#queryProfiling { height: 300px; } div#queryAnalyzerDialog td.explain { width: 250px; } div#queryAnalyzerDialog table.queryNums { display: none; border: 0; text-align: left; } .smallIndent { padding-: 7px; } /* end serverstatus */ /* server variables */ #serverVariables { width: 100%; } #serverVariables .var-row > td { line-height: 2em; } #serverVariables .var-header { color: ; background: #f3f3f3; getCssGradient('ffffff', 'cccccc'); ?> font-weight: bold; text-align: ; } #serverVariables .var-row { padding: 0.5em; min-height: 18px; } #serverVariables .var-name { font-weight: bold; } #serverVariables .var-name.session { font-weight: normal; font-style: italic; } #serverVariables .var-value { float: ; text-align: ; } #serverVariables .var-doc { overflow:visible; float: ; } /* server variables editor */ #serverVariables .editLink { padding-: 1em; font-family: sans-serif; } #serverVariables .serverVariableEditor { width: 100%; overflow: hidden; } #serverVariables .serverVariableEditor input { width: 100%; margin: 0 0.5em; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; height: 2.2em; } #serverVariables .serverVariableEditor div { display: block; overflow: hidden; padding-: 1em; } #serverVariables .serverVariableEditor a { margin: 0 0.5em; line-height: 2em; } /* end server variables */ p.notice { margin: 1.5em 0; border: 1px solid #000; background-repeat: no-repeat; background-position: 10px 50%; padding: 10px 10px 10px 25px; background-position: 99% 50%; padding: 25px 10px 10px 10px -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; -moz-box-shadow: 0 1px 2px #fff inset; -webkit-box-shadow: 0 1px 2px #fff inset; box-shadow: 0 1px 2px #fff inset; background: #555; color: #d4fb6a; } p.notice a { color: #fff; text-decoration: underline; } /* profiling */ div#profilingchart { width: 850px; height: 370px; float: ; } #profilingchart .jqplot-highlighter-tooltip{ top: auto !important; left: 11px; bottom:24px; } /* end profiling */ /* table charting */ #resizer { border: 1px solid silver; } #inner-resizer { /* make room for the resize handle */ padding: 10px; } .chartOption { float: ; margin-: 40px; } /* end table charting */ /* querybox */ #togglequerybox { margin: 0 10px; } #serverstatus h3 { margin: 15px 0; font-weight: normal; color: #999; font-size: 1.7em; } #sectionlinks { margin-bottom: 15px; padding: 16px; background: #f3f3f3; border: 1px solid #aaa; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; box-shadow: 0 1px 1px #fff inset; -webkit-box-shadow: 0 1px 1px #fff inset; -moz-box-shadow: 0 1px 1px #fff inset; } #sectionlinks a, .buttonlinks a, a.button { font-weight: bold; text-shadow: 0 1px 0 #fff; line-height: 35px; margin-: 7px; border: 1px solid #aaa; padding: 3px 7px; color: #111 !important; text-decoration: none; background: #ddd; white-space: nowrap; border-radius: 20px; -webkit-border-radius: 20px; -moz-border-radius: 20px; getCssGradient('f8f8f8', 'd8d8d8'); ?> } #sectionlinks a:hover, .buttonlinks a:hover, a.button:hover { getCssGradient('ffffff', 'dddddd'); ?> } div#sqlquerycontainer { float: ; width: 69%; /* height: 15em; */ } div#tablefieldscontainer { float: ; width: 29%; margin-top: -20px; /* height: 15em; */ } div#tablefieldscontainer select { width: 100%; background: #fff; /* height: 12em; */ } textarea#sqlquery { width: 100%; /* height: 100%; */ -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; border: 1px solid #aaa; padding: 5px; font-family: inherit; } textarea#sql_query_edit { height: 7em; width: 95%; display: block; } div#queryboxcontainer div#bookmarkoptions { margin-top: .5em; } /* end querybox */ /* main page */ #maincontainer { /* background-image: url(getImgPath('logo_right.png');?>); */ /* background-position: bottom; */ /* background-repeat: no-repeat; */ } #mysqlmaininformation, #pmamaininformation { float: ; width: 49%; } #maincontainer ul { list-style-type: disc; vertical-align: middle; } #maincontainer li { margin-bottom: .3em; } #full_name_layer { position: absolute; padding: 2px; margin-top: -3px; z-index: 801; border-radius: 3px; border: solid 1px #888; background: #fff; } /* end main page */ /* iconic view for ul items */ li.no_bullets { list-style-type:none !important; margin-left: -25px !important; //align with other list items which have bullets } /* end iconic view for ul items */ #body_browse_foreigners { background: ; margin: .5em .5em 0 .5em; } #bodythemes { width: 500px; margin: auto; text-align: center; } #bodythemes img { border: .1em solid #000; } #bodythemes a:hover img { border: .1em solid red; } #fieldset_select_fields { float: ; } #selflink { clear: both; display: block; margin-top: 1em; margin-bottom: 1em; width: 98%; margin-: 1%; border-top: .1em solid silver; text-align: ; } #table_innodb_bufferpool_usage, #table_innodb_bufferpool_activity { float: ; } #div_mysql_charset_collations table { float: ; } #div_mysql_charset_collations table th, #div_mysql_charset_collations table td { padding: 0.4em; } #div_mysql_charset_collations table th#collationHeader { width: 35%; } #qbe_div_table_list { float: ; } #qbe_div_sql_query { float: ; } label.desc { width: 30em; float: ; } label.desc sup { position: absolute; } code.php { display: block; padding-left: 1em; margin-top: 0; margin-bottom: 0; max-height: 10em; overflow: auto; direction: ltr; } code.sql, div.sqlvalidate { display: block; padding: 1em; margin-top: 0; margin-bottom: 0; max-height: 10em; overflow: auto; direction: ltr; } .result_query div.sqlOuter { background: ; text-align: ; } .result_query .success, .result_query .error { margin-bottom: 0; border-bottom: none !important; border-bottom-left-radius: 0; border-bottom-right-radius: 0; padding-bottom: 5px; } #PMA_slidingMessage code.sql, div.sqlvalidate { background: ; } #main_pane_left { width: 60%; min-width: 260px; float: ; padding-top: 1em; } #main_pane_right { overflow: hidden; min-width: 160px; padding-top: 1em; padding-: 1em; padding-: .5em; } .group { border: 1px solid #999; background: #f3f3f3; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; -moz-box-shadow: 2px 2px 5px #ccc; -webkit-box-shadow: 2px 2px 5px #ccc; box-shadow: 2px 2px 5px #ccc; margin-bottom: 1em; padding-bottom: 1em; } .group h2 { background-color: #bbb; padding: .1em .3em; margin-top: 0; color: #fff; font-size: 1.6em; font-weight: normal; text-shadow: 0 1px 0 #777; -moz-box-shadow: 1px 1px 15px #999 inset; -webkit-box-shadow: 1px 1px 15px #999 inset; box-shadow: 1px 1px 15px #999 inset; } .group-cnt { padding: 0; padding-: .5em; display: inline-block; width: 98%; } textarea#partitiondefinition { height: 3em; } /* for elements that should be revealed only via js */ .hide { display: none; } #list_server { list-style-type: none; padding: 0; } /** * Progress bar styles */ div.upload_progress { width: 400px; margin: 3em auto; text-align: center; } div.upload_progress_bar_outer { border: 1px solid #000; width: 202px; position: relative; margin: 0 auto 1em; color: ; } div.upload_progress_bar_inner { background-color: ; width: 0; height: 12px; margin: 1px; overflow: hidden; color: ; position: relative; } div.upload_progress_bar_outer div.percentage { position: absolute; top: 0; : 0; width: 202px; } div.upload_progress_bar_inner div.percentage { top: -1px; : -1px; } div#statustext { margin-top: .5em; } table#serverconnection_src_remote, table#serverconnection_trg_remote, table#serverconnection_src_local, table#serverconnection_trg_local { float: ; } /** * Validation error message styles */ input[type=text].invalid_value, input[type=password].invalid_value, input[type=number].invalid_value, input[type=date].invalid_value, select.invalid_value, .invalid_value { background: #FFCCCC; } /** * Ajax notification styling */ .ajax_notification { top: 0; /** The notification needs to be shown on the top of the page */ position: fixed; margin-top: 0; margin-right: auto; margin-bottom: 0; margin-: auto; padding: 5px; /** Keep a little space on the sides of the text */ width: 350px; z-index: 1100; /** If this is not kept at a high z-index, the jQueryUI modal dialogs (z-index: 1000) might hide this */ text-align: center; display: inline; left: 0; right: 0; background-image: url(getImgPath('ajax_clock_small.gif');?>); background-repeat: no-repeat; background-position: 2%; border: 1px solid #e2b709; } /* additional styles */ .ajax_notification { margin-top: 200px; background: #ffe57e; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; box-shadow: 0 5px 90px #888; -moz-box-shadow: 0 5px 90px #888; -webkit-box-shadow: 0 5px 90px #888; } #loading_parent { /** Need this parent to properly center the notification division */ position: relative; width: 100%; } /** * Export and Import styles */ .export_table_list_container { display: inline-block; max-height: 20em; overflow-y: scroll; } .export_table_select th { text-align: center; vertical-align: middle; } .export_table_select .all { font-weight: bold; border-bottom: 1px solid black; } .export_structure, .export_data { text-align: center; } .export_table_name { vertical-align: middle; } .exportoptions h2 { word-wrap: break-word; } .exportoptions h3, .importoptions h3 { border-bottom: 1px #999 solid; font-size: 110%; } .exportoptions ul, .importoptions ul, .format_specific_options ul { list-style-type: none; margin-bottom: 15px; } .exportoptions li, .importoptions li { margin: 7px; } .exportoptions label, .importoptions label, .exportoptions p, .importoptions p { margin: 5px; float: none; } #csv_options label.desc, #ldi_options label.desc, #latex_options label.desc, #output label.desc { float: ; width: 15em; } .exportoptions, .importoptions { margin: 20px 30px 30px; margin-: 10px; } .exportoptions #buttonGo, .importoptions #buttonGo { font-weight: bold; margin-: 14px; border: 1px solid #aaa; padding: 5px 12px; color: #111; text-decoration: none; border-radius: 12px; -webkit-border-radius: 12px; -moz-border-radius: 12px; text-shadow: 0 1px 0 #fff; getCssGradient('ffffff', 'cccccc'); ?> cursor: pointer; } .format_specific_options h3 { margin: 10px 0 0; margin-: 10px; border: 0; } .format_specific_options { border: 1px solid #999; margin: 7px 0; padding: 3px; } p.desc { margin: 5px; } /** * Export styles only */ select#db_select, select#table_select { width: 400px; } .export_sub_options { margin: 20px 0 0; margin-: 30px; } .export_sub_options h4 { border-bottom: 1px #999 solid; } .export_sub_options li.subgroup { display: inline-block; margin-top: 0; } .export_sub_options li { margin-bottom: 0; } #export_refresh_form { margin-left: 20px; } #export_back_button { display: inline; } #output_quick_export { display: none; } /** * Import styles only */ .importoptions #import_notification { margin: 10px 0; font-style: italic; } input#input_import_file { margin: 5px; } .formelementrow { margin: 5px 0 5px 0; } #filterText { vertical-align: baseline; } #popup_background { display: none; position: fixed; _position: absolute; /* hack for IE6 */ width: 100%; height: 100%; top: 0; : 0; background: #000; z-index: 1000; overflow: hidden; } /** * Table structure styles */ #fieldsForm ul.table-structure-actions { margin: 0; padding: 0; list-style: none; } #fieldsForm ul.table-structure-actions li { float: ; margin-: 0.3em; /* same as padding of "table td" */ } #fieldsForm ul.table-structure-actions .submenu li { padding: 0; margin: 0; } #fieldsForm ul.table-structure-actions .submenu li span { padding: 0.3em; margin: 0.1em; } #structure-action-links a { margin-: 1em; } #addColumns input[type="radio"] { margin: 3px 0 0; margin-: 1em; } /** * Indexes */ #index_frm .index_info input[type="text"], #index_frm .index_info select { width: 100%; margin: 0; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } #index_frm .index_info div { padding: .2em 0; } #index_frm .index_info .label { float: ; min-width: 12em; } #index_frm .slider { width: 10em; margin: .6em; float: ; } #index_frm .add_fields { float: ; } #index_frm .add_fields input { margin-: 1em; } #index_frm input { margin: 0; } #index_frm td { vertical-align: middle; } table#index_columns { width: 100%; } table#index_columns select { width: 85%; float: ; } #move_columns_dialog div { padding: 1em; } #move_columns_dialog ul { list-style: none; margin: 0; padding: 0; } #move_columns_dialog li { background: ; border: 1px solid #aaa; color: ; font-weight: bold; margin: .4em; padding: .2em; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; } /* config forms */ .config-form ul.tabs { margin: 1.1em .2em 0; padding: 0 0 .3em 0; list-style: none; font-weight: bold; } .config-form ul.tabs li { float: ; margin-bottom: -1px; } .config-form ul.tabs li a { display: block; margin: .1em .2em 0; white-space: nowrap; text-decoration: none; border: 1px solid ; border-bottom: 1px solid #aaa; } .config-form ul.tabs li a { padding: 7px 10px; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; background: #f2f2f2; color: #555; text-shadow: 0 1px 0 #fff; } .config-form ul.tabs li a:hover, .config-form ul.tabs li a:active { background: #e5e5e5; } .config-form ul.tabs li.active a { background-color: #fff; margin-top: 1px; color: #000; text-shadow: none; border-color: #aaa; border-bottom: 1px solid #fff; } .config-form fieldset { margin-top: 0; padding: 0; clear: both; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .config-form legend { display: none; } .config-form fieldset p { margin: 0; padding: .5em; background: #fff; border-top: 0; } .config-form fieldset .errors { /* form error list */ margin: 0 -2px 1em; padding: .5em 1.5em; background: #FBEAD9; border: 0 #C83838 solid; border-width: 1px 0; list-style: none; font-family: sans-serif; font-size: small; } .config-form fieldset .inline_errors { /* field error list */ margin: .3em .3em .3em; margin-: 0; padding: 0; list-style: none; color: #9A0000; font-size: small; } .config-form fieldset th { padding: .3em .3em .3em; padding-: .5em; text-align: ; vertical-align: top; width: 40%; background: transparent; filter: none; } .config-form fieldset .doc, .config-form fieldset .disabled-notice { margin-: 1em; } .config-form fieldset .disabled-notice { font-size: 80%; text-transform: uppercase; color: #E00; cursor: help; } .config-form fieldset td { padding-top: .3em; padding-bottom: .3em; vertical-align: top; } .config-form fieldset th small { display: block; font-weight: normal; font-family: sans-serif; font-size: x-small; color: #444; } .config-form fieldset th, .config-form fieldset td { border-top: 1px solid; border-: none; } fieldset .group-header th { background: ; } fieldset .group-header + tr th { padding-top: .6em; } fieldset .group-field-1 th, fieldset .group-header-2 th { padding-: 1.5em; } fieldset .group-field-2 th, fieldset .group-header-3 th { padding-: 3em; } fieldset .group-field-3 th { padding-: 4.5em; } fieldset .disabled-field th, fieldset .disabled-field th small, fieldset .disabled-field td { color: #666; background-color: #ddd; } .config-form .lastrow { border-top: 1px #000 solid; } .config-form .lastrow { background: ; padding: .5em; text-align: center; } .config-form .lastrow input { font-weight: bold; } /* form elements */ .config-form span.checkbox { padding: 2px; display: inline-block; } .config-form .custom { /* customized field */ background: #FFC; } .config-form span.checkbox.custom { padding: 1px; border: 1px #EDEC90 solid; background: #FFC; } .config-form .field-error { border-color: #A11 !important; } .config-form input[type="text"], .config-form input[type="password"], .config-form input[type="number"], .config-form select, .config-form textarea { border: 1px #A7A6AA solid; height: auto; } .config-form input[type="text"]:focus, .config-form input[type="password"]:focus, .config-form input[type="number"]:focus, .config-form select:focus, .config-form textarea:focus { border: 1px #6676FF solid; background: #F7FBFF; } .config-form .field-comment-mark { font-family: serif; color: #007; cursor: help; padding: 0 .2em; font-weight: bold; font-style: italic; } .config-form .field-comment-warning { color: #A00; } /* error list */ .config-form dd { margin-: .5em; } .config-form dd:before { content: "\25B8 "; } .click-hide-message { cursor: pointer; } .prefsmanage_opts { margin-: 2em; } #prefs_autoload { margin-bottom: .5em; margin-left: .5em; } #placeholder .button { position: absolute; cursor: pointer; } #placeholder div.button { font-size: smaller; color: #999; background-color: #eee; padding: 2px; } .wrapper { float: ; margin-bottom: 1.5em; } .toggleButton { position: relative; cursor: pointer; font-size: .8em; text-align: center; line-height: 1.4em; height: 1.55em; overflow: hidden; border-right: .1em solid #888; border-left: .1em solid #888; -webkit-border-radius: .3em; -moz-border-radius: .3em; border-radius: .3em; } .toggleButton table, .toggleButton td, .toggleButton img { padding: 0; position: relative; } .toggleButton .container { position: absolute; } .toggleButton .container td, .toggleButton .container tr { background-image: none; background: none !important; } .toggleButton .toggleOn { color: #fff; padding: 0 1em; text-shadow: 0 0 .2em #000; } .toggleButton .toggleOff { padding: 0 1em; } .doubleFieldset fieldset { width: 48%; float: ; padding: 0; } .doubleFieldset fieldset.left { margin-: 1%; } .doubleFieldset fieldset.right { margin-: 1%; } .doubleFieldset legend { margin-: 1.5em; } .doubleFieldset div.wrap { padding: 1.5em; } #table_name_col_no_outer { margin-top: 45px; } #table_name_col_no { position: fixed; top: 55px; width: 100%; background: #ffffff; } #table_columns input[type="text"], #table_columns input[type="password"], #table_columns input[type="number"], #table_columns select { width: 10em; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } #placeholder { position: relative; border: 1px solid #aaa; float: ; overflow: hidden; width: 450px; height: 300px; } #openlayersmap{ width: 450px; height: 300px; } .placeholderDrag { cursor: move; } #placeholder .button { position: absolute; } #left_arrow { left: 8px; top: 26px; } #right_arrow { left: 26px; top: 26px; } #up_arrow { left: 17px; top: 8px; } #down_arrow { left: 17px; top: 44px; } #zoom_in { left: 17px; top: 67px; } #zoom_world { left: 17px; top: 85px; } #zoom_out { left: 17px; top: 103px; } .colborder { cursor: col-resize; height: 100%; margin-: -6px; position: absolute; width: 5px; } .colborder_active { border-: 2px solid #a44; } .pma_table td { position: static; } .pma_table th.draggable span, .sticky_columns th.draggable span, .pma_table tbody td span { display: block; overflow: hidden; } .pma_table tbody td span code span { display: inline; } .pma_table th.draggable.right span { margin-: 0px; } .pma_table th.draggable span { margin-: 10px; } .modal-copy input { display: block; width: 100%; margin-top: 1.5em; padding: .3em 0; } .cRsz { position: absolute; } .cCpy { background: #333; color: #FFF; font-weight: bold; margin: .1em; padding: .3em; position: absolute; text-shadow: -1px -1px #000; -moz-box-shadow: 0 0 .7em #000; -webkit-box-shadow: 0 0 .7em #000; box-shadow: 0 0 .7em #000; -moz-border-radius: .3em; -webkit-border-radius: .3em; border-radius: .3em; } .cPointer { background: url(getImgPath('col_pointer.png');?>); height: 20px; margin-: -5px; /* must be minus half of its width */ margin-top: -10px; position: absolute; width: 10px; } .tooltip { background: #333 !important; opacity: .8 !important; border: 1px solid #000 !important; -moz-border-radius: .3em !important; -webkit-border-radius: .3em !important; border-radius: .3em !important; text-shadow: -1px -1px #000 !important; font-size: .8em !important; font-weight: bold !important; padding: 1px 3px !important; } .tooltip * { background: none !important; color: #FFF !important; } .cDrop { left: 0; position: absolute; top: 0; } .coldrop { background: url(getImgPath('col_drop.png');?>); cursor: pointer; height: 16px; margin-: .3em; margin-top: .3em; position: absolute; width: 16px; } .coldrop:hover, .coldrop-hover { background-color: #999; } .cList { background: #EEE; border: solid 1px #999; position: absolute; -moz-box-shadow: 0 .2em .5em #333; -webkit-box-shadow: 0 .2em .5em #333; box-shadow: 0 .2em .5em #333; } .cList .lDiv div { padding: .2em .5em .2em; padding-: .2em; } .cList .lDiv div:hover { background: #DDD; cursor: pointer; } .cList .lDiv div input { cursor: pointer; } .showAllColBtn { border-bottom: solid 1px #999; border-top: solid 1px #999; cursor: pointer; font-size: .9em; font-weight: bold; padding: .35em 1em; text-align: center; } .showAllColBtn:hover { background: #DDD; } .turnOffSelect { -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } .navigation { margin: .8em 0; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; getCssGradient('eeeeee', 'cccccc'); ?> } .navigation td { margin: 0; padding: 0; vertical-align: middle; white-space: nowrap; } .navigation_separator { color: #999; display: inline-block; font-size: 1.5em; text-align: center; height: 1.4em; width: 1.2em; text-shadow: 1px 0 #FFF; } .navigation input[type=submit] { background: none; border: 0; filter: none; margin: 0; padding: .8em .5em; border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; } .navigation input[type=submit]:hover, .navigation input.edit_mode_active { color: #fff; cursor: pointer; text-shadow: none; getCssGradient('333333', '555555'); ?> } .navigation select { margin: 0 .8em; } .cEdit { margin: 0; padding: 0; position: absolute; } .cEdit input[type=text] { background: #FFF; height: 100%; margin: 0; padding: 0; } .cEdit .edit_area { background: #FFF; border: 1px solid #999; min-width: 10em; padding: .3em .5em; } .cEdit .edit_area select, .cEdit .edit_area textarea { width: 97%; } .cEdit .cell_edit_hint { color: #555; font-size: .8em; margin: .3em .2em; } .cEdit .edit_box { overflow-x: hidden; overflow-y: scroll; padding: 0; margin: 0; } .cEdit .edit_box_posting { background: #FFF url(getImgPath('ajax_clock_small.gif');?>) no-repeat right center; padding-: 1.5em; } .cEdit .edit_area_loading { background: #FFF url(getImgPath('ajax_clock_small.gif');?>) no-repeat center; height: 10em; } .cEdit .goto_link { background: #EEE; color: #555; padding: .2em .3em; } .saving_edited_data { background: url(getImgPath('ajax_clock_small.gif');?>) no-repeat left; padding-: 20px; } .relationalTable td { vertical-align: top; } .relationalTable select { width: 125px; margin-right: 5px; } /* css for timepicker */ .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; } .ui-timepicker-div dl { text-align: ; } .ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; } .ui-timepicker-div dl dd { margin: 0 10px 10px 85px; } .ui-timepicker-div td { font-size: 90%; } .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; } .ui-timepicker-rtl { direction: rtl; } .ui-timepicker-rtl dl { text-align: right; } .ui-timepicker-rtl dl dd { margin: 0 65px 10px 10px; } input.btn { color: #333; background-color: #D0DCE0; } body .ui-widget { font-size: 1em; } body #ui-datepicker-div { z-index: 9999 !important; } .ui-dialog fieldset legend a { color: #235A81; } .ui-draggable { z-index: 801; } /* over-riding jqplot-yaxis class */ .jqplot-yaxis { left:0 !important; min-width:25px; width:auto; } .jqplot-axis { overflow:hidden; } .report-data { height:13em; overflow:scroll; width:570px; border: solid 1px; background: white; padding: 2px; } .report-description { height:10em; width:570px; } div#page_content div#tableslistcontainer table.data { border-top: 0.1px solid #EEEEEE; } div#page_content div#tableslistcontainer, div#page_content div.notice, div#page_content div.result_query { margin-top: 1em; } table.show_create { margin-top: 1em; } table.show_create td { border-right: 1px solid #bbb; } #alias_modal table { width: 100%; } #alias_modal label { font-weight: bold; } .ui-dialog { position: fixed; } .small_font { font-size: smaller; } /* Console styles */ #pma_console_container { width: 100%; position: fixed; bottom: 0; : 0; z-index: 100; } #pma_console { position: relative; margin-: 240px; } #pma_console .templates { display: none; } #pma_console .mid_text, #pma_console .toolbar span { vertical-align: middle; } #pma_console .toolbar { position: relative; background: #ccc; border-top: solid 1px #aaa; cursor: n-resize; } #pma_console .toolbar.collapsed:not(:hover) { display: inline-block; border-top--radius: 3px; border-: solid 1px #aaa; } #pma_console .toolbar.collapsed { cursor: default; } #pma_console .toolbar.collapsed>.button { display: none; } #pma_console .message span.text, #pma_console .message span.action, #pma_console .toolbar .button, #pma_console .toolbar .text, #pma_console .switch_button { padding: 0 3px; display: inline-block; } #pma_console .message span.action, #pma_console .toolbar .button, #pma_console .switch_button { cursor: pointer; } #pma_console .message span.action:hover, #pma_console .toolbar .button:hover, #pma_console .switch_button:hover, #pma_console .toolbar .button.active { background: #ddd; } #pma_console .toolbar .text { font-weight: bold; } #pma_console .toolbar .button, #pma_console .toolbar .text { margin-: .4em; } #pma_console .toolbar .button, #pma_console .toolbar .text { float: ; } #pma_console .content { overflow-x: hidden; overflow-y: auto; margin-bottom: -65px; border-top: solid 1px #aaa; background: #fff; padding-top: .4em; } #pma_console .content.console_dark_theme { background: #000; color: #fff; } #pma_console .content.console_dark_theme .CodeMirror-wrap { background: #000; color: #fff; } #pma_console .content.console_dark_theme .action_content { color: #000; } #pma_console .content.console_dark_theme .message { border-color: #373B41; } #pma_console .content.console_dark_theme .CodeMirror-cursor { border-color: #fff; } #pma_console .content.console_dark_theme .cm-keyword { color: #de935f; } #pma_console .message, #pma_console .query_input { position: relative; font-family: Monaco, Consolas, monospace; cursor: text; margin: 0 10px .2em 1.4em; } #pma_console .message { border-bottom: solid 1px #ccc; padding-bottom: .2em; } #pma_console .message.expanded>.action_content { position: relative; } #pma_console .message:before, #pma_console .query_input:before { left: -0.7em; position: absolute; content: ">"; } #pma_console .query_input:before { top: -2px; } #pma_console .query_input textarea { width: 100%; height: 4em; resize: vertical; } #pma_console .message:hover:before { color: #7cf; font-weight: bold; } #pma_console .message.expanded:before { content: "]"; } #pma_console .message.welcome:before { display: none; } #pma_console .message.failed:before, #pma_console .message.failed.expanded:before, #pma_console .message.failed:hover:before { content: "="; color: #944; } #pma_console .message.pending:before { opacity: .3; } #pma_console .message.collapsed>.query { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } #pma_console .message.expanded>.query { display: block; white-space: pre; word-wrap: break-word; } #pma_console .message .text.targetdb, #pma_console .message.collapsed .action.collapse, #pma_console .message.expanded .action.expand, #pma_console .message .action.requery, #pma_console .message .action.profiling, #pma_console .message .action.explain, #pma_console .message .action.bookmark { display: none; } #pma_console .message.select .action.profiling, #pma_console .message.select .action.explain, #pma_console .message.history .text.targetdb, #pma_console .message.successed .text.targetdb, #pma_console .message.history .action.requery, #pma_console .message.history .action.bookmark, #pma_console .message.bookmark .action.requery, #pma_console .message.bookmark .action.bookmark, #pma_console .message.successed .action.requery, #pma_console .message.successed .action.bookmark { display: inline-block; } #pma_console .message .action_content { position: absolute; bottom: 100%; background: #ccc; border: solid 1px #aaa; border-top--radius: 3px; } html.ie8 #pma_console .message .action_content { position: relative!important; } #pma_console .message.bookmark .text.targetdb, #pma_console .message .text.query_time { margin: 0; display: inline-block; } #pma_console .message.failed .text.query_time, #pma_console .message .text.failed { display: none; } #pma_console .message.failed .text.failed { display: inline-block; } #pma_console .message .text { background: #fff; } #pma_console .message.collapsed>.action_content { display: none; } #pma_console .message.collapsed:hover>.action_content { display: block; } #pma_console .message .bookmark_label { padding: 0 4px; top: 0; background: #369; color: #fff; border-radius: 3px; } #pma_console .message .bookmark_label.shared { background: #396; } #pma_console .message.expanded .bookmark_label { border-top-left-radius: 0; border-top-right-radius: 0; } #pma_console .query_input { position: relative; } #pma_console .mid_layer { height: 100%; width: 100%; position: absolute; top: 0; /* For support IE8, this layer doesn't use filter:opacity or opacity, js code will fade this layer opacity to 0.18(using animation) */ background: #666; display: none; cursor: pointer; z-index: 200; } #pma_console .card { position: absolute; width: 94%; height: 100%; min-height: 48px; : 100%; top: 0; border-: solid 1px #999; z-index: 300; transition: 0.2s; -ms-transition: 0.2s; -webkit-transition: 0.2s; -moz-transition: 0.2s; } #pma_console .card.show { : 6%; box-shadow: -2px 1px 4px -1px #999; } html.ie7 #pma_console .query_input { display: none; } #pma_bookmarks .content.add_bookmark, #pma_console_options .content { padding: 4px 6px; } #pma_bookmarks .content.add_bookmark .options { margin-: 1.4em; padding-bottom: .4em; margin-bottom: .4em; border-bottom: solid 1px #ccc; } #pma_bookmarks .content.add_bookmark .options button { margin: 0 7px; vertical-align: bottom; } #pma_bookmarks .content.add_bookmark input[type=text] { margin: 0; padding: 2px 4px; } #pma_console .button.hide, #pma_console .message span.text.hide { display: none; } #debug_console.grouped .ungroup_queries, #debug_console.ungrouped .group_queries { display: inline-block; } #debug_console.ungrouped .ungroup_queries, #debug_console.ungrouped .sort_count, #debug_console.grouped .group_queries { display: none; } #debug_console .count { margin-right: 8px; } #debug_console .show_trace .trace, #debug_console .show_args .args { display: block; } #debug_console .hide_trace .trace, #debug_console .hide_args .args, #debug_console .show_trace .action.dbg_show_trace, #debug_console .hide_trace .action.dbg_hide_trace, #debug_console .traceStep.hide_args .action.dbg_hide_args, #debug_console .traceStep.show_args .action.dbg_show_args { display: none; } #debug_console .traceStep:after, #debug_console .trace.welcome:after, #debug_console .debug>.welcome:after { content: ""; display: table; clear: both; } #debug_console .debug_summary { float: left; } #debug_console .trace.welcome .time { float: right; } #debug_console .traceStep .file, #debug_console .script_name { float: right; } #debug_console .traceStep .args pre { margin: 0; } /* Code mirror console style*/ .cm-s-pma .CodeMirror-code pre, .cm-s-pma .CodeMirror-code { font-family: Monaco, Consolas, monospace; } .cm-s-pma .CodeMirror-measure>pre, .cm-s-pma .CodeMirror-code>pre, .cm-s-pma .CodeMirror-lines { padding: 0; } .cm-s-pma.CodeMirror { resize: none; height: auto; width: 100%; min-height: initial; max-height: initial; } .cm-s-pma .CodeMirror-scroll { cursor: text; } /* PMA drop-improt style */ .pma_drop_handler { display: none; position: fixed; top: 0; left: 0; width: 100%; background: rgba(0, 0, 0, 0.6); height: 100%; z-index: 999; color: white; font-size: 30pt; text-align: center; padding-top: 20%; } .pma_sql_import_status { display: none; position: fixed; bottom: 0; right: 25px; width: 400px; border: 1px solid #999; background: #f3f3f3; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; -moz-box-shadow: 2px 2px 5px #ccc; -webkit-box-shadow: 2px 2px 5px #ccc; box-shadow: 2px 2px 5px #ccc; } .pma_sql_import_status h2, .pma_drop_result h2 { background-color: #bbb; padding: .1em .3em; margin-top: 0; margin-bottom: 0; color: #fff; font-size: 1.6em; font-weight: normal; text-shadow: 0 1px 0 #777; -moz-box-shadow: 1px 1px 15px #999 inset; -webkit-box-shadow: 1px 1px 15px #999 inset; box-shadow: 1px 1px 15px #999 inset; } .pma_sql_import_status div { height: 270px; overflow-y:auto; overflow-x:hidden; list-style-type: none; } .pma_sql_import_status div li { padding: 8px 10px; border-bottom: 1px solid #bbb; color: rgb(148, 14, 14); background: white; } .pma_sql_import_status div li .filesize { float: right; } .pma_sql_import_status h2 .minimize { float: right; margin-right: 5px; padding: 0 10px; } .pma_sql_import_status h2 .close { float: right; margin-right: 5px; padding: 0 10px; display: none; } .pma_sql_import_status h2 .minimize:hover, .pma_sql_import_status h2 .close:hover, .pma_drop_result h2 .close:hover { background: rgba(155, 149, 149, 0.78); cursor: pointer; } .pma_drop_file_status { color: #235a81; } .pma_drop_file_status span.underline:hover { cursor: pointer; text-decoration: underline; } .pma_drop_result { position: fixed; top: 10%; left: 20%; width: 60%; background: white; min-height: 300px; z-index: 800; -webkit-box-shadow: 0 0 15px #999; border-radius: 10px; cursor: move; } .pma_drop_result h2 .close { float: right; margin-right: 5px; padding: 0 10px; } .dependencies_box { background-color: white; border: 3px ridge black; } #composite_index_list { list-style-type: none; list-style-position: inside; } span.drag_icon { display: inline-block; background-image: url('getImgPath('s_sortable.png');?>'); background-position: center center; background-repeat: no-repeat; width: 1em; height: 3em; cursor: move; } .topmargin { margin-top: 1em; } meter[value="1"]::-webkit-meter-optimum-value { background: linear-gradient(white 3%, #E32929 5%, transparent 10%, #E32929); } meter[value="2"]::-webkit-meter-optimum-value { background: linear-gradient(white 3%, #FF6600 5%, transparent 10%, #FF6600); } meter[value="3"]::-webkit-meter-optimum-value { background: linear-gradient(white 3%, #FFD700 5%, transparent 10%, #FFD700); } /* styles for sortable tables created with tablesorter jquery plugin */ th.header { cursor: pointer; color: #235a81; } th.header:hover { text-decoration: underline; } th.header .sorticon { width: 16px; height: 16px; background-repeat: no-repeat; background-position: right center; display: inline-table; vertical-align: middle; float: right; } th.headerSortUp .sorticon, th.headerSortDown:hover .sorticon { background-image: url(getImgPath('s_desc.png');?>); } th.headerSortDown .sorticon, th.headerSortUp:hover .sorticon { background-image: url(getImgPath('s_asc.png');?>); } /* end of styles of sortable tables */ /* styles for jQuery-ui to support rtl languages */ body .ui-dialog .ui-dialog-titlebar-close { : .3em; : initial; } body .ui-dialog .ui-dialog-title { float: ; } body .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: ; } /* end of styles for jQuery-ui to support rtl languages */ @media only screen and (max-width: 768px) { /* For mobile phones: */ #main_pane_left { width: 100%; } #main_pane_right { padding-top: 0; padding-: 1px; padding-: 1px; } ul#topmenu, ul.tabs { display: flex; } .navigationbar { display: inline-flex; margin: 0 !important; border-radius: 0 !important; overflow: auto; } .scrollindicator { padding: 5px; cursor: pointer; display: inline; } .responsivetable { overflow-x: auto; } body#loginform div.container { width: 100%; } .largescreenonly { display: none; } .width100, .desktop50 { width: 100%; } .width96 { width: 96% !important; } #page_nav_icons { display: none; } table#serverstatusconnections { margin-left: 0; } #table_name_col_no { top: 62px } .tdblock tr td { display: block; } #table_columns { margin-top: 60px; } #table_columns .tablesorter { min-width: 100%; } .doubleFieldset fieldset { width: 98%; } div#serverstatusquerieschart { width: 100%; height: 450px; } .ui-dialog { margin: 1%; width: 95% !important; } } /* templates/database/designer */ /* side menu */ #name-panel { overflow:hidden; } db/login/themes/pmahomme/css/jqplot.css.php000064400000013467151502156020014742 0ustar00 /* jqPlot */ /*rules for the plot target div. These will be cascaded down to all plot elements according to css rules*/ .jqplot-target { position: relative; color: #222222; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: 1em; /* height: 300px; width: 590px;*/ } /*rules applied to all axes*/ .jqplot-axis { font-size: 0.75em; } .jqplot-xaxis { margin-top: 10px; } .jqplot-x2axis { margin-bottom: 10px; } .jqplot-yaxis { margin-: 10px; } .jqplot-y2axis, .jqplot-y3axis, .jqplot-y4axis, .jqplot-y5axis, .jqplot-y6axis, .jqplot-y7axis, .jqplot-y8axis, .jqplot-y9axis, .jqplot-yMidAxis { margin-left: 10px; margin-right: 10px; } /*rules applied to all axis tick divs*/ .jqplot-axis-tick, .jqplot-xaxis-tick, .jqplot-yaxis-tick, .jqplot-x2axis-tick, .jqplot-y2axis-tick, .jqplot-y3axis-tick, .jqplot-y4axis-tick, .jqplot-y5axis-tick, .jqplot-y6axis-tick, .jqplot-y7axis-tick, .jqplot-y8axis-tick, .jqplot-y9axis-tick, .jqplot-yMidAxis-tick { position: absolute; white-space: pre; } .jqplot-xaxis-tick { top: 0; /* initial position untill tick is drawn in proper place */ : 15px; vertical-align: top; } .jqplot-x2axis-tick { bottom: 0; /* initial position untill tick is drawn in proper place */ : 15px; vertical-align: bottom; } .jqplot-yaxis-tick { : 0px; /* initial position untill tick is drawn in proper place */ top: 15px; text-align: ; } .jqplot-yaxis-tick.jqplot-breakTick { : -20px; margin-: 0; padding:1px 5px 1px; z-index: 2; font-size: 1.5em; } .jqplot-y2axis-tick, .jqplot-y3axis-tick, .jqplot-y4axis-tick, .jqplot-y5axis-tick, .jqplot-y6axis-tick, .jqplot-y7axis-tick, .jqplot-y8axis-tick, .jqplot-y9axis-tick { : 0px; /* initial position untill tick is drawn in proper place */ top: 15px; /* padding-left: 10px;*/ /* padding-right: 15px;*/ text-align: ; } .jqplot-yMidAxis-tick { text-align: center; white-space: nowrap; } .jqplot-xaxis-label { margin-top: 10px; font-size: 11pt; position: absolute; } .jqplot-x2axis-label { margin-bottom: 10px; font-size: 11pt; position: absolute; } .jqplot-yaxis-label { margin-right: 10px; /* text-align: center;*/ font-size: 11pt; position: absolute; } .jqplot-yMidAxis-label { font-size: 11pt; position: absolute; } .jqplot-y2axis-label, .jqplot-y3axis-label, .jqplot-y4axis-label, .jqplot-y5axis-label, .jqplot-y6axis-label, .jqplot-y7axis-label, .jqplot-y8axis-label, .jqplot-y9axis-label { /* text-align: center;*/ font-size: 11pt; margin-: 10px; position: absolute; } .jqplot-meterGauge-tick { font-size: 0.75em; color: #999999; } .jqplot-meterGauge-label { font-size: 1em; color: #999999; } table.jqplot-table-legend { margin-top: 12px; margin-bottom: 12px; margin-left: 12px; margin-right: 12px; } table.jqplot-table-legend, table.jqplot-cursor-legend { background-color: rgba(255,255,255,0.6); border: 1px solid #cccccc; position: absolute; font-size: 0.75em; } td.jqplot-table-legend { vertical-align: middle; } /* These rules could be used instead of assigning element styles and relying on js object properties. */ /* td.jqplot-table-legend-swatch { padding-top: 0.5em; text-align: center; } tr.jqplot-table-legend:first td.jqplot-table-legend-swatch { padding-top: 0px; } */ td.jqplot-seriesToggle:hover, td.jqplot-seriesToggle:active { cursor: pointer; } .jqplot-table-legend .jqplot-series-hidden { text-decoration: line-through; } div.jqplot-table-legend-swatch-outline { border: 1px solid #cccccc; padding: 1px; } div.jqplot-table-legend-swatch { width: 0; height: 0; border-top-width: 5px; border-bottom-width: 5px; border-left-width: 6px; border-right-width: 6px; border-top-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-style: solid; } .jqplot-title { top: 0; : 0px; padding-bottom: 0.5em; font-size: 1.2em; } table.jqplot-cursor-tooltip { border: 1px solid #cccccc; font-size: 0.75em; } .jqplot-cursor-tooltip { border: 1px solid #cccccc; font-size: 0.75em; white-space: nowrap; background: rgba(208,208,208,0.5); padding: 1px; } .jqplot-highlighter-tooltip, .jqplot-canvasOverlay-tooltip { border: 1px solid #cccccc; font-size: 0.75em; white-space: nowrap; background: rgba(208,208,208,0.5); padding: 1px; } .jqplot-point-label { font-size: 0.75em; z-index: 2; } td.jqplot-cursor-legend-swatch { vertical-align: middle; text-align: center; } div.jqplot-cursor-legend-swatch { width: 1.2em; height: 0.7em; } .jqplot-error { /* Styles added to the plot target container when there is an error go here.*/ text-align: center; } .jqplot-error-message { /* Styling of the custom error message div goes here.*/ position: relative; top: 46%; display: inline-block; } div.jqplot-bubble-label { font-size: 0.8em; /* background: rgba(90%, 90%, 90%, 0.15);*/ padding-left: 2px; padding-right: 2px; color: rgb(20%, 20%, 20%); } div.jqplot-bubble-label.jqplot-bubble-label-highlight { background: rgba(90%, 90%, 90%, 0.7); } div.jqplot-noData-container { text-align: center; background-color: rgba(96%, 96%, 96%, 0.3); } db/login/themes/pmahomme/screen.png000064400000057251151502156020013325 0ustar00PNG  IHDR^ PLTEmmm㽽˻ޯܓǙʼn֧ǣrѺ۸尠˛ҼҴ˻ᑾŀدΘܸĥd 9hkN!˲ǯ륝^p͋]H~~~stuppqfffvwy|{zijlw}}뜮脎lagm\bfT\`cbbchj㒛twxddd?>?#rtRNSmƿZeIDATx҅ 4°nq.%A;Ծ(?clu0lιaIIiI=*"]~w߾-ŶdGgwIã)/8[pN9tM7q홮xLO*TXQsDI4!VNsu%i\]O`N{~={빥o$]q^qÌO2^mŎ'޻'x盗7x^grzP=8}C3'y1SKS`O}]#zHy@+*-.N J=}Z' o{Z|utj6;*/g6y_-S.PZo#jka*BSَ&ffyG2#xV`IZFZ:@Iˆ!s$@zW"BFR C#3 +Ni0110P c^?~R/ ts}_7\߇!Y\^SN1UUi'륲pS9$KTIE_3VK9[U >urTFk˂V0,{ ε!YJf-`YBd1ߌ=zB$ )1bDD킑{Ė*>x;ß>5>}_~Ͳѱ@O"V+%z􌟝_X\IX. +a5ͪ9[HpsX]H?AI~ev|?4vā')43+DIGj襰1ףC@ҍpR3>/fp5ٓw.!w>1jmq]psw߂Y!Ad.Ip'.>W$ fep7)c㸶xw JOpȨ;6nCH<OLN.Ns_ F1=GjcQawG(R'[r O)*RqǬgW75d,MS񳆖{ì} OG3­nZZ:\T+'ܴ#Ei;:61b1$%)pu c7e^ D&=*ϯQªwxc f%d{%-zb_~0fZ_ ME*Og^[|q]xcc-ٷg\G63,HAFamwŦ+KZPS-[w/uYy͸kHL,_qdG6 s,KC:--uqtjj -Pi! A3}26b Ԅ7XU#t4\\}OH1 s0XaudnW9(~Km:חwuʒl4VWƑ1fi"(hEKT ?{n_wĸxo=ڙٞn?6DPIRO'zbGRLIW D$drtZ'ɇ=S%|9jnO^Mo}t^N\k 7v*|j᫏rk}aԗS^ׂs nD-[ζ>Jej<˚xyC&o&\ q ݞ%U d4HvYYB;F3HI]EHAfMFHFiB-h]!AH,;di37xJ&E^#rͨ鬯S:ݹANo'{T(ʣƅP4n\ UzFAܰL)0e`x|*A;KkzҹiwͼxWnw}){ߩ4W\u 5 p|-&7i}O;҄L5{2ҮonjlLM|W%MNE%[v^}p׎#GvݻwP%$kea<3oTN%<7}K.ŏtw mYe&ͻ]MIהɝd+]1=T/;ak_YnyOUg?V-nλ2AjιJNwh=;ňEa0wUWW}ʹy'v޼S]zp'88jp\׸5θ&AVuMJ"@~2]A0)r&UG[2 1V%S+f)˓o~=mf3UEO(5TJ*'xQc JLw\7.;Mք g9pZt@*T\B@p 6&XŃcp{󸦮W{DVP$c' \@Y:TH6Bc g: m*T;}tY>j}950<{xr'r5#49QvSakvcr=RT9P CbȃiiYEɴT2Lb-;{Τ9_u:9A,ٔ`jjw̒}[S MݞԮ}}[_tY*cvGp׿ 󥗦C_ l#kk?۰ԺX -/hNYYG]ڸY̲mܬM'vV.Y1SLIJ)bay)wwjԛξwTsy9M=rKsM&>k>}WQVǸGdqrT6qI|nz4]ٜ]=GW8:Rz +v/s3-Yެ3glY:]?d##4Db;lH(S6),s*1.лi7]TY2+jEreo]jX,H$o_FFs5 $qힾښoa7ݐj j_J;Ϳ6 Y NN{wM,1 h%𿥸(ҸZa0g (z;fԣf$ d'k>)0!,67޵|zYQ/r*83iș YI"QtT]Ab+LhW7zei{$VF Y΅\ v׎-o) )̜r*|o &phlzHPKzW|1=劕% /ow j1Q ɵ#z'^e(qύTx<}M{?ыhaěq-gŀ`5Ao< OmxTA>1s+_Hݸ_x~m\ϋ^z,z-F^6#my`4===sɊt( !{CcfA/ح]<:8Etm%:ANY7y-eD'M_d@:pg,ɘdָ':3Khv`X9z g9i 7=Noڝi˦>v9rz2gΊIzL=8/*Ƃ/dkH,uOқ6^^Mb[n(WQOʳVL?)=77n?1fʟ y ݨ^JJ4g˺b, [,4y !GZ9א4CM\R<6j+prdQX3#V|Ͱ,3+|ڗQG by7(hx$H jyZݼ@zyw2UVbjjAzF!vu kRf n^/{װ^zABZP(!H91x Iyy)ik(R"c ޱbAyA{B o906>z#fuCѶJڷKkr\;fe:{L뫕& 9{Q }bʐ᠂KХO T}A) rGo@* e˗XLJյ!ЯE##\P#'-yi&cy&z Rh{OBy8JyLIBiy,*0@Bw{rF_)LT:zWok:Φɒd!{ŲSͿ!-'myϧ~yd2Q<Y( *z)r !mΝlym۹Ц {7w};nXFao{ǎ|x!@}=@?q !aVIl;>xƃ2)Am۞)?Uctm^ 41ji ,%oW%YUZ{"eR1ÚPRi2&ȜEuHJI)#Yj&$d$)/J݄)bIg2Ԃ|D/e̅:; z2V9H|9N &V!E1I-p jjFԔ8m ~ A21s 5{ܒe8[ҳT FʈD[BuHb)۞V#jbK,VRuٵ!ZVPG{^UUd]/HBO(0+=5;&z%f2wK)JVtzk~?("v!tpՏN%9seK^=q]ˏݔ4WtE +Nd*l$nDh M4ƌPL|ksezGxڗQhҪowƩs7|>W}Nw)~W_~MVׂ^Rs&=EH3 [ a bB<"L)A<3^t-ʐNJL^yHpґ7S/_>N?oʛoyN~v%S@/2#NjGqf79ɞ6("p7c~q?V lNT#kI+BheISv*zk@_+pfL]z˟?9r'zKS/|W֛~_yӯ~C+W9tis:vt8-F_[;,Q|uH,Do#ѫ\<2bڝ/h\zV[KnzږÛ[n>|kpz+4BveupJQzjt-=O=SGmsS1KwdZ@|2Ght_hJ]B.VoaAhȒΉsqfʕ?o fW3K:˦KWFsǣz%rBPjH}6e-hgWW7cz7<.Cꥦ'MצfkA3s5Ͻq&Zպi R^ň^chh bz2DdZ7R5kFX$«?yw Hr퉈oOԋh 'y̸<O)v d 1Zq!w "b003Ի7+l 94Z z:^?ya@F-+)OO9dyg>jL87!so2YͩGanȾW kvRK&u,Bz|^.Ջ(Q|%HqN-Wíd]*,L Y Wz,E ?|w`)Z zUVըZ{*Y 9KT_d5qysҌ:wڂAϐdG$ Y}Mqzzez}b0+55&5ܚpM945i]F.V̶l|%bEX-P[yX9W[m>|6$!zK!%lCw4\h^)cND+%!F2vveU۫%նΈomIXMʺ_RirmMg+rNz%tEza{/}vhP.ՙm"i 9[%38\{@aX=LJ͇f W\:"5bG~Q#x<4#!z^6:sR; `=<LXN̻=^Oݻ?yT/lכ9vcJqzKM7?/}/{V_ŷ}}O}=O|տH93V^sM(]GF{L̺o0(P=p{<1Bi%%ajjd󢷳 nGؖo/jrV]N&*f;?Wl*uvgD/H 1jlbf(H j| 2V2h>zX/#F[Րm`M)ّ @ScgP6JJeƘy  #{h7=xb$LH>ϋNQ/5}ueǺY  (NՉ2s6DbFE*h=JLXMuo /|~\E_}xjMi KΝBnW&(L=OgFFN՛Wł?m3KQD.zlЉM'?E^ `D/-07=\;=MJzZ8;Fʆ3vcjm7ѿ ҅z>J0.=VZ_(BS Rȓ>n6cv}uY4W8zAf 1)\!Fh0f[19댰?Xg_ B8X@9HVLS[#V_49_͘y m#`&(AoN^Ah'hCf:mVj-9ۥ+m6nwa>\gn8 ;uި^>,=~p`]H?=4+ -|!5}%]iyi jDj 3|j`Ks,Y EQqf"&>Uڪ,ש%&GI(dDY[+ -J'(>&jALRb ; sI'~KZg>\:p^}˗.ߺֿ^+ty٢vח/~OۥGt0Mj%͚ HlF.m$zs]U}mejZe:R"]jQg48C%sE~IQw>b4x_^'Lh6J;snm?՝_,P!;`ҖeӐdIs\H_vG'n>ק(vy=.>ݐ4-}Eގs+bC777|Kba~V]/d 4:U`W ʐN EtJk I 9mm+-P =hn.rJD&G׬ .xCWȧ_oWryXIޫ"\Jz礗vBM,ȣ#Zy_O^*L34=^/`n_#XmL9YW]}eb\Ziwڋ!kFRtvK,G` {t[Jt3\ew}f;-J6dx^,7Uo~bH}b/\ĺ\\_.tv?zo]= kN jpTG*[RU>YJM{( rk Lv`ɎέT4]_ˆ )ӒakxίWq[U8AopU$b)0Of9j*yPEBă5vn,eR|=zM1_.(eJUhz#L/vޖrw9SSS5QxX܈4zhS0 )K je@W(/ }4G?k =m¯t:='ٝK uM;ѧLB{;&M tTR#] Y 7mp|ٳW>K;V/~O߳O [m-]zt^03N%*0)+v0=TnBF28]trȉ&K3@?xf`VF֜M(Wԋ^~!A$1|C=<`v]Ks'JLt5Ky:_ެ7S/#`Jט:Y =셱TC(z5Lc7;ZZ!* .jڸݲ"8]5Q/]X X|=WS5)R")'_y:Cڰ: {?4/z([6c$HRԐ|BY]c,|tp?3=sqO[v{3^z9m8Fu>ֶ1;V!;sQ=^pes;A,Vc\񿉗/ʢ$e}j޻ҬZ>ۺ>eτݒb[k?qGoXqc[iCChn^e"N.S@x3y$S[#xbI4xu#E3;v4A|Zxڡ 2xښ M971za2ݖM^Gtx>U…t!7XԂtN}y__EAs`Ng8wgkz=as.o^~nϩzo !8Ǚ{9*{p4#=~݀R*F>$ze7iI%x -dK `2$Mpm/yB{x%/0BAT2RI1OŻl*廸@(MO:boOPονD<)~4/| IyWRjk|dqa2/O*.'8qnZ:;Q;5|p6 D'0&IXfxu_@T`3khy{ۂd~nf+ h3XKw We+ Ő>ąītc2 f^Da eK+́6 qK>.⍙x&D]3~CtCu{]gQ g"WL1٠N?/(hPknyRW8\*-@)y[A6lJԀivo_oҤu%w8~6y_9&+x,^qJ;4o?[RΙJpOy8 න4'˕yI| 򀢝}njנȱ]%* q%z\f:ffcf_B ؂3#QX#8bb'uԉ$." VrmH5edER4h^7TX{~ a?_٫' !m3`f}qiGl=ą0H<3RaѨ`t}}4,jQ́,j4h,.1b܉B.w Ϣx"y]Ӝ|~ٿ![uΪiIL.aS6l/fO5:K9QK ֲ0*uAyzvx|w 457*{^F;'Or¹U;<T!_yh6^(b '3RVx>_p򰀂"\8ǙαGA$IwNjuj3KpyNw! J[Sċ8̝ ߧwƯܹQ[jV$*S@LTѣ? ڸ&Q4LemIĪ纮}ժX,O%sW\7vxNW~t߬'"Z/Oi\ϽW"'D|[uGkU깧P~vyCuި> nͫeQ:&f]R+k;Sgƍﺧj XGxo~#nغzaE(YOedM|+ZT~c%~v\kzs6u,'4땴g>\v;*Qׅ57bк ~[OJEƟzͦ! +2qG?IPkĐ|Odl\dgh` L*7{I0Ncfgwk6Ck{Y+_^l4ׯ_8'eGl}4>/݀ <îZޖd(_K CCxY ])l78HUxڜVژVIn_77ok/+P`C R\DdrRԢ+ $#H$%J ;o@/q?x+q! J1a ,j`uv0yŽCC;.v@SṮNT1@ Hz( )(iH ՀPx}΁ /~δvTP4NH'H8;u/ /[µ{(4яE? iBЯI~ rxT.IaksOl)oIc*&]; A4ɾ7 {h >S%UnS7mA͜F_ߧ}n=`35kN/qв[>r?q^3j!CyůfkL vF oDFm9w,ȼ޷̼Ԓȣ$+-]ntC0o|- 91/rEaI9ݜn>i5HL(ɗ9۹ v-*yo9sBWDF:"buI܀'dk5!®gL)9d89I}U_,^&o;KͯIZEOc&iR隆>9TIoNԜ~?8/[&+xY'+H3rk㛻t|&oEI'+|^omc{>/cyŻ-1ƇTa;u˿_#f7Geyoy?so5{-w~r]f^aV~ij{sB-a ;@mw/\^n7σN+e17Bf"5c|)]Wr(P{ȫH^@gWh.~{;37Gݏ%RoWC*Ihv[W A0"%{ob}x6HP{`{k2j KD}D4 BEj +355(r;N9|^4"11b[h (!-MrRTP=;S{h:RQH.*:/ϞY'JP4dC睨zXVǹJu]G$3BN(= +>Ⱥ*YuNuԻחwo{NAg{_ƙ|+$&ٕI,3&D15bGi)8&âmq* $ mtH UpBE6 iIMTGw%7Ʊ4/?0t~3V 'A^k7uF@w^v?5ʡ]Ύ CL2]5_n52V5 雴Dd:-fmg)a_!HxZԕ1 f.۴M5aztwpn-ox$[.,:8=5gX_uN:?~?؄zvQrVDj{K7Y7/]Y`̴z07tR=@|u `4qq&nbs&*B{o.u%tV3t /D|k5 cbagE;_{/O^_"HҎ_W$bą.QW٩㉳'{Jdz)< Fy=e=e枋fb(҂E ?yjGwY\fv5(}r|6 &:A,WD jeee 8*1(t:͠[sV,՘ʜ澊> (d{`TԾCGO.<\;{pN]$^l')[*¯Lbg dKY,[* mB %n Ç]yZy:"a@. HU  (mQ|{9qmvxBtܑ+W;wn h D? !~{MabG?UuלuWWJ꺳+vxGNo GrF:#&7ykNznfޓcGׁZ;[ǒ#g Y53kz2|htk:𱃉Iޘxr_T0Wvz`򲨯tXPT 1)x*frE.e჏ e^qucYH@ x%iRH8M (ͣE/[CB6PdK6JijBUR*u066._MA>BW"ᱤPvJRcraܽME`#@'_A{V_DdKU?o_l2m;x`6e1/)XwninWB쑄C>b;6?m\Ώ*%K[! .9AΖ Cm-I5 L\ed`XS\xh֏b[yy,Le3eä,xdQaqXF-&@JF50i1m䕲R06:Z=WkպrjettlNZ9 k{>ywYu2ݢN5Q5S5c_niN| ~G[\s:>KZ/ŢmN|F̫J2FS oMю^b (EAZbuk;z-[@o.-?sM-,߻xG/5ʙgS=~ڜgT@\sryw2tV﹂tk=z{É+'{Zb׎ '0noZ~;Unwj~zz/Pld>F+`.2˯I:u,/H^^Rp>cm2|\W^UN ,X4]-Q[msZU47Pjǃ5@2*iU `YchAbŀhuD*z60֝+Cy! #B=Pa90, Ŕ$j@ yF$Jǰpn]uu@:]ݹ-Q kT=M =Ckq*!Njy:Â/CFB&eb?٫++s̾jny('yw9PZ(/}'o ./$elRIm+IG;z{ү5TBQR hP'Fֿ )lIzz aP奯}[$/A6üL^dOp*2ȅ3 /~5bZMTgh )٥Lm*&5ydoWlQԮ~Pk/mi Օ7>Fd6ߏ!⒐1H8Ǘ^rNep*h/ e4X`!T-1=?~zb"#5,7A8E|pr|sL:x&O3Rk~ sєu媙 d3y!'vp ٲ{%6OM[ gMf6Ȗ<lsGwga+Bc䁝=7LVy5ϝ+׷X6j">l  E& ӄ5&EdRQv'Ago.|MA#e^L 8p ]CĠ6#店1&JGBQQɋd )Y33VnRv* q%/xSHn\eAvMNF@ַϸ]gP^_qL^_kl^Z>l일nz^TCÎ?vv li2` ~@'݀[2RMI_JWQ½1p@d >< N=`@z#U(0BlWp7l|XA^/J^Ca_$QJ/0Ѡ !(dr$$(*\|5Ipo 1qY 㒂z/Zo jKK6UpPp-M';F@CP2Lǔ870~y+y1TA_&{ŹniT#U uI`vҚDm‚MxFj#o%~>>hU 6002d>ֽC*;rc<<߈p0`ߗJo1a+E1w*(^MJ;;v/'?-(Q+N(N[ސBGTwv\?ٍtw[OKZ]cbrp`(.HJ Uhz: J?w±./yy-?}G)g8zN '1d~ZlJ魞<uz닸VbUk~#я/niБ~:O+ Yt7h[o+/I[Y8g%Ju-j]Ky]L p5!,7M d*ܶL&%`6LA)`%bE ])eI̢aI hP5&=]I))),a~R M%g6T-h{,S#KMOpFई޵tZzp.?[(? @k'=Åa~7WT4?(YO>3{-㲆al~=?kfpƆ1W@ 0zoAS2sv GrY0Z_@ (MrVҧL:D!|g{G??,(6//<3A@3H[bP*t&-:,Dq/㢬d gނm)],_O] t}VC,8GV5OɅFFV?AmH9n*/vydxz~iSU#0ZsU*G3jI k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/pmahomme/jquery/images/ui-icons_cd0a0a_256x240.png000064400000007265151502156020020502 0ustar00PNG  IHDRIJPLTE 4vZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/pmahomme/jquery/images/ui-icons_888888_256x240.png000064400000007265151502156020020251 0ustar00PNG  IHDRIJPLTEDjZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/pmahomme/jquery/images/ui-icons_454545_256x240.png000064400000007265151502156020020224 0ustar00PNG  IHDRIJPLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEkOZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/pmahomme/jquery/images/ui-bg_glass_65_ffffff_1x400.png000064400000000111151502156020021456 0ustar00PNG  IHDRG#7vIDATxchG(hoIENDB`db/login/themes/pmahomme/jquery/images/ui-icons_222222_256x240.png000064400000007265151502156020020205 0ustar00PNG  IHDRIJPLTE""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""FgZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxn6 aNqw!-ly=,( SEE5c+4 zF1@7cV 9 9@GPp? 5%S\C 1⢼T~S=-˲,˲`= zG zQ%Ao5Wx| jX0Y0k(XSO{@]m),˲,+7u}ߛܑ=_A.K.lq=Cu@u]p[A  oh^\736gF^i@t~犈1nTM<eYeY|qp{*JI3jzvN GW$TD(. ^gJ+? ,{?O` 4v's Ci ug tr|ML&䔅7i` nK5,ĸȼDeYeq>I k=ԘSf^-&/itU >݈ a>-EꜦ}0cNt_y8 p4%ѧ u|Qu:TG>IOZTuՐ_ 9gYeY9L5eW1 q) ^i{l?L{9/hs_^֠/[[UC-(W@^-u~= 7W>y/0k<\ULvCm[LƐ J'f{L/n7N}qZ<tη $WD#ŖGt J`^jGP.PGL0#H޽+.ҟ%ѐ=mcm^{/&ꢢ(2b@s5u:\ ^I;p`[c@&,HX.BY@%%a X Бl`?~tns9ŧbp|I;0#T `@OvD\9R(˥/XTcvAum?\@?g3lO16n2!\ V@ B߭>9/tG#vsg>H!H(S. c/%dU#5_ep ~ߟ3cMA#֗r-A9*=Եρ41111qxJeWZ2@M*J:7 A2,odswA|g֙-J(L%:e]/7ThM6l|9TlJ*]" 'ƈn2siw-L7~:񧯿GSQVzH1X4bK 2F\7^ߧ6Ы?GCnHÆdBR+4$RUU%lبW eN7H:|~Q׽s: p' (Y^L;6|W2V2w CzjOlszQ]YΩ=o BX`sYNi/O95ޏZ}6MdP:9w? 22s(<I:(@|k͙puypprIq~wNL uq 7eܢ[(< :He,Y*ZZb Yۘ}eԹk!{ ,nl kg|P߸yVЃ!`-߆?Q[rmhA%-tP6YBe($ \.:V0@R?X{N5@X ,; 690I- N~Q@BcA9@rgAzH׃?.zH`tzvטt /okwZ,@A5/` }@ ) $ظA"|XyxOfxhp󀉉 Z]`Ÿσdg\UdTPA F aO37Kz`fyBEqsN;38#CU q&ŎbfΘv`,z:?;@: 67cN+e.T*]$XgC%$~a ܬtunw(0mtݿ|1>)‡0w: wehc7Gc0ry)?n?: Ac2neC_ft>Z]ohtp0!ZkF`&5e')+3$Yam>‡8{xʺ;OLLLLLL @Ab! (H4ЃP=r4u40.,3 D^L 3u3?5 ;}d׋?3`|(Xٗ&&wX+³IENDB`db/login/themes/pmahomme/jquery/jquery-ui.css000064400000107326151502156020015322 0ustar00/*! jQuery UI - v1.12.1 - 2016-12-21 * http://jqueryui.com * Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=smoothness&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=2e83ff&fcHighlight=363636&borderColorHighlight=fcefa1&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=fbf9ee&iconColorActive=454545&fcActive=212121&borderColorActive=aaaaaa&bgImgOpacityActive=65&bgTextureActive=glass&bgColorActive=ffffff&iconColorHover=454545&fcHover=212121&borderColorHover=999999&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=dadada&iconColorDefault=888888&fcDefault=555555&borderColorDefault=d3d3d3&bgImgOpacityDefault=75&bgTextureDefault=glass&bgColorDefault=e6e6e6&iconColorContent=222222&fcContent=222222&borderColorContent=aaaaaa&bgImgOpacityContent=75&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=222222&fcHeader=222222&borderColorHeader=aaaaaa&bgImgOpacityHeader=75&bgTextureHeader=highlight_soft&bgColorHeader=cccccc&cornerRadius=4px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; pointer-events: none; } /* Icons ----------------------------------*/ .ui-icon { display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } .ui-widget-icon-block { left: 50%; margin-left: -8px; display: block; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: 0; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { margin: 0; cursor: pointer; /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-item-wrapper { position: relative; padding: 3px 1em 3px .4em; } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item-wrapper { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* Support: IE <= 11 */ overflow: visible; } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2em; box-sizing: border-box; text-indent: -9999px; white-space: nowrap; } /* no icon support for input elements */ input.ui-button.ui-button-icon-only { text-indent: 0; } /* button icon element(s) */ .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; } .ui-button.ui-icon-notext .ui-icon { padding: 0; width: 2.1em; height: 2.1em; text-indent: -9999px; white-space: nowrap; } input.ui-button.ui-icon-notext .ui-icon { width: auto; height: auto; text-indent: 0; white-space: normal; padding: .4em 1em; } /* workarounds */ /* Support: Firefox 5 - 40 */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .ui-controlgroup { vertical-align: middle; display: inline-block; } .ui-controlgroup > .ui-controlgroup-item { float: left; margin-left: 0; margin-right: 0; } .ui-controlgroup > .ui-controlgroup-item:focus, .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { z-index: 9999; } .ui-controlgroup-vertical > .ui-controlgroup-item { display: block; float: none; width: 100%; margin-top: 0; margin-bottom: 0; text-align: left; } .ui-controlgroup-vertical .ui-controlgroup-item { box-sizing: border-box; } .ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } .ui-controlgroup .ui-controlgroup-label span { font-size: 80%; } .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { border-left: none; } .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { border-top: none; } .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { border-right: none; } .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { border-bottom: none; } /* Spinner specific style fixes */ .ui-controlgroup-vertical .ui-spinner-input { /* Support: IE8 only, Android < 4.4 only */ width: 75%; width: calc( 100% - 2.4em ); } .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { border-top-style: solid; } .ui-checkboxradio-label .ui-icon-background { box-shadow: inset 1px 1px 1px #ccc; border-radius: .12em; border: none; } .ui-checkboxradio-radio-label .ui-icon-background { width: 16px; height: 16px; border-radius: 1em; overflow: visible; border: none; } .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { background-image: none; width: 8px; height: 8px; border-width: 4px; border-style: solid; } .ui-checkboxradio-disabled { pointer-events: none; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } /* Icons */ .ui-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; left: .5em; top: .3em; } .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-n { height: 2px; top: 0; } .ui-dialog .ui-resizable-e { width: 2px; right: 0; } .ui-dialog .ui-resizable-s { height: 2px; bottom: 0; } .ui-dialog .ui-resizable-w { width: 2px; left: 0; } .ui-dialog .ui-resizable-se, .ui-dialog .ui-resizable-sw, .ui-dialog .ui-resizable-ne, .ui-dialog .ui-resizable-nw { width: 7px; height: 7px; } .ui-dialog .ui-resizable-se { right: 0; bottom: 0; } .ui-dialog .ui-resizable-sw { left: 0; bottom: 0; } .ui-dialog .ui-resizable-ne { right: 0; top: 0; } .ui-dialog .ui-resizable-nw { left: 0; top: 0; } .ui-draggable .ui-dialog-titlebar { cursor: move; } .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-text { display: block; margin-right: 20px; overflow: hidden; text-overflow: ellipsis; } .ui-selectmenu-button.ui-button { text-align: left; white-space: nowrap; width: 14em; } .ui-selectmenu-icon.ui-icon { float: right; margin-top: 0; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 2em; } .ui-spinner-button { width: 1.6em; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top-style: none; border-bottom-style: none; border-right-style: none; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; } body .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .ui-widget.ui-widget-content { border: 1px solid #d3d3d3; } .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, /* We use html here because we need a greater specificity to make sure disabled works properly when clicked or hovered */ html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { border: 1px solid #d3d3d3; background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color: #555555; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus { border: 1px solid #999999; background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited, a.ui-button:hover, a.ui-button:focus { color: #212121; text-decoration: none; } .ui-visual-focus { box-shadow: 0 0 3px 1px rgb(94, 158, 214); } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border: 1px solid #aaaaaa; background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-icon-background, .ui-state-active .ui-icon-background { border: #aaaaaa; background-color: #212121; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; color: #363636; } .ui-state-checked { border: 1px solid #fcefa1; background: #fbf9ee; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; color: #cd0a0a; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-button:hover .ui-icon, .ui-button:focus .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-active .ui-icon, .ui-button:active .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-highlight .ui-icon, .ui-button .ui-state-highlight.ui-icon { background-image: url("images/ui-icons_2e83ff_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cd0a0a_256x240.png"); } .ui-button .ui-icon { background-image: url("images/ui-icons_888888_256x240.png"); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-caret-1-n { background-position: 0 0; } .ui-icon-caret-1-ne { background-position: -16px 0; } .ui-icon-caret-1-e { background-position: -32px 0; } .ui-icon-caret-1-se { background-position: -48px 0; } .ui-icon-caret-1-s { background-position: -65px 0; } .ui-icon-caret-1-sw { background-position: -80px 0; } .ui-icon-caret-1-w { background-position: -96px 0; } .ui-icon-caret-1-nw { background-position: -112px 0; } .ui-icon-caret-2-n-s { background-position: -128px 0; } .ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 4px; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 4px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { -webkit-box-shadow: -8px -8px 8px #aaaaaa; box-shadow: -8px -8px 8px #aaaaaa; } db/login/themes/dot.gif000064400000000053151502156020010776 0ustar00GIF89a!,D;db/login/tbl_relation.php000064400000004507151502156020011433 0ustar00factory('PhpMyAdmin\Controllers\Table\TableRelationController'); $container->alias( 'TableRelationController', 'PhpMyAdmin\Controllers\Table\TableRelationController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /* Define dependencies for the concerned controller */ $db = $container->get('db'); $table = $container->get('table'); $dbi = $container->get('dbi'); $options_array = array( 'CASCADE' => 'CASCADE', 'SET_NULL' => 'SET NULL', 'NO_ACTION' => 'NO ACTION', 'RESTRICT' => 'RESTRICT', ); $relation = new Relation(); $cfgRelation = $relation->getRelationsParam(); $tbl_storage_engine = mb_strtoupper( $dbi->getTable($db, $table)->getStatusInfo('Engine') ); $upd_query = new Table($table, $db, $dbi); $dependency_definitions = array( "options_array" => $options_array, "cfgRelation" => $cfgRelation, "tbl_storage_engine" => $tbl_storage_engine, "upd_query" => $upd_query ); if ($cfgRelation['relwork']) { $dependency_definitions['existrel'] = $relation->getForeigners( $db, $table, '', 'internal' ); } if (Util::isForeignKeySupported($tbl_storage_engine)) { $dependency_definitions['existrel_foreign'] = $relation->getForeigners( $db, $table, '', 'foreign' ); } /** @var TableRelationController $controller */ $controller = $container->get('TableRelationController', $dependency_definitions); $controller->indexAction(); db/login/server_collations.php000064400000001462151502156020012507 0ustar00factory( 'PhpMyAdmin\Controllers\Server\ServerCollationsController' ); $container->alias( 'ServerCollationsController', 'PhpMyAdmin\Controllers\Server\ServerCollationsController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /** @var ServerCollationsController $controller */ $controller = $container->get( 'ServerCollationsController', array() ); $controller->indexAction(); db/login/db_routines.php000064400000000555151502156020011271 0ustar00factory( 'PhpMyAdmin\Controllers\Server\ServerPluginsController' ); $container->alias( 'ServerPluginsController', 'PhpMyAdmin\Controllers\Server\ServerPluginsController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /** @var ServerPluginsController $controller */ $controller = $container->get( 'ServerPluginsController', array() ); $controller->indexAction(); db/login/export.php000064400000037057151502156020010304 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('export_output.js'); //check if it's the GET request to check export time out if (isset($_GET['check_time_out'])) { if (isset($_SESSION['pma_export_error'])) { $err = $_SESSION['pma_export_error']; unset($_SESSION['pma_export_error']); echo "timeout"; } else { echo "success"; } exit; } /** * Sets globals from $_POST * * - Please keep the parameters in order of their appearance in the form * - Some of these parameters are not used, as the code below directly * verifies from the superglobal $_POST or $_REQUEST * TODO: this should be removed to avoid passing user input to GLOBALS * without checking */ $post_params = array( 'db', 'table', 'what', 'single_table', 'export_type', 'export_method', 'quick_or_custom', 'db_select', 'table_select', 'table_structure', 'table_data', 'limit_to', 'limit_from', 'allrows', 'lock_tables', 'output_format', 'filename_template', 'maxsize', 'remember_template', 'charset', 'compression', 'as_separate_files', 'knjenc', 'xkana', 'htmlword_structure_or_data', 'htmlword_null', 'htmlword_columns', 'mediawiki_headers', 'mediawiki_structure_or_data', 'mediawiki_caption', 'pdf_structure_or_data', 'odt_structure_or_data', 'odt_relation', 'odt_comments', 'odt_mime', 'odt_columns', 'odt_null', 'codegen_structure_or_data', 'codegen_format', 'excel_null', 'excel_removeCRLF', 'excel_columns', 'excel_edition', 'excel_structure_or_data', 'yaml_structure_or_data', 'ods_null', 'ods_structure_or_data', 'ods_columns', 'json_structure_or_data', 'json_pretty_print', 'json_unicode', 'xml_structure_or_data', 'xml_export_events', 'xml_export_functions', 'xml_export_procedures', 'xml_export_tables', 'xml_export_triggers', 'xml_export_views', 'xml_export_contents', 'texytext_structure_or_data', 'texytext_columns', 'texytext_null', 'phparray_structure_or_data', 'sql_include_comments', 'sql_header_comment', 'sql_dates', 'sql_relation', 'sql_mime', 'sql_use_transaction', 'sql_disable_fk', 'sql_compatibility', 'sql_structure_or_data', 'sql_create_database', 'sql_drop_table', 'sql_procedure_function', 'sql_create_table', 'sql_create_view', 'sql_create_trigger', 'sql_if_not_exists', 'sql_auto_increment', 'sql_backquotes', 'sql_truncate', 'sql_delayed', 'sql_ignore', 'sql_type', 'sql_insert_syntax', 'sql_max_query_size', 'sql_hex_for_binary', 'sql_utc_time', 'sql_drop_database', 'sql_views_as_tables', 'sql_metadata', 'csv_separator', 'csv_enclosed', 'csv_escaped', 'csv_terminated', 'csv_null', 'csv_removeCRLF', 'csv_columns', 'csv_structure_or_data', // csv_replace should have been here but we use it directly from $_POST 'latex_caption', 'latex_structure_or_data', 'latex_structure_caption', 'latex_structure_continued_caption', 'latex_structure_label', 'latex_relation', 'latex_comments', 'latex_mime', 'latex_columns', 'latex_data_caption', 'latex_data_continued_caption', 'latex_data_label', 'latex_null', 'aliases' ); foreach ($post_params as $one_post_param) { if (isset($_POST[$one_post_param])) { $GLOBALS[$one_post_param] = $_POST[$one_post_param]; } } $table = $GLOBALS['table']; PhpMyAdmin\Util::checkParameters(array('what', 'export_type')); // sanitize this parameter which will be used below in a file inclusion $what = Core::securePath($_POST['what']); // export class instance, not array of properties, as before /* @var $export_plugin ExportPlugin */ $export_plugin = Plugins::getPlugin( "export", $what, 'libraries/classes/Plugins/Export/', array( 'export_type' => $export_type, 'single_table' => isset($single_table) ) ); // Check export type if (empty($export_plugin)) { Core::fatalError(__('Bad type!')); } /** * valid compression methods */ $compression_methods = array( 'zip', 'gzip' ); /** * init and variable checking */ $compression = false; $onserver = false; $save_on_server = false; $buffer_needed = false; $back_button = ''; $refreshButton = ''; $save_filename = ''; $file_handle = ''; $err_url = ''; $filename = ''; $separate_files = ''; // Is it a quick or custom export? if (isset($_POST['quick_or_custom']) && $_POST['quick_or_custom'] == 'quick' ) { $quick_export = true; } else { $quick_export = false; } if ($_POST['output_format'] == 'astext') { $asfile = false; } else { $asfile = true; if (isset($_POST['as_separate_files']) && ! empty($_POST['as_separate_files']) ) { if (isset($_POST['compression']) && ! empty($_POST['compression']) && $_POST['compression'] == 'zip' ) { $separate_files = $_POST['as_separate_files']; } } if (in_array($_POST['compression'], $compression_methods)) { $compression = $_POST['compression']; $buffer_needed = true; } if (($quick_export && ! empty($_POST['quick_export_onserver'])) || (! $quick_export && ! empty($_POST['onserver'])) ) { if ($quick_export) { $onserver = $_POST['quick_export_onserver']; } else { $onserver = $_POST['onserver']; } // Will we save dump on server? $save_on_server = ! empty($cfg['SaveDir']) && $onserver; } } /** * If we are sending the export file (as opposed to just displaying it * as text), we have to bypass the usual PhpMyAdmin\Response mechanism */ if (isset($_POST['output_format']) && $_POST['output_format'] == 'sendit' && ! $save_on_server) { $response->disable(); //Disable all active buffers (see: ob_get_status(true) at this point) while (@ob_end_clean()); } // Generate error url and check for needed variables if ($export_type == 'server') { $err_url = 'server_export.php' . Url::getCommon(); } elseif ($export_type == 'database' && strlen($db) > 0) { $err_url = 'db_export.php' . Url::getCommon(array('db' => $db)); // Check if we have something to export if (isset($table_select)) { $tables = $table_select; } else { $tables = array(); } } elseif ($export_type == 'table' && strlen($db) > 0 && strlen($table) > 0) { $err_url = 'tbl_export.php' . Url::getCommon( array( 'db' => $db, 'table' => $table ) ); } else { Core::fatalError(__('Bad parameters!')); } // Merge SQL Query aliases with Export aliases from // export page, Export page aliases are given more // preference over SQL Query aliases. $parser = new \PhpMyAdmin\SqlParser\Parser($sql_query); $aliases = array(); if ((!empty($parser->statements[0])) && ($parser->statements[0] instanceof \PhpMyAdmin\SqlParser\Statements\SelectStatement) ) { $aliases = \PhpMyAdmin\SqlParser\Utils\Misc::getAliases($parser->statements[0], $db); } if (!empty($_POST['aliases'])) { $aliases = Export::mergeAliases($aliases, $_POST['aliases']); $_SESSION['tmpval']['aliases'] = $_POST['aliases']; } /** * Increase time limit for script execution and initializes some variables */ Util::setTimeLimit(); if (! empty($cfg['MemoryLimit'])) { ini_set('memory_limit', $cfg['MemoryLimit']); } register_shutdown_function('PhpMyAdmin\Export::shutdown'); // Start with empty buffer $dump_buffer = ''; $dump_buffer_len = 0; // Array of dump_buffers - used in separate file exports $dump_buffer_objects = array(); // We send fake headers to avoid browser timeout when buffering $time_start = time(); // Defines the default format. // For SQL always use \n as MySQL wants this on all platforms. if ($what == 'sql') { $crlf = "\n"; } else { $crlf = PHP_EOL; } $output_kanji_conversion = Encoding::canConvertKanji(); // Do we need to convert charset? $output_charset_conversion = $asfile && Encoding::isSupported() && isset($charset) && $charset != 'utf-8'; // Use on the fly compression? $GLOBALS['onfly_compression'] = $GLOBALS['cfg']['CompressOnFly'] && $compression == 'gzip'; if ($GLOBALS['onfly_compression']) { $GLOBALS['memory_limit'] = Export::getMemoryLimit(); } // Generate filename and mime type if needed if ($asfile) { if (empty($remember_template)) { $remember_template = ''; } list($filename, $mime_type) = Export::getFilenameAndMimetype( $export_type, $remember_template, $export_plugin, $compression, $filename_template ); } else { $mime_type = ''; } // Open file on server if needed if ($save_on_server) { list($save_filename, $message, $file_handle) = Export::openFile( $filename, $quick_export ); // problem opening export file on server? if (! empty($message)) { Export::showPage($db, $table, $export_type); } } else { /** * Send headers depending on whether the user chose to download a dump file * or not */ if ($asfile) { // Download // (avoid rewriting data containing HTML with anchors and forms; // this was reported to happen under Plesk) ini_set('url_rewriter.tags', ''); $filename = Sanitize::sanitizeFilename($filename); Core::downloadHeader($filename, $mime_type); } else { // HTML if ($export_type == 'database') { $num_tables = count($tables); if ($num_tables == 0) { $message = PhpMyAdmin\Message::error( __('No tables found in database.') ); $active_page = 'db_export.php'; include 'db_export.php'; exit(); } } list($html, $back_button, $refreshButton) = Export::getHtmlForDisplayedExportHeader( $export_type, $db, $table ); echo $html; unset($html); } // end download } $relation = new Relation(); // Fake loop just to allow skip of remain of this code by break, I'd really // need exceptions here :-) do { // Re - initialize $dump_buffer = ''; $dump_buffer_len = 0; // Add possibly some comments to export if (! $export_plugin->exportHeader()) { break; } // Will we need relation & co. setup? $do_relation = isset($GLOBALS[$what . '_relation']); $do_comments = isset($GLOBALS[$what . '_include_comments']) || isset($GLOBALS[$what . '_comments']); $do_mime = isset($GLOBALS[$what . '_mime']); if ($do_relation || $do_comments || $do_mime) { $cfgRelation = $relation->getRelationsParam(); } // Include dates in export? $do_dates = isset($GLOBALS[$what . '_dates']); $whatStrucOrData = $GLOBALS[$what . '_structure_or_data']; /** * Builds the dump */ if ($export_type == 'server') { if (! isset($db_select)) { $db_select = ''; } Export::exportServer( $db_select, $whatStrucOrData, $export_plugin, $crlf, $err_url, $export_type, $do_relation, $do_comments, $do_mime, $do_dates, $aliases, $separate_files ); } elseif ($export_type == 'database') { if (!isset($table_structure) || !is_array($table_structure)) { $table_structure = array(); } if (!isset($table_data) || !is_array($table_data)) { $table_data = array(); } if (!empty($_POST['structure_or_data_forced'])) { $table_structure = $tables; $table_data = $tables; } if (isset($lock_tables)) { Export::lockTables($db, $tables, "READ"); try { Export::exportDatabase( $db, $tables, $whatStrucOrData, $table_structure, $table_data, $export_plugin, $crlf, $err_url, $export_type, $do_relation, $do_comments, $do_mime, $do_dates, $aliases, $separate_files ); } finally { Export::unlockTables(); } } else { Export::exportDatabase( $db, $tables, $whatStrucOrData, $table_structure, $table_data, $export_plugin, $crlf, $err_url, $export_type, $do_relation, $do_comments, $do_mime, $do_dates, $aliases, $separate_files ); } } else { // We export just one table // $allrows comes from the form when "Dump all rows" has been selected if (! isset($allrows)) { $allrows = ''; } if (! isset($limit_to)) { $limit_to = 0; } if (! isset($limit_from)) { $limit_from = 0; } if (isset($lock_tables)) { try { Export::lockTables($db, array($table), "READ"); Export::exportTable( $db, $table, $whatStrucOrData, $export_plugin, $crlf, $err_url, $export_type, $do_relation, $do_comments, $do_mime, $do_dates, $allrows, $limit_to, $limit_from, $sql_query, $aliases ); } finally { Export::unlockTables(); } } else { Export::exportTable( $db, $table, $whatStrucOrData, $export_plugin, $crlf, $err_url, $export_type, $do_relation, $do_comments, $do_mime, $do_dates, $allrows, $limit_to, $limit_from, $sql_query, $aliases ); } } if (! $export_plugin->exportFooter()) { break; } } while (false); // End of fake loop if ($save_on_server && ! empty($message)) { Export::showPage($db, $table, $export_type); } /** * Send the dump as a file... */ if (empty($asfile)) { echo Export::getHtmlForDisplayedExportFooter($back_button, $refreshButton); return; } // end if // Convert the charset if required. if ($output_charset_conversion) { $dump_buffer = Encoding::convertString( 'utf-8', $GLOBALS['charset'], $dump_buffer ); } // Compression needed? if ($compression) { if (! empty($separate_files)) { $dump_buffer = Export::compress( $dump_buffer_objects, $compression, $filename ); } else { $dump_buffer = Export::compress($dump_buffer, $compression, $filename); } } /* If we saved on server, we have to close file now */ if ($save_on_server) { $message = Export::closeFile( $file_handle, $dump_buffer, $save_filename ); Export::showPage($db, $table, $export_type); } else { echo $dump_buffer; } db/login/server_status.php000064400000001601151502156020011656 0ustar00addHTML('
    '); $serverStatusData = new Data(); $response->addHTML($serverStatusData->getMenuHtml()); if ($serverStatusData->dataLoaded) { $response->addHTML(Status::getHtml($serverStatusData)); } else { $response->addHTML( Message::error( __('Not enough privilege to view server status.') )->getDisplay() ); } $response->addHTML('
    '); exit; db/login/tbl_operations.php000064400000036126151502156020012003 0ustar00getLowerCaseNames() === '1'; if ($lowerCaseNames) { $GLOBALS['table'] = mb_strtolower( $GLOBALS['table'] ); } $pma_table = new Table($GLOBALS['table'], $GLOBALS['db']); /** * Load JavaScript files */ $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('tbl_operations.js'); /** * Runs common work */ require 'libraries/tbl_common.inc.php'; $url_query .= '&goto=tbl_operations.php&back=tbl_operations.php'; $url_params['goto'] = $url_params['back'] = 'tbl_operations.php'; /** * Gets relation settings */ $relation = new Relation(); $cfgRelation = $relation->getRelationsParam(); // reselect current db (needed in some cases probably due to // the calling of PhpMyAdmin\Relation) $GLOBALS['dbi']->selectDb($GLOBALS['db']); /** * Gets tables information */ $pma_table = $GLOBALS['dbi']->getTable( $GLOBALS['db'], $GLOBALS['table'] ); $reread_info = $pma_table->getStatusInfo(null, false); $GLOBALS['showtable'] = $pma_table->getStatusInfo(null, (isset($reread_info) && $reread_info ? true : false)); if ($pma_table->isView()) { $tbl_is_view = true; $tbl_storage_engine = __('View'); $show_comment = null; } else { $tbl_is_view = false; $tbl_storage_engine = $pma_table->getStorageEngine(); $show_comment = $pma_table->getComment(); } $tbl_collation = $pma_table->getCollation(); $table_info_num_rows = $pma_table->getNumRows(); $row_format = $pma_table->getRowFormat(); $auto_increment = $pma_table->getAutoIncrement(); $create_options = $pma_table->getCreateOptions(); // set initial value of these variables, based on the current table engine if ($pma_table->isEngine('ARIA')) { // the value for transactional can be implicit // (no create option found, in this case it means 1) // or explicit (option found with a value of 0 or 1) // ($create_options['transactional'] may have been set by Table class, // from the $create_options) $create_options['transactional'] = (isset($create_options['transactional']) && $create_options['transactional'] == '0') ? '0' : '1'; $create_options['page_checksum'] = (isset($create_options['page_checksum'])) ? $create_options['page_checksum'] : ''; } $pma_table = $GLOBALS['dbi']->getTable( $GLOBALS['db'], $GLOBALS['table'] ); $reread_info = false; $table_alters = array(); $operations = new Operations(); /** * If the table has to be moved to some other database */ if (isset($_POST['submit_move']) || isset($_POST['submit_copy'])) { //$_message = ''; $operations->moveOrCopyTable($db, $table); // This was ended in an Ajax call exit; } /** * If the table has to be maintained */ if (isset($_POST['table_maintenance'])) { include_once 'sql.php'; unset($result); } /** * Updates table comment, type and options if required */ if (isset($_POST['submitoptions'])) { $_message = ''; $warning_messages = array(); if (isset($_POST['new_name'])) { // lower_case_table_names=1 `DB` becomes `db` if ($lowerCaseNames) { $_POST['new_name'] = mb_strtolower( $_POST['new_name'] ); } // Get original names before rename operation $oldTable = $pma_table->getName(); $oldDb = $pma_table->getDbName(); if ($pma_table->rename($_POST['new_name'])) { if (isset($_POST['adjust_privileges']) && ! empty($_POST['adjust_privileges']) ) { $operations->adjustPrivilegesRenameOrMoveTable( $oldDb, $oldTable, $_POST['db'], $_POST['new_name'] ); } // Reselect the original DB $GLOBALS['db'] = $oldDb; $GLOBALS['dbi']->selectDb($oldDb); $_message .= $pma_table->getLastMessage(); $result = true; $GLOBALS['table'] = $pma_table->getName(); $reread_info = true; $reload = true; } else { $_message .= $pma_table->getLastError(); $result = false; } } if (! empty($_POST['new_tbl_storage_engine']) && mb_strtoupper($_POST['new_tbl_storage_engine']) !== $tbl_storage_engine ) { $new_tbl_storage_engine = mb_strtoupper($_POST['new_tbl_storage_engine']); if ($pma_table->isEngine('ARIA')) { $create_options['transactional'] = (isset($create_options['transactional']) && $create_options['transactional'] == '0') ? '0' : '1'; $create_options['page_checksum'] = (isset($create_options['page_checksum'])) ? $create_options['page_checksum'] : ''; } } else { $new_tbl_storage_engine = ''; } $row_format = (isset($create_options['row_format'])) ? $create_options['row_format'] : $pma_table->getRowFormat(); $table_alters = $operations->getTableAltersArray( $pma_table, $create_options['pack_keys'], (empty($create_options['checksum']) ? '0' : '1'), ((isset($create_options['page_checksum'])) ? $create_options['page_checksum'] : ''), (empty($create_options['delay_key_write']) ? '0' : '1'), $row_format, $new_tbl_storage_engine, ((isset($create_options['transactional']) && $create_options['transactional'] == '0') ? '0' : '1'), $tbl_collation ); if (count($table_alters) > 0) { $sql_query = 'ALTER TABLE ' . Util::backquote($GLOBALS['table']); $sql_query .= "\r\n" . implode("\r\n", $table_alters); $sql_query .= ';'; $result .= $GLOBALS['dbi']->query($sql_query) ? true : false; $reread_info = true; unset($table_alters); $warning_messages = $operations->getWarningMessagesArray(); } if (isset($_POST['tbl_collation']) && ! empty($_POST['tbl_collation']) && isset($_POST['change_all_collations']) && ! empty($_POST['change_all_collations']) ) { $operations->changeAllColumnsCollation( $GLOBALS['db'], $GLOBALS['table'], $_POST['tbl_collation'] ); } if (isset($_POST['tbl_collation']) && empty($_POST['tbl_collation'])) { $response = Response::getInstance(); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON( 'message', Message::error(__('No collation provided.')) ); exit; } } } /** * Reordering the table has been requested by the user */ if (isset($_POST['submitorderby']) && ! empty($_POST['order_field'])) { list($sql_query, $result) = $operations->getQueryAndResultForReorderingTable(); } // end if /** * A partition operation has been requested by the user */ if (isset($_POST['submit_partition']) && ! empty($_POST['partition_operation']) ) { list($sql_query, $result) = $operations->getQueryAndResultForPartition(); } // end if if ($reread_info) { // to avoid showing the old value (for example the AUTO_INCREMENT) after // a change, clear the cache $GLOBALS['dbi']->clearTableCache(); $GLOBALS['dbi']->selectDb($GLOBALS['db']); $GLOBALS['showtable'] = $pma_table->getStatusInfo(null, true); if ($pma_table->isView()) { $tbl_is_view = true; $tbl_storage_engine = __('View'); $show_comment = null; } else { $tbl_is_view = false; $tbl_storage_engine = $pma_table->getStorageEngine(); $show_comment = $pma_table->getComment(); } $tbl_collation = $pma_table->getCollation(); $table_info_num_rows = $pma_table->getNumRows(); $row_format = $pma_table->getRowFormat(); $auto_increment = $pma_table->getAutoIncrement(); $create_options = $pma_table->getCreateOptions(); } unset($reread_info); if (isset($result) && empty($message_to_show)) { if (empty($_message)) { if (empty($sql_query)) { $_message = Message::success(__('No change')); } else { $_message = $result ? Message::success() : Message::error(); } if ($response->isAjax()) { $response->setRequestStatus($_message->isSuccess()); $response->addJSON('message', $_message); if (!empty($sql_query)) { $response->addJSON( 'sql_query', Util::getMessage(null, $sql_query) ); } exit; } } else { $_message = $result ? Message::success($_message) : Message::error($_message); } if (! empty($warning_messages)) { $_message = new Message; $_message->addMessagesString($warning_messages); $_message->isError(true); if ($response->isAjax()) { $response->setRequestStatus(false); $response->addJSON('message', $_message); if (!empty($sql_query)) { $response->addJSON( 'sql_query', Util::getMessage(null, $sql_query) ); } exit; } unset($warning_messages); } if (empty($sql_query)) { $response->addHTML( $_message->getDisplay() ); } else { $response->addHTML( Util::getMessage($_message, $sql_query) ); } unset($_message); } $url_params['goto'] = $url_params['back'] = 'tbl_operations.php'; /** * Get columns names */ $columns = $GLOBALS['dbi']->getColumns($GLOBALS['db'], $GLOBALS['table']); /** * Displays the page */ /** * Order the table */ $hideOrderTable = false; // `ALTER TABLE ORDER BY` does not make sense for InnoDB tables that contain // a user-defined clustered index (PRIMARY KEY or NOT NULL UNIQUE index). // InnoDB always orders table rows according to such an index if one is present. if ($tbl_storage_engine == 'INNODB') { $indexes = Index::getFromTable($GLOBALS['table'], $GLOBALS['db']); foreach ($indexes as $name => $idx) { if ($name == 'PRIMARY') { $hideOrderTable = true; break; } elseif (! $idx->getNonUnique()) { $notNull = true; foreach ($idx->getColumns() as $column) { if ($column->getNull()) { $notNull = false; break; } } if ($notNull) { $hideOrderTable = true; break; } } } } if (! $hideOrderTable) { $response->addHTML($operations->getHtmlForOrderTheTable($columns)); } /** * Move table */ $response->addHTML($operations->getHtmlForMoveTable()); if (mb_strstr($show_comment, '; InnoDB free') === false) { if (mb_strstr($show_comment, 'InnoDB free') === false) { // only user entered comment $comment = $show_comment; } else { // here we have just InnoDB generated part $comment = ''; } } else { // remove InnoDB comment from end, just the minimal part (*? is non greedy) $comment = preg_replace('@; InnoDB free:.*?$@', '', $show_comment); } // PACK_KEYS: MyISAM or ISAM // DELAY_KEY_WRITE, CHECKSUM, : MyISAM only // AUTO_INCREMENT: MyISAM and InnoDB since 5.0.3, PBXT // Here should be version check for InnoDB, however it is supported // in >5.0.4, >4.1.12 and >4.0.11, so I decided not to // check for version $response->addHTML( $operations->getTableOptionDiv( $pma_table, $comment, $tbl_collation, $tbl_storage_engine, $create_options['pack_keys'], $auto_increment, (empty($create_options['delay_key_write']) ? '0' : '1'), ((isset($create_options['transactional']) && $create_options['transactional'] == '0') ? '0' : '1'), ((isset($create_options['page_checksum'])) ? $create_options['page_checksum'] : ''), (empty($create_options['checksum']) ? '0' : '1') ) ); /** * Copy table */ $response->addHTML($operations->getHtmlForCopytable()); /** * Table maintenance */ $response->addHTML( $operations->getHtmlForTableMaintenance($pma_table, $url_params) ); if (! (isset($db_is_system_schema) && $db_is_system_schema)) { $truncate_table_url_params = array(); $drop_table_url_params = array(); if (! $tbl_is_view && ! (isset($db_is_system_schema) && $db_is_system_schema) ) { $this_sql_query = 'TRUNCATE TABLE ' . Util::backquote($GLOBALS['table']); $truncate_table_url_params = array_merge( $url_params, array( 'sql_query' => $this_sql_query, 'goto' => 'tbl_structure.php', 'reload' => '1', 'message_to_show' => sprintf( __('Table %s has been emptied.'), htmlspecialchars($table) ), ) ); } if (! (isset($db_is_system_schema) && $db_is_system_schema)) { $this_sql_query = 'DROP TABLE ' . Util::backquote($GLOBALS['table']); $drop_table_url_params = array_merge( $url_params, array( 'sql_query' => $this_sql_query, 'goto' => 'db_operations.php', 'reload' => '1', 'purge' => '1', 'message_to_show' => sprintf( ($tbl_is_view ? __('View %s has been dropped.') : __('Table %s has been dropped.') ), htmlspecialchars($table) ), // table name is needed to avoid running // PhpMyAdmin\RelationCleanup::database() on the whole db later 'table' => $GLOBALS['table'], ) ); } $response->addHTML( $operations->getHtmlForDeleteDataOrTable( $truncate_table_url_params, $drop_table_url_params ) ); } if (Partition::havePartitioning()) { $partition_names = Partition::getPartitionNames($db, $table); // show the Partition maintenance section only if we detect a partition if (! is_null($partition_names[0])) { $response->addHTML( $operations->getHtmlForPartitionMaintenance($partition_names, $url_params) ); } // end if } // end if unset($partition_names); // Referential integrity check if ($cfgRelation['relwork']) { $GLOBALS['dbi']->selectDb($GLOBALS['db']); $foreign = $relation->getForeigners($GLOBALS['db'], $GLOBALS['table'], '', 'internal'); if (! empty($foreign)) { $response->addHTML( $operations->getHtmlForReferentialIntegrityCheck($foreign, $url_params) ); } // end if ($foreign) } // end if (!empty($cfg['Server']['relation'])) db/login/tmp/twig/36/360a7a01227c90acf0a097d75488841f91dc2939cebca8ee28845b8abccb62ee.php000064400000005465151502156020022010 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    env, PhpMyAdmin\Core::linkURL("https://www.phpmyadmin.net/"), "html", null, true); echo "\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"logo\"> env, $this->getAttribute(($context["theme"] ?? null), "getImgPath", [0 => "logo_right.png", 1 => "pma_logo.png"], "method"), "html", null, true); echo "\" id=\"imLogo\" name=\"imLogo\" alt=\"phpMyAdmin\" border=\"0\" />

    "; // line 5 echo sprintf(_gettext("Welcome to %s"), "phpMyAdmin"); echo "

    "; // line 12 echo call_user_func_array($this->env->getFunction('Message_error')->getCallable(), [_gettext("There is mismatch between HTTPS indicated on the server and client. This can lead to non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly.")]); echo "
    "; } public function getTemplateName() { return "login/header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 12, 48 => 8, 42 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "login/header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/login/header.twig"); } } db/login/tmp/twig/5f/5f53736fb6afd688a82876a48e3f6e3885f9742b7e5f95e5c633c3efc797ced5.php000064400000005410151502156020022022 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["html_field_name"] ?? null), "html", null, true); echo "\""; // line 2 if ((isset($context["html_field_id"]) || array_key_exists("html_field_id", $context))) { echo " id=\""; echo twig_escape_filter($this->env, ($context["html_field_id"] ?? null), "html", null, true); echo "\""; } // line 3 if (((isset($context["checked"]) || array_key_exists("checked", $context)) && ($context["checked"] ?? null))) { echo " checked=\"checked\""; } // line 4 if (((isset($context["onclick"]) || array_key_exists("onclick", $context)) && ($context["onclick"] ?? null))) { echo " class=\"autosubmit\""; } echo " />env, ($context["html_field_id"] ?? null), "html", null, true); echo "\""; } // line 6 echo ">"; echo twig_escape_filter($this->env, ($context["label"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 6, 49 => 5, 44 => 4, 40 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/checkbox.twig"); } } db/login/tmp/twig/df/dfeedc315a3a8e771ad981a8aeec20748074abd5c21fe81149d9f6ab1e3416f3.php000064400000006565151502156020022305 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    env, ($context["parent_div_classes"] ?? null), "html", null, true); echo "\"> "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_array"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content"]) { // line 3 echo " "; if ((isset($context["content"]) || array_key_exists("content", $context))) { // line 4 echo " env, $this->getAttribute($context["content"], 0, [], "array"), "html", null, true); echo "\"> "; // line 5 echo twig_escape_filter($this->env, $this->getAttribute($context["content"], 1, [], "array"), "html", null, true); echo " "; // line 6 if ($this->getAttribute($context["content"], "extraSpan", [], "array", true, true)) { // line 7 echo " : "; echo twig_escape_filter($this->env, $this->getAttribute($context["content"], "extraSpan", [], "array"), "html", null, true); echo " "; } // line 9 echo " "; } // line 11 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 12 echo "
    "; } public function getTemplateName() { return "console/query_action.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 69 => 12, 63 => 11, 59 => 9, 53 => 7, 51 => 6, 47 => 5, 42 => 4, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/query_action.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/query_action.twig"); } } db/login/tmp/twig/ad/ad22a164dbc437a50e569bf36029ff7096009c662da03e754b5dcce0a22ed880.php000064400000012276151502156020021760 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

    "; // line 2 echo _gettext("Output:"); echo "

    • "; // line 11 if ((($context["export_type"] ?? null) != "server")) { // line 12 echo "
    • "; } // line 21 echo "
      • "; // line 29 if ( !twig_test_empty(($context["save_dir"] ?? null))) { // line 30 echo " "; echo ($context["options_output_save_dir"] ?? null); echo " "; } // line 32 echo " "; // line 33 echo ($context["options_output_format"] ?? null); echo " "; // line 35 if (($context["is_encoding_supported"] ?? null)) { // line 36 echo " "; echo ($context["options_output_charset"] ?? null); echo " "; } // line 38 echo " "; // line 39 echo ($context["options_output_compression"] ?? null); echo " "; // line 41 if (((($context["export_type"] ?? null) == "server") || (($context["export_type"] ?? null) == "database"))) { // line 42 echo " "; echo ($context["options_output_separate_files"] ?? null); echo " "; } // line 44 echo "
    • "; // line 47 echo ($context["options_output_radio"] ?? null); echo "
    "); // line 53 echo "
    "; } public function getTemplateName() { return "display/export/options_output.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 137 => 53, 135 => 51, 129 => 47, 124 => 44, 118 => 42, 116 => 41, 111 => 39, 108 => 38, 102 => 36, 100 => 35, 95 => 33, 92 => 32, 86 => 30, 84 => 29, 80 => 27, 78 => 26, 73 => 24, 69 => 21, 62 => 17, 57 => 15, 53 => 12, 51 => 11, 46 => 8, 44 => 7, 39 => 5, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output.twig"); } } db/login/tmp/twig/97/9734627c3841f4edcd6c2b6f193947fc0a7a9a69dd1955f703f4f691af6b45e3.php000064400000002651151502156020021627 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; } public function getTemplateName() { return "login/footer.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "login/footer.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/login/footer.twig"); } } db/login/tmp/twig/9b/9bead0e9b5818632bcfbae670dbf824b9ea42950a4c47768f7d9adb0f0027816.php000064400000004774151502156020022102 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
  • env, ($context["filename_template"] ?? null), "html", null, true); echo "\">
  • "; } public function getTemplateName() { return "display/export/options_output_format.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 53 => 12, 51 => 11, 46 => 9, 42 => 7, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_format.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_format.twig"); } } db/login/tmp/twig/9b/9b951e761486c8afec32fdccf199b64f09788d963577615d55b2fc265a86e291.php000064400000004035151502156020021562 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["group"] ?? null), "html", null, true); echo "\"> env, ($context["colspan"] ?? null), "html", null, true); echo "\"> "; // line 3 echo twig_escape_filter($this->env, ($context["header_text"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "config/form_display/group_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/group_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/group_header.twig"); } } db/login/tmp/twig/98/98e7938683ff65f0cbfa3c6a58e7b985a6ff20dae3423c4c5cc3aebb88e0a84c.php000064400000003541151502156020022256 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 echo "
    "; // line 6 echo "
    "; // line 8 echo "
    "; // line 11 echo "
    "; // line 13 echo " "; } public function getTemplateName() { return "database/search/result_divs.twig"; } public function getDebugInfo() { return array ( 45 => 13, 42 => 11, 38 => 8, 35 => 6, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/search/result_divs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/search/result_divs.twig"); } } db/login/tmp/twig/e6/e670a926e9247f1b088b9b380f0cc902aff84339789c9dbdbbdf25eec80f460a.php000064400000055467151502156020022123 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["curr"] ?? null), "html", null, true); echo "\""; echo ((($context["table_is_view"] ?? null)) ? (" class=\"is_view\"") : ("")); echo " data-filter-row=\""; echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array")), "html", null, true); echo "\"> env, ($context["input_class"] ?? null), "html", null, true); echo "\" value=\""; // line 6 echo twig_escape_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "html", null, true); echo "\" id=\"checkbox_tbl_"; // line 7 echo twig_escape_filter($this->env, ($context["curr"] ?? null), "html", null, true); echo "\" /> "; // line 10 echo ($context["browse_table_label"] ?? null); echo " "; // line 11 echo ($context["tracking_icon"] ?? null); echo " "; // line 13 if (($context["server_slave_status"] ?? null)) { // line 14 echo " "; // line 15 echo ((($context["ignored"] ?? null)) ? (PhpMyAdmin\Util::getImage("s_cancel", _gettext("Not replicated"))) : ("")); echo " "; // line 16 echo ((($context["do"] ?? null)) ? (PhpMyAdmin\Util::getImage("s_success", _gettext("Replicated"))) : ("")); echo " "; } // line 19 echo " "; // line 21 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 22 echo " "; // line 24 echo " "; $context["fav_params"] = ["db" => // line 25 ($context["db"] ?? null), "ajax_request" => true, "favorite_table" => $this->getAttribute( // line 27 ($context["current_table"] ?? null), "TABLE_NAME", [], "array"), ((( // line 28 ($context["already_favorite"] ?? null)) ? ("remove") : ("add")) . "_favorite") => true]; // line 30 echo " "; $this->loadTemplate("database/structure/favorite_anchor.twig", "database/structure/structure_table_row.twig", 30)->display(twig_to_array(["table_name_hash" => md5($this->getAttribute( // line 31 ($context["current_table"] ?? null), "TABLE_NAME", [], "array")), "db_table_name_hash" => md5((( // line 32 ($context["db"] ?? null) . ".") . $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"))), "fav_params" => // line 33 ($context["fav_params"] ?? null), "already_favorite" => // line 34 ($context["already_favorite"] ?? null), "titles" => // line 35 ($context["titles"] ?? null)])); // line 37 echo " "; } // line 39 echo " "; // line 41 echo ($context["browse_table"] ?? null); echo " "; // line 45 echo $this->getAttribute(($context["titles"] ?? null), "Structure", [], "array"); echo " "; // line 49 echo ($context["search_table"] ?? null); echo " "; // line 52 if ( !($context["db_is_system_schema"] ?? null)) { // line 53 echo " "; echo $this->getAttribute(($context["titles"] ?? null), "Insert", [], "array"); echo " "; // line 56 echo ($context["empty_table"] ?? null); echo " getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array") == null))) ? (" view") : ("")); echo "\" href=\"sql.php\" data-post=\""; // line 60 echo ($context["tbl_url_query"] ?? null); echo "&reload=1&purge=1&sql_query="; // line 61 echo twig_escape_filter($this->env, twig_urlencode_filter(($context["drop_query"] ?? null)), "html", null, true); echo "&message_to_show="; echo twig_escape_filter($this->env, twig_urlencode_filter(($context["drop_message"] ?? null)), "html", null, true); echo "\"> "; // line 62 echo $this->getAttribute(($context["titles"] ?? null), "Drop", [], "array"); echo " "; } // line 66 echo " "; // line 67 if (($this->getAttribute(($context["current_table"] ?? null), "TABLE_ROWS", [], "array", true, true) && (($this->getAttribute( // line 68 ($context["current_table"] ?? null), "ENGINE", [], "array") != null) || ($context["table_is_view"] ?? null)))) { // line 69 echo " "; // line 70 echo " "; $context["row_count"] = PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["current_table"] ?? null), "TABLE_ROWS", [], "array"), 0); // line 71 echo " "; // line 74 echo " env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "html", null, true); echo "\"> "; // line 76 if (($context["approx_rows"] ?? null)) { // line 77 echo " true, "db" => // line 79 ($context["db"] ?? null), "table" => $this->getAttribute( // line 80 ($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "real_row_count" => "true"]); // line 82 echo "\" class=\"ajax real_row_count\"> ~"; // line 84 echo twig_escape_filter($this->env, ($context["row_count"] ?? null), "html", null, true); echo " "; } else { // line 88 echo " "; echo twig_escape_filter($this->env, ($context["row_count"] ?? null), "html", null, true); echo " "; } // line 90 echo " "; echo ($context["show_superscript"] ?? null); echo " "; // line 93 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 94 echo " "; // line 95 if ( !twig_test_empty($this->getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array"))) { // line 96 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array"), "html", null, true); echo " "; } elseif ( // line 97 ($context["table_is_view"] ?? null)) { // line 98 echo " "; echo _gettext("View"); // line 99 echo " "; } // line 100 echo " "; // line 101 if ((twig_length_filter($this->env, ($context["collation"] ?? null)) > 0)) { // line 102 echo " "; // line 103 echo ($context["collation"] ?? null); echo " "; } // line 106 echo " "; } // line 107 echo " "; // line 108 if (($context["is_show_stats"] ?? null)) { // line 109 echo " "; // line 111 echo twig_escape_filter($this->env, ($context["formatted_size"] ?? null), "html", null, true); echo " "; // line 112 echo twig_escape_filter($this->env, ($context["unit"] ?? null), "html", null, true); echo " "; // line 116 echo ($context["overhead"] ?? null); echo " "; } // line 119 echo " "; // line 120 if ( !(($context["show_charset"] ?? null) > 1)) { // line 121 echo " "; if ((twig_length_filter($this->env, ($context["charset"] ?? null)) > 0)) { // line 122 echo " "; // line 123 echo ($context["charset"] ?? null); echo " "; } // line 126 echo " "; } // line 127 echo " "; // line 128 if (($context["show_comment"] ?? null)) { // line 129 echo " "; $context["comment"] = $this->getAttribute(($context["current_table"] ?? null), "Comment", [], "array"); // line 130 echo " "; // line 131 if ((twig_length_filter($this->env, ($context["comment"] ?? null)) > ($context["limit_chars"] ?? null))) { // line 132 echo " env, ($context["comment"] ?? null), "html", null, true); echo "\"> "; // line 133 echo twig_escape_filter($this->env, twig_slice($this->env, ($context["comment"] ?? null), 0, ($context["limit_chars"] ?? null)), "html", null, true); echo " ... "; } else { // line 137 echo " "; echo twig_escape_filter($this->env, ($context["comment"] ?? null), "html", null, true); echo " "; } // line 139 echo " "; } // line 141 echo " "; // line 142 if (($context["show_creation"] ?? null)) { // line 143 echo " "; // line 144 ((($context["create_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["create_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 147 echo " "; // line 148 if (($context["show_last_update"] ?? null)) { // line 149 echo " "; // line 150 ((($context["update_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["update_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 153 echo " "; // line 154 if (($context["show_last_check"] ?? null)) { // line 155 echo " "; // line 156 ((($context["check_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["check_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 159 echo " "; } elseif ( // line 160 ($context["table_is_view"] ?? null)) { // line 161 echo " - "; // line 163 echo _gettext("View"); // line 164 echo " --- "; // line 166 if (($context["is_show_stats"] ?? null)) { // line 167 echo " - - "; } // line 170 echo " "; if (($context["show_charset"] ?? null)) { // line 171 echo " "; } // line 173 echo " "; if (($context["show_comment"] ?? null)) { // line 174 echo " "; } // line 176 echo " "; if (($context["show_creation"] ?? null)) { // line 177 echo " - "; } // line 179 echo " "; if (($context["show_last_update"] ?? null)) { // line 180 echo " - "; } // line 182 echo " "; if (($context["show_last_check"] ?? null)) { // line 183 echo " - "; } // line 185 echo " "; } else { // line 187 echo " "; $context["count"] = 0; // line 188 echo " "; if (($context["properties_num_columns"] ?? null)) { // line 189 echo " "; $context["count"] = (($context["count"] ?? null) + 2); // line 190 echo " "; } // line 191 echo " "; if (($context["is_show_stats"] ?? null)) { // line 192 echo " "; $context["count"] = (($context["count"] ?? null) + 2); // line 193 echo " "; } // line 194 echo " "; if (($context["show_charset"] ?? null)) { // line 195 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 196 echo " "; } // line 197 echo " "; if (($context["show_comment"] ?? null)) { // line 198 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 199 echo " "; } // line 200 echo " "; if (($context["show_creation"] ?? null)) { // line 201 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 202 echo " "; } // line 203 echo " "; if (($context["show_last_update"] ?? null)) { // line 204 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 205 echo " "; } // line 206 echo " "; if (($context["show_last_check"] ?? null)) { // line 207 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 208 echo " "; } // line 209 echo " "; // line 210 if (($context["db_is_system_schema"] ?? null)) { // line 211 echo " "; $context["action_colspan"] = 3; // line 212 echo " "; } else { // line 213 echo " "; $context["action_colspan"] = 6; // line 214 echo " "; } // line 215 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 216 echo " "; $context["action_colspan"] = (($context["action_colspan"] ?? null) + 1); // line 217 echo " "; } // line 218 echo " "; // line 219 $context["colspan_for_structure"] = (($context["action_colspan"] ?? null) + 3); // line 220 echo " "; // line 222 echo _gettext("in use"); // line 223 echo " "; } // line 225 echo " "; } public function getTemplateName() { return "database/structure/structure_table_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 556 => 225, 552 => 223, 550 => 222, 544 => 220, 542 => 219, 539 => 218, 536 => 217, 533 => 216, 530 => 215, 527 => 214, 524 => 213, 521 => 212, 518 => 211, 516 => 210, 513 => 209, 510 => 208, 507 => 207, 504 => 206, 501 => 205, 498 => 204, 495 => 203, 492 => 202, 489 => 201, 486 => 200, 483 => 199, 480 => 198, 477 => 197, 474 => 196, 471 => 195, 468 => 194, 465 => 193, 462 => 192, 459 => 191, 456 => 190, 453 => 189, 450 => 188, 447 => 187, 443 => 185, 439 => 183, 436 => 182, 432 => 180, 429 => 179, 425 => 177, 422 => 176, 418 => 174, 415 => 173, 411 => 171, 408 => 170, 403 => 167, 401 => 166, 397 => 164, 395 => 163, 391 => 161, 389 => 160, 386 => 159, 380 => 156, 377 => 155, 375 => 154, 372 => 153, 366 => 150, 363 => 149, 361 => 148, 358 => 147, 352 => 144, 349 => 143, 347 => 142, 344 => 141, 340 => 139, 334 => 137, 327 => 133, 322 => 132, 320 => 131, 317 => 130, 314 => 129, 312 => 128, 309 => 127, 306 => 126, 300 => 123, 297 => 122, 294 => 121, 292 => 120, 289 => 119, 283 => 116, 276 => 112, 272 => 111, 268 => 110, 265 => 109, 263 => 108, 260 => 107, 257 => 106, 251 => 103, 248 => 102, 246 => 101, 243 => 100, 240 => 99, 237 => 98, 235 => 97, 230 => 96, 228 => 95, 225 => 94, 223 => 93, 216 => 90, 210 => 88, 203 => 84, 199 => 82, 197 => 80, 196 => 79, 194 => 77, 192 => 76, 188 => 75, 185 => 74, 182 => 71, 179 => 70, 177 => 69, 175 => 68, 174 => 67, 171 => 66, 164 => 62, 158 => 61, 155 => 60, 151 => 59, 146 => 56, 139 => 54, 136 => 53, 134 => 52, 128 => 49, 121 => 45, 117 => 44, 111 => 41, 107 => 39, 103 => 37, 101 => 35, 100 => 34, 99 => 33, 98 => 32, 97 => 31, 95 => 30, 93 => 28, 92 => 27, 91 => 25, 89 => 24, 86 => 22, 83 => 21, 80 => 19, 74 => 16, 70 => 15, 67 => 14, 65 => 13, 60 => 11, 56 => 10, 50 => 7, 46 => 6, 42 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/structure_table_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/structure_table_row.twig"); } } db/login/tmp/twig/1a/1a259dd9f7b32008208d23c340be47e14af8bc884b67086c1f31d2f549b0e5ce.php000064400000004447151502156020021627 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 if (($context["geom_column_flag"] ?? null)) { // line 4 echo " "; echo _gettext("Function"); echo " "; } // line 6 echo " "; echo _gettext("Column"); echo " "; // line 7 echo _gettext("Type"); echo " "; // line 8 echo _gettext("Collation"); echo " "; // line 9 echo _gettext("Operator"); echo " "; // line 10 echo _gettext("Value"); echo " "; } public function getTemplateName() { return "table/search/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 59 => 10, 55 => 9, 51 => 8, 47 => 7, 42 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/table_header.twig"); } } db/login/tmp/twig/1a/1abeacb97bb376f92e09cf899b9c97dde7a0cd13a8212e7976a22e16f5f76e14.php000064400000002651151502156020022161 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "login/footer.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "login/footer.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/login/footer.twig"); } } db/login/tmp/twig/e1/e16bc846aa0cbfb2b4cfca42946a05dd8571064990b8100a62b95c90508b249b.php000064400000014353151502156020021612 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context["title"] = ""; // line 2 if ($this->getAttribute(($context["column_meta"] ?? null), "column_status", [], "array", true, true)) { // line 3 echo " "; if ($this->getAttribute($this->getAttribute(($context["column_meta"] ?? null), "column_status", [], "array"), "isReferenced", [], "array")) { // line 4 echo " "; $context["title"] = (($context["title"] ?? null) . sprintf(_gettext("Referenced by %s."), twig_join_filter($this->getAttribute($this->getAttribute( // line 5 ($context["column_meta"] ?? null), "column_status", [], "array"), "references", [], "array"), ","))); // line 7 echo " "; } // line 8 echo " "; if ($this->getAttribute($this->getAttribute(($context["column_meta"] ?? null), "column_status", [], "array"), "isForeignKey", [], "array")) { // line 9 echo " "; if ( !twig_test_empty(($context["title"] ?? null))) { // line 10 echo " "; $context["title"] = (($context["title"] ?? null) . " "); // line 11 echo " "; } // line 12 echo " "; $context["title"] = (($context["title"] ?? null) . _gettext("Is a foreign key.")); // line 13 echo " "; } } // line 15 if (twig_test_empty(($context["title"] ?? null))) { // line 16 echo " "; $context["title"] = _gettext("Column"); } // line 18 echo " env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\" "; // line 20 if (($this->getAttribute(($context["column_meta"] ?? null), "column_status", [], "array", true, true) && !$this->getAttribute($this->getAttribute( // line 21 ($context["column_meta"] ?? null), "column_status", [], "array"), "isEditable", [], "array"))) { // line 22 echo " disabled=\"disabled\" "; } // line 24 echo " type=\"text\" name=\"field_name["; // line 25 echo twig_escape_filter($this->env, ($context["column_number"] ?? null), "html", null, true); echo "]\" maxlength=\"64\" class=\"textfield\" title=\""; // line 28 echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true); echo "\" size=\"10\" value=\""; // line 30 (($this->getAttribute(($context["column_meta"] ?? null), "Field", [], "array", true, true)) ? (print (twig_escape_filter($this->env, $this->getAttribute(($context["column_meta"] ?? null), "Field", [], "array"), "html", null, true))) : (print (""))); echo "\" /> "; // line 32 if (($this->getAttribute(($context["cfg_relation"] ?? null), "centralcolumnswork", [], "array") && !($this->getAttribute( // line 33 ($context["column_meta"] ?? null), "column_status", [], "array", true, true) && !$this->getAttribute($this->getAttribute( // line 34 ($context["column_meta"] ?? null), "column_status", [], "array"), "isEditable", [], "array")))) { // line 35 echo "

    env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\"> env, ($context["max_rows"] ?? null), "html", null, true); echo "\" href=\"#\" class=\"central_columns_dialog\"> "; // line 40 echo _gettext("Pick from Central Columns"); // line 41 echo "

    "; } } public function getTemplateName() { return "columns_definitions/column_name.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 126 => 41, 124 => 40, 118 => 37, 112 => 36, 109 => 35, 107 => 34, 106 => 33, 105 => 32, 100 => 30, 95 => 28, 89 => 25, 86 => 24, 82 => 22, 80 => 21, 79 => 20, 73 => 19, 70 => 18, 66 => 16, 64 => 15, 60 => 13, 57 => 12, 54 => 11, 50 => 10, 47 => 9, 44 => 8, 41 => 7, 39 => 5, 37 => 4, 34 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_name.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_name.twig"); } } db/login/tmp/twig/e1/e1ee2666bacea461bf43a526292a4a88f401350dac6b78022d59b90d0d4f035f.php000064400000007454151502156020021675 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 2 echo PhpMyAdmin\Util::getListNavigator( // line 3 ($context["database_count"] ?? null), // line 4 ($context["pos"] ?? null), // line 5 ($context["url_params"] ?? null), "server_databases.php", "frame_content", // line 8 ($context["max_db_list"] ?? null)); // line 9 echo "
    "; // line 11 echo PhpMyAdmin\Url::getHiddenInputs(($context["url_params"] ?? null)); echo " "; // line 12 $context["url_params"] = twig_array_merge(($context["url_params"] ?? null), ["sort_by" => "SCHEMA_NAME", "sort_order" => (((( // line 14 ($context["sort_by"] ?? null) == "SCHEMA_NAME") && (($context["sort_order"] ?? null) == "asc"))) ? ("desc") : ("asc"))]); // line 16 echo "
    "; // line 18 $this->loadTemplate("server/databases/table_header.twig", "server/databases/databases_header.twig", 18)->display(twig_to_array(["url_params" => // line 19 ($context["url_params"] ?? null), "sort_by" => // line 20 ($context["sort_by"] ?? null), "sort_order" => // line 21 ($context["sort_order"] ?? null), "sort_order_text" => ((( // line 22 ($context["sort_order"] ?? null) == "asc")) ? (_gettext("Ascending")) : (_gettext("Descending"))), "column_order" => // line 23 ($context["column_order"] ?? null), "first_database" => // line 24 ($context["first_database"] ?? null), "master_replication" => // line 25 ($context["master_replication"] ?? null), "slave_replication" => // line 26 ($context["slave_replication"] ?? null), "is_superuser" => // line 27 ($context["is_superuser"] ?? null), "allow_user_drop_database" => // line 28 ($context["allow_user_drop_database"] ?? null)])); } public function getTemplateName() { return "server/databases/databases_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 64 => 28, 63 => 27, 62 => 26, 61 => 25, 60 => 24, 59 => 23, 58 => 22, 57 => 21, 56 => 20, 55 => 19, 54 => 18, 50 => 16, 48 => 14, 47 => 12, 43 => 11, 39 => 9, 37 => 8, 36 => 5, 35 => 4, 34 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/databases/databases_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/databases/databases_header.twig"); } } db/login/tmp/twig/dc/dcb403da5b7e231d0366b527fa02025af56f84529086353ef7393d8ba84abcfb.php000064400000026514151502156020021766 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 10 if (($context["server_slave_status"] ?? null)) { // line 11 echo " "; } // line 13 echo " "; $context["sum_colspan"] = ((($context["db_is_system_schema"] ?? null)) ? (4) : (7)); // line 14 echo " "; if ((($context["num_favorite_tables"] ?? null) == 0)) { // line 15 echo " "; $context["sum_colspan"] = (($context["sum_colspan"] ?? null) - 1); // line 16 echo " "; } // line 17 echo " "; // line 18 $context["row_count_sum"] = PhpMyAdmin\Util::formatNumber(($context["sum_entries"] ?? null), 0); // line 19 echo " "; // line 20 echo " "; $context["row_sum_url"] = []; // line 21 echo " "; if ((isset($context["approx_rows"]) || array_key_exists("approx_rows", $context))) { // line 22 echo " "; $context["row_sum_url"] = ["ajax_request" => true, "db" => // line 24 ($context["db"] ?? null), "real_row_count" => "true", "real_row_count_all" => "true"]; // line 28 echo " "; } // line 29 echo " "; if (($context["approx_rows"] ?? null)) { // line 30 echo " "; ob_start(function () { return ''; }); // line 31 echo "~"; // line 33 echo twig_escape_filter($this->env, ($context["row_count_sum"] ?? null), "html", null, true); // line 34 echo ""; $context["cell_text"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 36 echo " "; } else { // line 37 echo " "; $context["cell_text"] = ($context["row_count_sum"] ?? null); // line 38 echo " "; } // line 39 echo " "; // line 40 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 41 echo " "; // line 42 echo " "; $context["default_engine"] = $this->getAttribute(($context["dbi"] ?? null), "fetchValue", [0 => "SELECT @@storage_engine;"], "method"); // line 43 echo " "; if (twig_test_empty(($context["default_engine"] ?? null))) { // line 44 echo " "; // line 45 echo " "; $context["default_engine"] = $this->getAttribute(($context["dbi"] ?? null), "fetchValue", [0 => "SELECT @@default_storage_engine;"], "method"); // line 46 echo " "; } // line 47 echo " "; } // line 60 echo " "; // line 61 if (($context["is_show_stats"] ?? null)) { // line 62 echo " "; $context["sum"] = PhpMyAdmin\Util::formatByteDown(($context["sum_size"] ?? null), 3, 1); // line 63 echo " "; $context["sum_formatted"] = $this->getAttribute(($context["sum"] ?? null), 0, [], "array"); // line 64 echo " "; $context["sum_unit"] = $this->getAttribute(($context["sum"] ?? null), 1, [], "array"); // line 65 echo " "; // line 67 $context["overhead"] = PhpMyAdmin\Util::formatByteDown(($context["overhead_size"] ?? null), 3, 1); // line 68 echo " "; $context["overhead_formatted"] = $this->getAttribute(($context["overhead"] ?? null), 0, [], "array"); // line 69 echo " "; $context["overhead_unit"] = $this->getAttribute(($context["overhead"] ?? null), 1, [], "array"); // line 70 echo " "; } // line 72 echo " "; // line 73 if (($context["show_charset"] ?? null)) { // line 74 echo " "; } // line 76 echo " "; if (($context["show_comment"] ?? null)) { // line 77 echo " "; } // line 79 echo " "; if (($context["show_creation"] ?? null)) { // line 80 echo " "; } // line 84 echo " "; if (($context["show_last_update"] ?? null)) { // line 85 echo " "; } // line 89 echo " "; if (($context["show_last_check"] ?? null)) { // line 90 echo " "; } // line 94 echo " "; } public function getTemplateName() { return "database/structure/body_for_table_summary.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 264 => 94, 258 => 91, 255 => 90, 252 => 89, 246 => 86, 243 => 85, 240 => 84, 234 => 81, 231 => 80, 228 => 79, 224 => 77, 221 => 76, 215 => 74, 213 => 73, 210 => 72, 202 => 70, 199 => 69, 196 => 68, 194 => 67, 186 => 65, 183 => 64, 180 => 63, 177 => 62, 175 => 61, 172 => 60, 168 => 58, 162 => 55, 155 => 54, 153 => 53, 146 => 49, 142 => 48, 139 => 47, 136 => 46, 133 => 45, 131 => 44, 128 => 43, 125 => 42, 123 => 41, 121 => 40, 116 => 39, 113 => 38, 110 => 37, 107 => 36, 104 => 34, 102 => 33, 99 => 32, 97 => 31, 94 => 30, 91 => 29, 88 => 28, 86 => 24, 84 => 22, 81 => 21, 78 => 20, 76 => 19, 74 => 18, 67 => 17, 64 => 16, 61 => 15, 58 => 14, 55 => 13, 49 => 11, 47 => 10, 41 => 8, 38 => 6, 36 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/body_for_table_summary.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/body_for_table_summary.twig"); } } db/login/tmp/twig/0b/0be9f02299e352b95ae2948f4938e0e62a9114301f08d65200c67d9f3e0b16c7.php000064400000006241151502156020021335 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
  • "; } public function getTemplateName() { return "display/export/options_output_charset.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 65 => 15, 58 => 13, 56 => 12, 54 => 11, 51 => 10, 49 => 9, 48 => 8, 44 => 7, 40 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_charset.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_charset.twig"); } } db/login/tmp/twig/0b/0bfb3ed0b5d702e79d2e352dbe5d3253b0dc2d47b83109d3c95764d004a29974.php000064400000004363151502156020021616 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["sub_tabs"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["tab"]) { // line 3 echo " "; echo PhpMyAdmin\Util::getHtmlTab($context["tab"], ($context["url_params"] ?? null)); echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['tab'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 5 echo "
    "; } public function getTemplateName() { return "secondary_tabs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 46 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "secondary_tabs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/secondary_tabs.twig"); } } db/login/tmp/twig/0b/0b67065b098a35d4f259d861e36706162f32786487f103a8ef18450e791807f6.php000064400000005012151502156020020776 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["column_number"] ?? null), "html", null, true); echo "]\" id=\"field_"; // line 2 echo twig_escape_filter($this->env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\" "; // line 3 if ((( !twig_test_empty($this->getAttribute(($context["column_meta"] ?? null), "Null", [], "array")) && ($this->getAttribute(($context["column_meta"] ?? null), "Null", [], "array") != "NO")) && ($this->getAttribute(($context["column_meta"] ?? null), "Null", [], "array") != "NOT NULL"))) { // line 4 echo "checked=\"checked\""; } // line 6 echo " type=\"checkbox\" value=\"YES\" class=\"allow_null\" /> "; } public function getTemplateName() { return "columns_definitions/column_null.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 46 => 6, 43 => 4, 41 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_null.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_null.twig"); } } db/login/tmp/twig/db/dbe8d9cb3e922ff9f6b0ee28da86454965041658d7e294d48d5fa8a646522b29.php000064400000005525151502156020021767 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 4 if (PhpMyAdmin\Util::showIcons("ActionLinksMode")) { // line 5 echo PhpMyAdmin\Util::getImage("b_table_add"); } // line 7 echo " "; echo _gettext("Create table"); // line 8 echo " "; // line 9 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
    "; // line 11 echo _gettext("Name"); echo ":
    "; // line 15 echo _gettext("Number of columns"); echo ":
    "; } public function getTemplateName() { return "database/create_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 67 => 21, 58 => 15, 51 => 11, 46 => 9, 43 => 8, 40 => 7, 37 => 5, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/create_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/create_table.twig"); } } db/login/tmp/twig/db/dbe5bcc412efde0f1f60b79cac99c63a3b523e124f6a0fa4fb06edb442aa39b7.php000064400000006775151502156020022557 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["export_type"] ?? null) == "server")) { // line 2 echo " "; echo PhpMyAdmin\Url::getHiddenInputs("", "", 1); echo " "; } elseif (( // line 3 ($context["export_type"] ?? null) == "database")) { // line 4 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), "", 1); echo " "; } else { // line 6 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 8 echo " "; // line 10 if ( !twig_test_empty(($context["single_table"] ?? null))) { // line 11 echo " "; } // line 13 echo " env, ($context["export_type"] ?? null), "html", null, true); echo "\"> "; // line 17 echo "env, ($context["export_method"] ?? null), "html", null, true); echo "\"> "; // line 19 if ( !twig_test_empty(($context["sql_query"] ?? null))) { // line 20 echo " env, ($context["sql_query"] ?? null), "html", null, true); echo "\"> "; } // line 22 echo " env, ($context["template_id"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/export/hidden_inputs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 85 => 23, 82 => 22, 76 => 20, 74 => 19, 68 => 17, 63 => 14, 60 => 13, 56 => 11, 54 => 10, 51 => 8, 45 => 6, 39 => 4, 37 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/hidden_inputs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/hidden_inputs.twig"); } } db/login/tmp/twig/f9/f9d1bae0d1aad738fe11c6b918d6567a2748e5a6e6525d97292a729a282e63ea.php000064400000004556151502156020021752 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 2 if ((($context["export_type"] ?? null) == "server")) { // line 3 echo "

    "; echo _gettext("Databases:"); echo "

    "; } elseif (( // line 4 ($context["export_type"] ?? null) == "database")) { // line 5 echo "

    "; echo _gettext("Tables:"); echo "

    "; } // line 7 echo " "; if ( !twig_test_empty(($context["multi_values"] ?? null))) { // line 8 echo " "; echo ($context["multi_values"] ?? null); echo " "; } // line 10 echo "
    "; } public function getTemplateName() { return "display/export/selection.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 57 => 10, 51 => 8, 48 => 7, 42 => 5, 40 => 4, 35 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/selection.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/selection.twig"); } } db/login/tmp/twig/4d/4dd56f0008284f0547f9a23c17a8fdbefbfbd11d12b9a2b6f2bf5412e73b8a50.php000064400000004002151502156020022104 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 2 echo _gettext("Filters"); echo "
    env, ($context["filter_value"] ?? null), "html", null, true); echo "\" />
    "; } public function getTemplateName() { return "filter.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 6, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "filter.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/filter.twig"); } } db/login/tmp/twig/87/870638e5d5690f17cc64f71d4afb7ab8605a1e2516ad57a23f94158490ee7af8.php000064400000005151151502156020021526 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (((($context["delete_link"] ?? null) == ($context["delete_row"] ?? null)) || (($context["delete_link"] ?? null) == ($context["kill_process"] ?? null)))) { // line 2 echo " env, ($context["unique_id"] ?? null), "html", null, true); echo "\" class=\"ajax\"> "; // line 7 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 10 echo "
    "; // line 5 ob_start(function () { return ''; }); // line 6 echo _ngettext("%s table", "%s tables", abs(($context["num_tables"] ?? null))); $context["num_tables_trans"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 8 echo " "; echo twig_escape_filter($this->env, sprintf(($context["num_tables_trans"] ?? null), PhpMyAdmin\Util::formatNumber(($context["num_tables"] ?? null), 0)), "html", null, true); echo " "; echo _gettext("Replication"); echo "env, ($context["sum_colspan"] ?? null), "html", null, true); echo "\" class=\"print_ignore\">"; echo _gettext("Sum"); echo ""; echo twig_escape_filter($this->env, ($context["cell_text"] ?? null), "html", null, true); echo " env, sprintf(_gettext("%s is the default storage engine on this MySQL server."), ($context["default_engine"] ?? null)), "html", null, true); echo "\"> "; // line 49 echo twig_escape_filter($this->env, ($context["default_engine"] ?? null), "html", null, true); echo " "; // line 53 if ( !twig_test_empty(($context["db_collation"] ?? null))) { // line 54 echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["db_collation"] ?? null)), "html", null, true); echo " ("; echo _gettext("Default"); echo ")\"> "; // line 55 echo twig_escape_filter($this->env, ($context["db_collation"] ?? null), "html", null, true); echo " "; } // line 58 echo " "; echo twig_escape_filter($this->env, ($context["sum_formatted"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["sum_unit"] ?? null), "html", null, true); echo ""; echo twig_escape_filter($this->env, ($context["overhead_formatted"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["overhead_unit"] ?? null), "html", null, true); echo ""; echo twig_escape_filter($this->env, ($context["db_charset"] ?? null), "html", null, true); echo " "; // line 81 ((($context["create_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["create_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; // line 86 ((($context["update_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["update_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; // line 91 ((($context["check_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["check_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo "
    env, ($context["unique_id"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/results/multi_row_operations_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 52 => 12, 48 => 10, 42 => 7, 37 => 5, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/multi_row_operations_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/multi_row_operations_form.twig"); } } db/login/tmp/twig/87/875b6e01013797b251014073b65033328bc789205cc92c4786a5c908638e33f7.php000064400000003541151502156020020633 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 echo "
    "; // line 6 echo "
    "; // line 8 echo "
    "; // line 11 echo "
    "; // line 13 echo " "; } public function getTemplateName() { return "database/search/result_divs.twig"; } public function getDebugInfo() { return array ( 45 => 13, 42 => 11, 38 => 8, 35 => 6, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/search/result_divs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/search/result_divs.twig"); } } db/login/tmp/twig/31/317c8816ee34910f2c19f0c2bd6f261441aea2562acc0463975f80a4f0ed98a9.php000064400000006433151502156020021471 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "display/results/show_all_checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 62 => 11, 58 => 10, 55 => 9, 51 => 8, 47 => 7, 43 => 6, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/show_all_checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/show_all_checkbox.twig"); } } db/login/tmp/twig/5d/5d5a07b8a2be398477318e83079a796c995a67dc77e6e8b6df985c2d964a4a18.php000064400000041551151502156020021571 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 if ((($context["foreigners"] ?? null) && call_user_func_array($this->env->getFunction('Relation_searchColumnInForeigners')->getCallable(), [($context["foreigners"] ?? null), ($context["column_name"] ?? null)]))) { // line 3 echo " "; if (twig_test_iterable($this->getAttribute(($context["foreign_data"] ?? null), "disp_row", [], "array"))) { // line 4 echo " "; } elseif (($this->getAttribute( // line 14 ($context["foreign_data"] ?? null), "foreign_link", [], "array") == true)) { // line 15 echo " env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" name=\"criteriaValues["; // line 17 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "]\" id=\"field_"; // line 18 echo twig_escape_filter($this->env, ($context["column_name_hash"] ?? null), "html", null, true); echo "["; echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "]\" class=\"textfield\" "; // line 20 if ($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true)) { // line 21 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"), "html", null, true); echo "\" "; } // line 22 echo " /> ($context["db"] ?? null), "table" => ($context["table"] ?? null)], ""); // line 25 echo "&field="; echo twig_escape_filter($this->env, twig_urlencode_filter(($context["column_name"] ?? null)), "html", null, true); echo "&fieldkey="; // line 26 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "&fromsearch=1\"> "; // line 27 echo twig_replace_filter($this->getAttribute(($context["titles"] ?? null), "Browse", [], "array"), ["'" => "\\'"]); echo " "; } } elseif (twig_in_filter( // line 30 ($context["column_type"] ?? null), PhpMyAdmin\Util::getGISDatatypes())) { // line 31 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" size=\"40\" class=\"textfield\" id=\"field_"; // line 35 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" /> "; // line 36 if (($context["in_fbs"] ?? null)) { // line 37 echo " "; $context["edit_url"] = ("gis_data_editor.php" . PhpMyAdmin\Url::getCommon()); // line 38 echo " "; $context["edit_str"] = PhpMyAdmin\Util::getIcon("b_edit", _gettext("Edit/Insert")); // line 39 echo " "; // line 40 echo PhpMyAdmin\Util::linkOrButton(($context["edit_url"] ?? null), ($context["edit_str"] ?? null), [], "_blank"); echo " "; } } elseif (((is_string($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4 = // line 43 ($context["column_type"] ?? null)) && is_string($__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 = "enum") && ('' === $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 || 0 === strpos($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4, $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144))) || ((is_string($__internal_1cfccaec8dd2e8578ccb026fbe7f2e7e29ac2ed5deb976639c5fc99a6ea8583b = // line 44 ($context["column_type"] ?? null)) && is_string($__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002 = "set") && ('' === $__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002 || 0 === strpos($__internal_1cfccaec8dd2e8578ccb026fbe7f2e7e29ac2ed5deb976639c5fc99a6ea8583b, $__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002))) && ($context["in_zoom_search_edit"] ?? null)))) { // line 45 echo " "; $context["in_zoom_search_edit"] = false; // line 46 echo " "; $context["value"] = twig_split_filter($this->env, twig_replace_filter(twig_slice($this->env, twig_escape_filter($this->env, ($context["column_type"] ?? null)), 5, -1), ["'" => ""]), ", "); // line 47 echo " "; $context["cnt_value"] = twig_length_filter($this->env, ($context["value"] ?? null)); // line 48 echo " "; // line 54 echo " "; if ((((is_string($__internal_d7fc55f1a54b629533d60b43063289db62e68921ee7a5f8de562bd9d4a2b7ad4 = ($context["column_type"] ?? null)) && is_string($__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666 = "enum") && ('' === $__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666 || 0 === strpos($__internal_d7fc55f1a54b629533d60b43063289db62e68921ee7a5f8de562bd9d4a2b7ad4, $__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666))) && !($context["in_zoom_search_edit"] ?? null)) || ((is_string($__internal_01c35b74bd85735098add188b3f8372ba465b232ab8298cb582c60f493d3c22e = // line 55 ($context["column_type"] ?? null)) && is_string($__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52 = "set") && ('' === $__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52 || 0 === strpos($__internal_01c35b74bd85735098add188b3f8372ba465b232ab8298cb582c60f493d3c22e, $__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52))) && ($context["in_zoom_search_edit"] ?? null)))) { // line 56 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" id=\""; // line 60 echo twig_escape_filter($this->env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" multiple=\"multiple\" size=\""; // line 62 echo twig_escape_filter($this->env, min(3, ($context["cnt_value"] ?? null)), "html", null, true); echo "\"> "; } // line 64 echo " "; // line 65 echo " "; // line 66 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, (($context["cnt_value"] ?? null) - 1))); foreach ($context['_seq'] as $context["_key"] => $context["i"]) { // line 67 echo " "; if ((($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true) && twig_test_iterable($this->getAttribute( // line 68 ($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"))) && twig_in_filter($this->getAttribute( // line 69 ($context["value"] ?? null), $context["i"], [], "array"), $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array")))) { // line 70 echo " "; } else { // line 74 echo " "; } // line 78 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['i'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 79 echo " "; } else { // line 81 echo " "; $context["the_class"] = "textfield"; // line 82 echo " "; if ((($context["column_type"] ?? null) == "date")) { // line 83 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " datefield"); // line 84 echo " "; } elseif (((($context["column_type"] ?? null) == "datetime") || (is_string($__internal_f10a4cc339617934220127f034125576ed229e948660ebac906a15846d52f136 = ($context["column_type"] ?? null)) && is_string($__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386 = "timestamp") && ('' === $__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386 || 0 === strpos($__internal_f10a4cc339617934220127f034125576ed229e948660ebac906a15846d52f136, $__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386))))) { // line 85 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " datetimefield"); // line 86 echo " "; } elseif ((is_string($__internal_d527c24a729d38501d770b40a0d25e1ce8a7f0bff897cc4f8f449ba71fcff3d9 = ($context["column_type"] ?? null)) && is_string($__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae = "bit") && ('' === $__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae || 0 === strpos($__internal_d527c24a729d38501d770b40a0d25e1ce8a7f0bff897cc4f8f449ba71fcff3d9, $__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae)))) { // line 87 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " bit"); // line 88 echo " "; } // line 89 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" size=\"40\" class=\""; // line 92 echo twig_escape_filter($this->env, ($context["the_class"] ?? null), "html", null, true); echo "\" id=\""; // line 93 echo twig_escape_filter($this->env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" "; // line 94 if ($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true)) { // line 95 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"), "html", null, true); echo "\""; } // line 96 echo " /> "; } } public function getTemplateName() { return "table/search/input_box.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 274 => 96, 269 => 95, 267 => 94, 262 => 93, 258 => 92, 253 => 90, 250 => 89, 247 => 88, 244 => 87, 241 => 86, 238 => 85, 235 => 84, 232 => 83, 229 => 82, 226 => 81, 222 => 79, 216 => 78, 210 => 75, 205 => 74, 199 => 71, 194 => 70, 192 => 69, 191 => 68, 189 => 67, 185 => 66, 182 => 65, 180 => 64, 175 => 62, 169 => 60, 164 => 59, 158 => 57, 153 => 56, 151 => 55, 149 => 54, 147 => 48, 144 => 47, 141 => 46, 138 => 45, 136 => 44, 135 => 43, 129 => 40, 126 => 39, 123 => 38, 120 => 37, 118 => 36, 114 => 35, 108 => 32, 105 => 31, 103 => 30, 97 => 27, 93 => 26, 89 => 25, 87 => 24, 84 => 22, 78 => 21, 76 => 20, 69 => 18, 65 => 17, 60 => 16, 57 => 15, 55 => 14, 51 => 12, 49 => 11, 48 => 9, 47 => 8, 46 => 7, 45 => 6, 40 => 5, 35 => 4, 32 => 3, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/input_box.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/input_box.twig"); } } db/login/tmp/twig/99/99d7424642b29df053f268f973c2b8db0a747aa12e9f49c7a8a43bbd96995357.php000064400000027142151502156020021476 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "table/structure/actions_in_table_structure.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 204 => 140, 199 => 137, 196 => 136, 192 => 134, 186 => 131, 183 => 130, 177 => 127, 174 => 126, 172 => 125, 169 => 124, 167 => 123, 161 => 120, 158 => 119, 156 => 118, 155 => 117, 154 => 116, 153 => 115, 152 => 114, 149 => 113, 146 => 112, 142 => 109, 136 => 107, 130 => 104, 126 => 103, 124 => 102, 122 => 101, 121 => 100, 118 => 99, 115 => 98, 113 => 97, 112 => 96, 111 => 95, 110 => 94, 109 => 93, 108 => 92, 105 => 91, 102 => 89, 100 => 87, 99 => 85, 98 => 84, 97 => 80, 96 => 79, 95 => 77, 94 => 76, 93 => 74, 92 => 73, 90 => 72, 87 => 62, 84 => 60, 82 => 58, 81 => 56, 80 => 55, 79 => 51, 78 => 50, 77 => 46, 76 => 45, 74 => 44, 71 => 42, 69 => 40, 68 => 38, 67 => 37, 66 => 33, 65 => 32, 64 => 30, 63 => 28, 62 => 27, 60 => 26, 57 => 24, 55 => 22, 54 => 20, 53 => 19, 52 => 15, 51 => 14, 50 => 12, 49 => 10, 48 => 9, 46 => 8, 44 => 7, 38 => 4, 35 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/actions_in_table_structure.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/actions_in_table_structure.twig"); } } db/login/tmp/twig/99/99d2c29873488a4d10804765bf97aa87cf7a5b027156a7a1455a576a6a8a14ae.php000064400000007406151502156020021371 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array", true, true) && $this->getAttribute($this->getAttribute( // line 2 ($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array", false, true), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array", true, true))) { // line 3 echo " env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), "html", null, true); echo "\"> "; // line 4 if ((twig_length_filter($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array")) > ($context["limit_chars"] ?? null))) { // line 5 echo " "; echo twig_escape_filter($this->env, twig_slice($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), 0, ($context["limit_chars"] ?? null)), "html", null, true); echo "… "; } else { // line 7 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), "html", null, true); echo " "; } // line 9 echo " "; } } public function getTemplateName() { return "display/results/comment_for_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 52 => 9, 46 => 7, 40 => 5, 38 => 4, 33 => 3, 31 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/comment_for_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/comment_for_row.twig"); } } db/login/tmp/twig/99/9937763182924ca59c5731a9e6a0d96c77ec0ca5ce3241eec146f7bca0a6a0dc.php000064400000034262151502156020021732 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 4 echo " "; $this->loadTemplate("console/toolbar.twig", "console/display.twig", 4)->display(twig_to_array(["parent_div_classes" => "collapsed", "content_array" => [0 => [0 => "switch_button console_switch", 1 => _gettext("Console"), "image" => // line 7 ($context["image"] ?? null)], 1 => [0 => "button clear", 1 => _gettext("Clear")], 2 => [0 => "button history", 1 => _gettext("History")], 3 => [0 => "button options", 1 => _gettext("Options")], 4 => (( // line 11 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "button bookmarks", 1 => _gettext("Bookmarks")]) : (null)), 5 => [0 => "button debug hide", 1 => _gettext("Debug SQL")]]])); // line 15 echo " "; // line 16 echo "
    "; // line 20 echo _gettext("Press Ctrl+Enter to execute query"); // line 21 echo " "; // line 23 echo _gettext("Press Enter to execute query"); // line 24 echo "
    "; // line 26 if ( !twig_test_empty(($context["sql_history"] ?? null))) { // line 27 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(twig_reverse_filter($this->env, ($context["sql_history"] ?? null))); foreach ($context['_seq'] as $context["_key"] => $context["record"]) { // line 28 echo "
    getAttribute($context["record"], "sqlquery", [], "array"))) ? (" select") : ("")); echo "\" targetdb=\""; // line 30 echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "db", [], "array"), "html", null, true); echo "\" targettable=\""; echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "table", [], "array"), "html", null, true); echo "\"> "; // line 31 $this->loadTemplate("console/query_action.twig", "console/display.twig", 31)->display(twig_to_array(["parent_div_classes" => "action_content", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action requery", 1 => _gettext("Requery")], 3 => [0 => "action edit", 1 => _gettext("Edit")], 4 => [0 => "action explain", 1 => _gettext("Explain")], 5 => [0 => "action profiling", 1 => _gettext("Profiling")], 6 => (( // line 40 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "action bookmark", 1 => _gettext("Bookmark")]) : (null)), 7 => [0 => "text failed", 1 => _gettext("Query failed")], 8 => [0 => "text targetdb", 1 => _gettext("Database"), "extraSpan" => $this->getAttribute( // line 42 $context["record"], "db", [], "array")], 9 => [0 => "text query_time", 1 => _gettext("Queried time"), "extraSpan" => (($this->getAttribute( // line 46 $context["record"], "timevalue", [], "array", true, true)) ? ($this->getAttribute( // line 47 $context["record"], "timevalue", [], "array")) : (_gettext("During current session")))]]])); // line 51 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "sqlquery", [], "array"), "html", null, true); echo "
    "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['record'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 54 echo " "; } // line 55 echo "
    "; // line 61 echo "
    "; // line 63 echo "
    "; // line 64 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 64)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "button order order_asc", 1 => _gettext("ascending")], 1 => [0 => "button order order_desc", 1 => _gettext("descending")], 2 => [0 => "text", 1 => _gettext("Order:")], 3 => [0 => "switch_button", 1 => _gettext("Debug SQL")], 4 => [0 => "button order_by sort_count", 1 => _gettext("Count")], 5 => [0 => "button order_by sort_exec", 1 => _gettext("Execution order")], 6 => [0 => "button order_by sort_time", 1 => _gettext("Time taken")], 7 => [0 => "text", 1 => _gettext("Order by:")], 8 => [0 => "button group_queries", 1 => _gettext("Group queries")], 9 => [0 => "button ungroup_queries", 1 => _gettext("Ungroup queries")]]])); // line 79 echo "
    "; // line 84 $this->loadTemplate("console/query_action.twig", "console/display.twig", 84)->display(twig_to_array(["parent_div_classes" => "debug_query action_content", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action dbg_show_trace", 1 => _gettext("Show trace")], 3 => [0 => "action dbg_hide_trace", 1 => _gettext("Hide trace")], 4 => [0 => "text count hide", 1 => _gettext("Count")], 5 => [0 => "text time", 1 => _gettext("Time taken")]]])); // line 95 echo "
    "; // line 97 if (($context["cfg_bookmark"] ?? null)) { // line 98 echo "
    "; // line 99 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 99)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Bookmarks")], 1 => [0 => "button refresh", 1 => _gettext("Refresh")], 2 => [0 => "button add", 1 => _gettext("Add")]]])); // line 107 echo "
    "; // line 108 echo ($context["bookmark_content"] ?? null); echo "
    "; // line 112 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 112)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Add bookmark")]]])); // line 118 echo "
    "; } // line 138 echo " "; // line 139 echo "
    "; // line 140 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 140)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Options")], 1 => [0 => "button default", 1 => _gettext("Set default")]]])); // line 147 echo "





    "; // line 175 echo " "; $this->loadTemplate("console/query_action.twig", "console/display.twig", 175)->display(twig_to_array(["parent_div_classes" => "query_actions", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action requery", 1 => _gettext("Requery")], 3 => [0 => "action edit", 1 => _gettext("Edit")], 4 => [0 => "action explain", 1 => _gettext("Explain")], 5 => [0 => "action profiling", 1 => _gettext("Profiling")], 6 => (( // line 184 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "action bookmark", 1 => _gettext("Bookmark")]) : (null)), 7 => [0 => "text failed", 1 => _gettext("Query failed")], 8 => [0 => "text targetdb", 1 => _gettext("Database"), "extraSpan" => ""], 9 => [0 => "text query_time", 1 => _gettext("Queried time"), "extraSpan" => ""]]])); // line 190 echo "
    "; } public function getTemplateName() { return "console/display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 231 => 190, 229 => 184, 227 => 175, 220 => 169, 218 => 168, 213 => 165, 211 => 162, 205 => 158, 203 => 157, 198 => 154, 196 => 153, 191 => 150, 189 => 149, 185 => 147, 183 => 140, 180 => 139, 178 => 138, 166 => 129, 163 => 128, 161 => 127, 155 => 124, 149 => 121, 144 => 118, 142 => 112, 135 => 108, 132 => 107, 130 => 99, 127 => 98, 125 => 97, 121 => 95, 119 => 84, 112 => 79, 110 => 64, 107 => 63, 104 => 61, 97 => 55, 94 => 54, 84 => 51, 82 => 47, 81 => 46, 80 => 42, 79 => 40, 78 => 31, 72 => 30, 68 => 29, 66 => 28, 61 => 27, 59 => 26, 55 => 24, 53 => 23, 49 => 21, 47 => 20, 41 => 16, 39 => 15, 37 => 11, 36 => 7, 34 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/display.twig"); } } db/login/tmp/twig/bb/bb2d0545053d2ed614bcb7e3feef12347a64b98fc6efb7f8d150755a897d2385.php000064400000045550151502156020022074 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 4 echo _gettext("Partitions"); // line 5 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("partitioning"); echo " "; // line 7 if (twig_test_empty(($context["partitions"] ?? null))) { // line 8 echo " "; echo call_user_func_array($this->env->getFunction('Message_notice')->getCallable(), [_gettext("No partitioning defined!")]); echo " "; } else { // line 10 echo "

    "; // line 11 echo _gettext("Partitioned by:"); // line 12 echo " "; echo twig_escape_filter($this->env, ($context["partition_method"] ?? null), "html", null, true); echo "("; echo twig_escape_filter($this->env, ($context["partition_expression"] ?? null), "html", null, true); echo ")

    "; // line 14 if (($context["has_sub_partitions"] ?? null)) { // line 15 echo "

    "; // line 16 echo _gettext("Sub partitioned by:"); // line 17 echo " "; echo twig_escape_filter($this->env, ($context["sub_partition_method"] ?? null), "html", null, true); echo "("; echo twig_escape_filter($this->env, ($context["sub_partition_expression"] ?? null), "html", null, true); echo ")

    "; } // line 20 echo "

    "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> env, ($context["max_rows"] ?? null), "html", null, true)))); echo "\" /> env, ($context["goto"] ?? null), "html", null, true); echo "\" /> env, ($context["unique_id"] ?? null), "html", null, true); echo "\" class=\"showAllRows\""; // line 10 echo ((($context["showing_all"] ?? null)) ? (" checked=\"checked\"") : ("")); echo " value=\"all\" />
    "; // line 25 if (($context["has_description"] ?? null)) { // line 26 echo " "; } // line 28 echo " "; // line 38 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["partitions"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["partition"]) { // line 39 echo " "; // line 40 if (($context["has_sub_partitions"] ?? null)) { // line 41 echo " "; } else { // line 44 echo " "; } // line 46 echo " "; // line 47 if (($context["has_description"] ?? null)) { // line 48 echo " "; } // line 57 echo " "; // line 77 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["action_icons"] ?? null)); foreach ($context['_seq'] as $context["action"] => $context["icon"]) { // line 78 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['action'], $context['icon'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 90 echo " "; // line 91 if (($context["has_sub_partitions"] ?? null)) { // line 92 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["partition"], "getSubPartitions", [], "method")); foreach ($context['_seq'] as $context["_key"] => $context["sub_partition"]) { // line 93 echo " "; // line 97 if (($context["has_description"] ?? null)) { // line 98 echo " "; } // line 100 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['sub_partition'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 123 echo " "; } // line 124 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['partition'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 126 echo "
    # "; // line 24 echo _gettext("Partition"); echo ""; echo _gettext("Expression"); echo ""; echo _gettext("Rows"); echo " "; // line 29 echo _gettext("Data length"); echo " "; // line 30 echo _gettext("Index length"); echo " "; // line 31 echo _gettext("Comment"); echo " "; // line 33 echo _gettext("Action"); // line 34 echo "
    "; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getOrdinal", [], "method"), "html", null, true); echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getOrdinal", [], "method"), "html", null, true); echo ""; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getName", [], "method"), "html", null, true); echo " "; // line 50 echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getExpression", [], "method"), "html", null, true); // line 51 echo ((($this->getAttribute($context["partition"], "getMethod", [], "method") == "LIST")) ? (" IN (") : (" < ")); // line 52 echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getDescription", [], "method"), "html", null, true); // line 53 echo ((($this->getAttribute($context["partition"], "getMethod", [], "method") == "LIST")) ? (")") : ("")); // line 54 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getRows", [], "method"), "html", null, true); echo " "; // line 59 $context["data_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 60 $context["partition"], "getDataLength", [], "method"), 3, 1); // line 64 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 65 echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 68 $context["index_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 69 $context["partition"], "getIndexLength", [], "method"), 3, 1); // line 73 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 74 echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 76 echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getComment", [], "method"), "html", null, true); echo " env, ($context["url_query"] ?? null), "html", null, true); // line 80 echo "&partition_maintenance=1&sql_query="; // line 81 echo twig_escape_filter($this->env, twig_urlencode_filter(((((("ALTER TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " ") . $context["action"]) . " PARTITION ") . $this->getAttribute( // line 82 $context["partition"], "getName", [], "method"))), "html", null, true); echo "\" id=\"partition_action_"; // line 83 echo twig_escape_filter($this->env, $context["action"], "html", null, true); echo "\" name=\"partition_action_"; // line 84 echo twig_escape_filter($this->env, $context["action"], "html", null, true); echo "\" class=\"ajax\"> "; // line 86 echo $context["icon"]; echo "
    "; // line 95 echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getOrdinal", [], "method"), "html", null, true); echo " "; // line 96 echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getName", [], "method"), "html", null, true); echo ""; echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getRows", [], "method"), "html", null, true); echo " "; // line 102 $context["data_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 103 $context["sub_partition"], "getDataLength", [], "method"), 3, 1); // line 107 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 108 echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 111 $context["index_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 112 $context["sub_partition"], "getIndexLength", [], "method"), 3, 1); // line 116 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 117 echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 119 echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getComment", [], "method"), "html", null, true); echo "
    "; } // line 129 echo "
    "; // line 132 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " "; // line 134 if (twig_test_empty(($context["partitions"] ?? null))) { // line 135 echo " "; } else { // line 137 echo " "; echo PhpMyAdmin\Util::linkOrButton(($context["remove_url"] ?? null), _gettext("Remove partitioning"), ["class" => "button ajax", "id" => "remove_partitioning"]); // line 140 echo " "; } // line 143 echo "
    "; } public function getTemplateName() { return "table/structure/display_partitions.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 364 => 143, 359 => 141, 356 => 140, 353 => 137, 347 => 135, 345 => 134, 340 => 132, 335 => 129, 330 => 126, 323 => 124, 320 => 123, 311 => 120, 307 => 119, 302 => 117, 297 => 116, 295 => 112, 294 => 111, 288 => 108, 283 => 107, 281 => 103, 280 => 102, 274 => 100, 270 => 98, 268 => 97, 264 => 96, 260 => 95, 256 => 93, 251 => 92, 249 => 91, 246 => 90, 236 => 86, 231 => 84, 227 => 83, 223 => 82, 222 => 81, 220 => 80, 218 => 79, 215 => 78, 211 => 77, 207 => 76, 202 => 74, 197 => 73, 195 => 69, 194 => 68, 188 => 65, 183 => 64, 181 => 60, 180 => 59, 174 => 57, 169 => 54, 167 => 53, 165 => 52, 163 => 51, 161 => 50, 158 => 48, 156 => 47, 151 => 46, 145 => 44, 138 => 41, 136 => 40, 131 => 39, 127 => 38, 121 => 34, 119 => 33, 115 => 32, 111 => 31, 107 => 30, 103 => 29, 98 => 28, 92 => 26, 90 => 25, 86 => 24, 80 => 20, 71 => 17, 69 => 16, 66 => 15, 64 => 14, 56 => 12, 54 => 11, 51 => 10, 45 => 8, 43 => 7, 37 => 5, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/display_partitions.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/display_partitions.twig"); } } db/login/tmp/twig/34/3414be3390b6e88e0c6c3afbce606724fc49d74ae9b398bfba0a09bd86d7b923.php000064400000023400151502156020022060 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["tr_class"] ?? null), "html", null, true); echo "\""; } echo " data-filter-row=\""; echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array")), "html", null, true); echo "\"> "; // line 2 if ((($context["is_superuser"] ?? null) || ($context["allow_user_drop_database"] ?? null))) { // line 3 echo " env, $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array"), "html", null, true); echo "\" value=\""; // line 6 echo twig_escape_filter($this->env, $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array"), "html", null, true); echo "\""; // line 7 if (($context["is_system_schema"] ?? null)) { echo " disabled=\"disabled\""; } echo " /> "; } // line 10 echo " $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array")]); echo "\" title=\""; // line 13 echo twig_escape_filter($this->env, sprintf(_gettext("Jump to database '%s'"), twig_escape_filter($this->env, $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array"))), "html", null, true); echo "\"> "; // line 14 echo twig_escape_filter($this->env, $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array"), "html", null, true); echo " "; // line 17 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["column_order"] ?? null)); foreach ($context['_seq'] as $context["stat_name"] => $context["stat"]) { // line 18 echo " "; if (twig_in_filter($context["stat_name"], twig_get_array_keys_filter(($context["current"] ?? null)))) { // line 19 echo " "; if (($this->getAttribute($context["stat"], "format", [], "array") === "byte")) { // line 20 echo " "; $context["byte_format"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute(($context["current"] ?? null), $context["stat_name"], [], "array"), 3, 1); // line 21 echo " "; $context["value"] = $this->getAttribute(($context["byte_format"] ?? null), 0, [], "array"); // line 22 echo " "; $context["unit"] = $this->getAttribute(($context["byte_format"] ?? null), 1, [], "array"); // line 23 echo " "; } elseif (($this->getAttribute($context["stat"], "format", [], "array") === "number")) { // line 24 echo " "; $context["value"] = PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["current"] ?? null), $context["stat_name"], [], "array"), 0); // line 25 echo " "; } else { // line 26 echo " "; $context["value"] = htmlentities($this->getAttribute(($context["current"] ?? null), $context["stat_name"], [], "array"), 0); // line 27 echo " "; } // line 28 echo " "; // line 30 if ($this->getAttribute($context["stat"], "description_function", [], "array", true, true)) { // line 31 echo " env, PhpMyAdmin\Charsets::getCollationDescr($this->getAttribute(($context["current"] ?? null), $context["stat_name"], [], "array")), "html", null, true); echo "\"> "; // line 32 echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo " "; } else { // line 35 echo " "; echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo " "; } // line 37 echo " "; // line 38 if (($this->getAttribute($context["stat"], "format", [], "array") === "byte")) { // line 39 echo " "; echo twig_escape_filter($this->env, ($context["unit"] ?? null), "html", null, true); echo " "; } // line 41 echo " "; } // line 42 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['stat_name'], $context['stat'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 43 echo " "; // line 44 if (($context["master_replication_status"] ?? null)) { // line 45 echo " "; // line 46 echo ($context["master_replication"] ?? null); echo " "; } // line 49 echo " "; // line 50 if (($context["slave_replication_status"] ?? null)) { // line 51 echo " "; // line 52 echo ($context["slave_replication"] ?? null); echo " "; } // line 55 echo " getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array")); echo "\" href=\"server_privileges.php"; // line 59 echo PhpMyAdmin\Url::getCommon(["db" => $this->getAttribute( // line 60 ($context["current"] ?? null), "SCHEMA_NAME", [], "array"), "checkprivsdb" => $this->getAttribute( // line 61 ($context["current"] ?? null), "SCHEMA_NAME", [], "array")]); // line 62 echo "\" title=\""; // line 63 echo twig_escape_filter($this->env, sprintf(_gettext("Check privileges for database \"%s\"."), twig_escape_filter($this->env, $this->getAttribute(($context["current"] ?? null), "SCHEMA_NAME", [], "array"))), "html", null, true); echo "\"> "; // line 64 echo PhpMyAdmin\Util::getIcon("s_rights", _gettext("Check privileges")); echo " "; } public function getTemplateName() { return "server/databases/table_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 200 => 64, 196 => 63, 194 => 62, 192 => 61, 191 => 60, 190 => 59, 187 => 58, 183 => 55, 177 => 52, 174 => 51, 172 => 50, 169 => 49, 163 => 46, 160 => 45, 158 => 44, 155 => 43, 149 => 42, 146 => 41, 140 => 39, 138 => 38, 135 => 37, 129 => 35, 123 => 32, 118 => 31, 116 => 30, 112 => 28, 109 => 27, 106 => 26, 103 => 25, 100 => 24, 97 => 23, 94 => 22, 91 => 21, 88 => 20, 85 => 19, 82 => 18, 78 => 17, 72 => 14, 68 => 13, 65 => 12, 63 => 11, 60 => 10, 52 => 7, 49 => 6, 46 => 5, 43 => 3, 41 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/databases/table_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/databases/table_row.twig"); } } db/login/tmp/twig/00/0006ee2a987cc6d51ec9c12ba1ed4a2300ac1a9286c873a653b985805e3630b6.php000064400000045550151502156020021450 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 4 echo _gettext("Partitions"); // line 5 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("partitioning"); echo " "; // line 7 if (twig_test_empty(($context["partitions"] ?? null))) { // line 8 echo " "; echo call_user_func_array($this->env->getFunction('Message_notice')->getCallable(), [_gettext("No partitioning defined!")]); echo " "; } else { // line 10 echo "

    "; // line 11 echo _gettext("Partitioned by:"); // line 12 echo " "; echo twig_escape_filter($this->env, ($context["partition_method"] ?? null), "html", null, true); echo "("; echo twig_escape_filter($this->env, ($context["partition_expression"] ?? null), "html", null, true); echo ")

    "; // line 14 if (($context["has_sub_partitions"] ?? null)) { // line 15 echo "

    "; // line 16 echo _gettext("Sub partitioned by:"); // line 17 echo " "; echo twig_escape_filter($this->env, ($context["sub_partition_method"] ?? null), "html", null, true); echo "("; echo twig_escape_filter($this->env, ($context["sub_partition_expression"] ?? null), "html", null, true); echo ")

    "; } // line 20 echo " "; // line 25 if (($context["has_description"] ?? null)) { // line 26 echo " "; } // line 28 echo " "; // line 38 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["partitions"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["partition"]) { // line 39 echo " "; // line 40 if (($context["has_sub_partitions"] ?? null)) { // line 41 echo " "; } else { // line 44 echo " "; } // line 46 echo " "; // line 47 if (($context["has_description"] ?? null)) { // line 48 echo " "; } // line 57 echo " "; // line 77 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["action_icons"] ?? null)); foreach ($context['_seq'] as $context["action"] => $context["icon"]) { // line 78 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['action'], $context['icon'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 90 echo " "; // line 91 if (($context["has_sub_partitions"] ?? null)) { // line 92 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["partition"], "getSubPartitions", [], "method")); foreach ($context['_seq'] as $context["_key"] => $context["sub_partition"]) { // line 93 echo " "; // line 97 if (($context["has_description"] ?? null)) { // line 98 echo " "; } // line 100 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['sub_partition'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 123 echo " "; } // line 124 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['partition'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 126 echo "
    # "; // line 24 echo _gettext("Partition"); echo ""; echo _gettext("Expression"); echo ""; echo _gettext("Rows"); echo " "; // line 29 echo _gettext("Data length"); echo " "; // line 30 echo _gettext("Index length"); echo " "; // line 31 echo _gettext("Comment"); echo " "; // line 33 echo _gettext("Action"); // line 34 echo "
    "; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getOrdinal", [], "method"), "html", null, true); echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getOrdinal", [], "method"), "html", null, true); echo ""; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getName", [], "method"), "html", null, true); echo " "; // line 50 echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getExpression", [], "method"), "html", null, true); // line 51 echo ((($this->getAttribute($context["partition"], "getMethod", [], "method") == "LIST")) ? (" IN (") : (" < ")); // line 52 echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getDescription", [], "method"), "html", null, true); // line 53 echo ((($this->getAttribute($context["partition"], "getMethod", [], "method") == "LIST")) ? (")") : ("")); // line 54 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getRows", [], "method"), "html", null, true); echo " "; // line 59 $context["data_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 60 $context["partition"], "getDataLength", [], "method"), 3, 1); // line 64 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 65 echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 68 $context["index_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 69 $context["partition"], "getIndexLength", [], "method"), 3, 1); // line 73 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 74 echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 76 echo twig_escape_filter($this->env, $this->getAttribute($context["partition"], "getComment", [], "method"), "html", null, true); echo " env, ($context["url_query"] ?? null), "html", null, true); // line 80 echo "&partition_maintenance=1&sql_query="; // line 81 echo twig_escape_filter($this->env, twig_urlencode_filter(((((("ALTER TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " ") . $context["action"]) . " PARTITION ") . $this->getAttribute( // line 82 $context["partition"], "getName", [], "method"))), "html", null, true); echo "\" id=\"partition_action_"; // line 83 echo twig_escape_filter($this->env, $context["action"], "html", null, true); echo "\" name=\"partition_action_"; // line 84 echo twig_escape_filter($this->env, $context["action"], "html", null, true); echo "\" class=\"ajax\"> "; // line 86 echo $context["icon"]; echo "
    "; // line 95 echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getOrdinal", [], "method"), "html", null, true); echo " "; // line 96 echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getName", [], "method"), "html", null, true); echo ""; echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getRows", [], "method"), "html", null, true); echo " "; // line 102 $context["data_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 103 $context["sub_partition"], "getDataLength", [], "method"), 3, 1); // line 107 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 108 echo twig_escape_filter($this->env, $this->getAttribute(($context["data_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 111 $context["index_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute( // line 112 $context["sub_partition"], "getIndexLength", [], "method"), 3, 1); // line 116 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; // line 117 echo twig_escape_filter($this->env, $this->getAttribute(($context["index_length"] ?? null), 1, [], "array"), "html", null, true); echo " "; // line 119 echo twig_escape_filter($this->env, $this->getAttribute($context["sub_partition"], "getComment", [], "method"), "html", null, true); echo "
    "; } // line 129 echo "

    "; // line 132 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " "; // line 134 if (twig_test_empty(($context["partitions"] ?? null))) { // line 135 echo " "; } else { // line 137 echo " "; echo PhpMyAdmin\Util::linkOrButton(($context["remove_url"] ?? null), _gettext("Remove partitioning"), ["class" => "button ajax", "id" => "remove_partitioning"]); // line 140 echo " "; } // line 143 echo "
    "; } public function getTemplateName() { return "table/structure/display_partitions.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 364 => 143, 359 => 141, 356 => 140, 353 => 137, 347 => 135, 345 => 134, 340 => 132, 335 => 129, 330 => 126, 323 => 124, 320 => 123, 311 => 120, 307 => 119, 302 => 117, 297 => 116, 295 => 112, 294 => 111, 288 => 108, 283 => 107, 281 => 103, 280 => 102, 274 => 100, 270 => 98, 268 => 97, 264 => 96, 260 => 95, 256 => 93, 251 => 92, 249 => 91, 246 => 90, 236 => 86, 231 => 84, 227 => 83, 223 => 82, 222 => 81, 220 => 80, 218 => 79, 215 => 78, 211 => 77, 207 => 76, 202 => 74, 197 => 73, 195 => 69, 194 => 68, 188 => 65, 183 => 64, 181 => 60, 180 => 59, 174 => 57, 169 => 54, 167 => 53, 165 => 52, 163 => 51, 161 => 50, 158 => 48, 156 => 47, 151 => 46, 145 => 44, 138 => 41, 136 => 40, 131 => 39, 127 => 38, 121 => 34, 119 => 33, 115 => 32, 111 => 31, 107 => 30, 103 => 29, 98 => 28, 92 => 26, 90 => 25, 86 => 24, 80 => 20, 71 => 17, 69 => 16, 66 => 15, 64 => 14, 56 => 12, 54 => 11, 51 => 10, 45 => 8, 43 => 7, 37 => 5, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/display_partitions.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/display_partitions.twig"); } } db/login/tmp/twig/2a/2a1a295bd64f4d1afaf824399fe8bfd3ded588b6dcc29d1e3e030b6b8a44f034.php000064400000004454151502156020022274 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo twig_escape_filter($this->env, ($context["type"] ?? null), "html", null, true); echo " "; // line 3 echo twig_escape_filter($this->env, ($context["name"] ?? null), "html", null, true); echo " env, ($context["field"] ?? null), "html", null, true); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo "\" type=\"text\" /> "; } public function getTemplateName() { return "export/alias_item.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 50 => 8, 42 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "export/alias_item.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/export/alias_item.twig"); } } db/login/tmp/twig/77/77329f9a956af6a70502d4c8d97c2b02b2b40ec3768924c9e3b06a24b5eb5dfb.php000064400000012033151502156020021643 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 2 if ( !twig_test_empty(($context["class"] ?? null))) { echo " class=\""; echo twig_escape_filter($this->env, ($context["class"] ?? null), "html", null, true); echo "\""; } echo "> "; // line 4 if ((((isset($context["url"]) || array_key_exists("url", $context)) && twig_test_iterable(($context["url"] ?? null))) && !twig_test_empty($this->getAttribute(($context["url"] ?? null), "href", [], "array")))) { // line 5 echo " getAttribute(($context["url"] ?? null), "href", [], "array"))) { echo " href=\""; echo $this->getAttribute(($context["url"] ?? null), "href", [], "array"); echo "\""; } // line 6 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "target", [], "array"))) { echo " target=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "target", [], "array"), "html", null, true); echo "\""; } // line 7 if (( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "target", [], "array")) && ($this->getAttribute(($context["url"] ?? null), "target", [], "array") == "_blank"))) { echo " rel=\"noopener noreferrer\""; } // line 8 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "id", [], "array"))) { echo " id=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "id", [], "array"), "html", null, true); echo "\""; } // line 9 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "class", [], "array"))) { echo " class=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "class", [], "array"), "html", null, true); echo "\""; } // line 10 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "title", [], "array"))) { echo " title=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "title", [], "array"), "html", null, true); echo "\""; } echo "> "; } // line 12 echo " "; echo ($context["content"] ?? null); echo " "; // line 13 if ((((isset($context["url"]) || array_key_exists("url", $context)) && twig_test_iterable(($context["url"] ?? null))) && !twig_test_empty($this->getAttribute(($context["url"] ?? null), "href", [], "array")))) { // line 14 echo " "; } // line 16 echo " "; if ( !twig_test_empty(($context["mysql_help_page"] ?? null))) { // line 17 echo " "; echo PhpMyAdmin\Util::showMySQLDocu(($context["mysql_help_page"] ?? null)); echo " "; } // line 19 echo " "; } public function getTemplateName() { return "list/item.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 106 => 19, 100 => 17, 97 => 16, 93 => 14, 91 => 13, 86 => 12, 77 => 10, 71 => 9, 65 => 8, 61 => 7, 55 => 6, 48 => 5, 46 => 4, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "list/item.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/list/item.twig"); } } db/login/tmp/twig/77/7722a80a5615f997b0f0c8cf382787c804731686771743b307a2de2c648bae15.php000064400000004545151502156020021150 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($this->getAttribute(($context["cfg_relation"] ?? null), "relwork", [], "array") || ($context["is_foreign_key_supported"] ?? null))) { // line 2 echo "
      "; // line 3 echo PhpMyAdmin\Util::getHtmlTab(["icon" => "b_props", "link" => "tbl_structure.php", "text" => _gettext("Table structure"), "id" => "table_strucuture_id"], // line 8 ($context["url_params"] ?? null)); echo " "; // line 9 echo PhpMyAdmin\Util::getHtmlTab(["icon" => "b_relations", "link" => "tbl_relation.php", "text" => _gettext("Relation view"), "id" => "table_relation_id"], // line 14 ($context["url_params"] ?? null)); echo "
    "; } } public function getTemplateName() { return "table/secondary_tabs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 41 => 14, 40 => 9, 36 => 8, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/secondary_tabs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/secondary_tabs.twig"); } } db/login/tmp/twig/77/77b3c17b42179ca2f8d0ccf9679927cd1341f7faf2f1196b9a268ae279eab0bb.php000064400000011135151502156020022015 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo ""; echo PhpMyAdmin\Util::getIcon("b_print", _gettext("Print"), true); echo " "; // line 2 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 3 echo " "; // line 4 echo " "; if (((($context["mysql_int_version"] ?? null) < 80000) || ($context["is_mariadb"] ?? null))) { // line 5 echo " env, twig_urlencode_filter((("SELECT * FROM " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " PROCEDURE ANALYSE()")), "html", null, true); // line 7 echo "\" style=\"margin-right: 0;\"> "; // line 8 echo PhpMyAdmin\Util::getIcon("b_tblanalyse", _gettext("Propose table structure"), true); // line 12 echo " "; // line 14 echo PhpMyAdmin\Util::showMySQLDocu("procedure_analyse"); echo " "; } // line 16 echo " "; if (($context["is_active"] ?? null)) { // line 17 echo " "; // line 18 echo PhpMyAdmin\Util::getIcon("eye", _gettext("Track table"), true); echo " "; } // line 21 echo " "; // line 22 echo PhpMyAdmin\Util::getIcon("b_move", _gettext("Move columns"), true); echo " "; // line 25 echo PhpMyAdmin\Util::getIcon("normalize", _gettext("Normalize"), true); echo " "; } // line 28 if ((($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 29 echo " "; if (($context["is_active"] ?? null)) { // line 30 echo " "; // line 31 echo PhpMyAdmin\Util::getIcon("eye", _gettext("Track view"), true); echo " "; } } } public function getTemplateName() { return "table/structure/optional_action_links.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 104 => 31, 99 => 30, 96 => 29, 94 => 28, 88 => 25, 84 => 24, 79 => 22, 76 => 21, 70 => 18, 65 => 17, 62 => 16, 57 => 14, 53 => 12, 51 => 8, 48 => 7, 46 => 6, 42 => 5, 39 => 4, 37 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/optional_action_links.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/optional_action_links.twig"); } } db/login/tmp/twig/c1/c1049d6a9daeb283c6fd4fe4124ade0f8e86b22fee7d135ef9cf326e7d6520aa.php000064400000021706151502156020022360 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
    "; // line 9 if (($context["replication"] ?? null)) { // line 10 echo " "; } // line 12 echo " "; // line 13 if (($context["db_is_system_schema"] ?? null)) { // line 14 echo " "; $context["action_colspan"] = 3; // line 15 echo " "; } else { // line 16 echo " "; $context["action_colspan"] = 6; // line 17 echo " "; } // line 18 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 19 echo " "; $context["action_colspan"] = (($context["action_colspan"] ?? null) + 1); // line 20 echo " "; } // line 21 echo " "; // line 25 echo " "; // line 31 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 32 echo " "; } // line 35 echo " "; // line 36 if (($context["is_show_stats"] ?? null)) { // line 37 echo " "; // line 38 echo " "; // line 40 echo " "; } // line 42 echo " "; // line 43 if (($context["show_charset"] ?? null)) { // line 44 echo " "; } // line 46 echo " "; // line 47 if (($context["show_comment"] ?? null)) { // line 48 echo " "; } // line 50 echo " "; // line 51 if (($context["show_creation"] ?? null)) { // line 52 echo " "; // line 53 echo " "; } // line 55 echo " "; // line 56 if (($context["show_last_update"] ?? null)) { // line 57 echo " "; // line 58 echo " "; } // line 60 echo " "; // line 61 if (($context["show_last_check"] ?? null)) { // line 62 echo " "; // line 63 echo " "; } // line 65 echo " "; // line 68 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["structure_table_rows"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["structure_table_row"]) { // line 69 echo " "; $this->loadTemplate("database/structure/structure_table_row.twig", "database/structure/table_header.twig", 69)->display(twig_to_array($context["structure_table_row"])); // line 70 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['structure_table_row'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 71 echo " "; // line 72 if (($context["body_for_table_summary"] ?? null)) { // line 73 echo " "; $this->loadTemplate("database/structure/body_for_table_summary.twig", "database/structure/table_header.twig", 73)->display(twig_to_array(($context["body_for_table_summary"] ?? null))); // line 74 echo " "; } // line 75 echo "
    "; // line 8 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Table"), "table"); echo ""; echo _gettext("Replication"); echo "env, ($context["action_colspan"] ?? null), "html", null, true); echo "\" class=\"print_ignore\"> "; // line 22 echo _gettext("Action"); // line 23 echo " "; // line 26 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Rows"), "records", "DESC"); echo " "; // line 27 echo PhpMyAdmin\Util::showHint(PhpMyAdmin\Sanitize::sanitize(_gettext("May be approximate. Click on the number to get the exact count. See [doc@faq3-11]FAQ 3.11[/doc]."))); // line 29 echo " "; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Type"), "type"); echo " "; // line 33 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Collation"), "collation"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Size"), "size", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Overhead"), "overhead", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Charset"), "charset"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Comment"), "comment"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Creation"), "creation", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Last update"), "last_update", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Last check"), "last_check", "DESC"); echo "
    "; // line 77 if (($context["check_all_tables"] ?? null)) { // line 78 echo " "; $this->loadTemplate("database/structure/check_all_tables.twig", "database/structure/table_header.twig", 78)->display(twig_to_array(($context["check_all_tables"] ?? null))); } // line 80 echo "
    "; } public function getTemplateName() { return "database/structure/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 233 => 80, 229 => 78, 227 => 77, 223 => 75, 220 => 74, 217 => 73, 215 => 72, 212 => 71, 206 => 70, 203 => 69, 199 => 68, 194 => 65, 188 => 63, 186 => 62, 184 => 61, 181 => 60, 175 => 58, 173 => 57, 171 => 56, 168 => 55, 162 => 53, 160 => 52, 158 => 51, 155 => 50, 149 => 48, 147 => 47, 144 => 46, 138 => 44, 136 => 43, 133 => 42, 127 => 40, 122 => 38, 120 => 37, 118 => 36, 115 => 35, 110 => 33, 105 => 32, 103 => 31, 99 => 29, 97 => 27, 93 => 26, 90 => 25, 87 => 23, 85 => 22, 80 => 21, 77 => 20, 74 => 19, 71 => 18, 68 => 17, 65 => 16, 62 => 15, 59 => 14, 57 => 13, 54 => 12, 48 => 10, 46 => 9, 42 => 8, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/table_header.twig"); } } db/login/tmp/twig/c1/c10e9275d097047e3c6252c9eba5765bf284d8c04eb5520e67369604ea437e3d.php000064400000011745151502156020021431 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " "; // line 3 if (PhpMyAdmin\Util::showIcons("ActionLinksMode")) { // line 4 echo " "; echo PhpMyAdmin\Util::getImage("b_insrow", _gettext("Add column")); echo "  "; } // line 6 echo " "; $context["num_fields"] = ('' === $tmp = "") ? '' : new Markup($tmp, $this->env->getCharset()); // line 9 echo " "; echo sprintf(_gettext("Add %s column(s)"), ($context["num_fields"] ?? null)); echo "   "; // line 12 echo "
    "; } public function getTemplateName() { return "table/structure/add_column.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 108 => 23, 105 => 22, 88 => 19, 84 => 18, 80 => 17, 63 => 16, 60 => 15, 58 => 14, 54 => 12, 48 => 9, 45 => 6, 39 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/add_column.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/add_column.twig"); } } db/login/tmp/twig/c1/c1a2226b5a8ae30e891b092031ebfce7b1a94846809c3403ac5c78f3f9b35457.php000064400000027142151502156020021545 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "table/structure/actions_in_table_structure.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 204 => 140, 199 => 137, 196 => 136, 192 => 134, 186 => 131, 183 => 130, 177 => 127, 174 => 126, 172 => 125, 169 => 124, 167 => 123, 161 => 120, 158 => 119, 156 => 118, 155 => 117, 154 => 116, 153 => 115, 152 => 114, 149 => 113, 146 => 112, 142 => 109, 136 => 107, 130 => 104, 126 => 103, 124 => 102, 122 => 101, 121 => 100, 118 => 99, 115 => 98, 113 => 97, 112 => 96, 111 => 95, 110 => 94, 109 => 93, 108 => 92, 105 => 91, 102 => 89, 100 => 87, 99 => 85, 98 => 84, 97 => 80, 96 => 79, 95 => 77, 94 => 76, 93 => 74, 92 => 73, 90 => 72, 87 => 62, 84 => 60, 82 => 58, 81 => 56, 80 => 55, 79 => 51, 78 => 50, 77 => 46, 76 => 45, 74 => 44, 71 => 42, 69 => 40, 68 => 38, 67 => 37, 66 => 33, 65 => 32, 64 => 30, 63 => 28, 62 => 27, 60 => 26, 57 => 24, 55 => 22, 54 => 20, 53 => 19, 52 => 15, 51 => 14, 50 => 12, 49 => 10, 48 => 9, 46 => 8, 44 => 7, 38 => 4, 35 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/actions_in_table_structure.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/actions_in_table_structure.twig"); } } db/login/tmp/twig/fa/fa249f377795e48c7d92167e29cef2fc31f50401a0bdbc95ddb51c0aec698b9e.php000064400000003366151502156020022242 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/browse_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/browse_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/browse_table.twig"); } } db/login/tmp/twig/81/81e394e2d330dc90d817836833e7c6a3eed4d7eeb96a26e6ae1b85b941f9eb1c.php000064400000002765151502156020022031 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "config/form_display/tabs_bottom.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/tabs_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/tabs_bottom.twig"); } } db/login/tmp/twig/d8/d88f2bfc422151b869c01d881d8585debdde5a216dda6c6cf06343ff4bd7836c.php000064400000004551151502156020022157 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    env, ($context["script_name"] ?? null), "html", null, true); echo "\" name=\"insertForm\" id=\""; echo twig_escape_filter($this->env, ($context["form_id"] ?? null), "html", null, true); echo "\" class=\"ajax lock-page\"> "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["goto"] ?? null), "html", null, true); echo "\" /> env, ($context["script_name"] ?? null), "html", null, true); echo "\" /> "; } public function getTemplateName() { return "table/search/form_tag.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 45 => 4, 41 => 3, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/form_tag.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/form_tag.twig"); } } db/login/tmp/twig/d8/d8d792d519275ac925cff321fcb3e4bea68e413dd46a824d4fd648854eb3d50f.php000064400000004454151502156020022107 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo twig_escape_filter($this->env, ($context["type"] ?? null), "html", null, true); echo " "; // line 3 echo twig_escape_filter($this->env, ($context["name"] ?? null), "html", null, true); echo " env, ($context["field"] ?? null), "html", null, true); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo "\" type=\"text\" /> "; } public function getTemplateName() { return "export/alias_item.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 50 => 8, 42 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "export/alias_item.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/export/alias_item.twig"); } } db/login/tmp/twig/d8/d8a7a9b09d2ddb740e72a7f810178d7388a06eacfb34fbb90daccb76a54f4efe.php000064400000004363151502156020022450 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["sub_tabs"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["tab"]) { // line 3 echo " "; echo PhpMyAdmin\Util::getHtmlTab($context["tab"], ($context["url_params"] ?? null)); echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['tab'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 5 echo "
    "; } public function getTemplateName() { return "secondary_tabs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 46 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "secondary_tabs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/secondary_tabs.twig"); } } db/login/tmp/twig/7b/7b83ffcc46fc18fbaab0120aa16b0b7bd51427ddad1ad637d33e58e56eb11fce.php000064400000015611151502156020022460 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(["db" => // line 3 ($context["db"] ?? null), "table" => // line 4 ($context["table"] ?? null), "sql_query" => // line 5 ($context["sql_query"] ?? null), "goto" => // line 6 ($context["goto"] ?? null), "display_options_form" => 1]); // line 8 echo " "; // line 10 echo PhpMyAdmin\Util::getDivForSliderEffect("", _gettext("Options")); echo "
    "; // line 14 echo " "; echo PhpMyAdmin\Util::getRadioFields("pftext", ["P" => _gettext("Partial texts"), "F" => _gettext("Full texts")], // line 20 ($context["pftext"] ?? null), true, true, "", ("pftext_" . // line 24 ($context["unique_id"] ?? null))); // line 25 echo "
    "; // line 28 if ((($context["relwork"] ?? null) && ($context["displaywork"] ?? null))) { // line 29 echo "
    "; // line 30 echo PhpMyAdmin\Util::getRadioFields("relational_display", ["K" => _gettext("Relational key"), "D" => _gettext("Display column for relationships")], // line 36 ($context["relational_display"] ?? null), true, true, "", ("relational_display_" . // line 40 ($context["unique_id"] ?? null))); // line 41 echo "
    "; } // line 44 echo "
    "; // line 46 $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 46)->display(twig_to_array(["html_field_name" => "display_binary", "label" => _gettext("Show binary contents"), "checked" => !twig_test_empty( // line 49 ($context["display_binary"] ?? null)), "onclick" => false, "html_field_id" => ("display_binary_" . // line 51 ($context["unique_id"] ?? null))])); // line 53 echo " "; $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 53)->display(twig_to_array(["html_field_name" => "display_blob", "label" => _gettext("Show BLOB contents"), "checked" => !twig_test_empty( // line 56 ($context["display_blob"] ?? null)), "onclick" => false, "html_field_id" => ("display_blob_" . // line 58 ($context["unique_id"] ?? null))])); // line 60 echo "
    "; // line 66 echo "
    "; // line 67 $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 67)->display(twig_to_array(["html_field_name" => "hide_transformation", "label" => _gettext("Hide browser transformation"), "checked" => !twig_test_empty( // line 70 ($context["hide_transformation"] ?? null)), "onclick" => false, "html_field_id" => ("hide_transformation_" . // line 72 ($context["unique_id"] ?? null))])); // line 74 echo "
    "; // line 77 if (($context["possible_as_geometry"] ?? null)) { // line 78 echo "
    "; // line 79 echo PhpMyAdmin\Util::getRadioFields("geoOption", ["GEOM" => _gettext("Geometry"), "WKT" => _gettext("Well Known Text"), "WKB" => _gettext("Well Known Binary")], // line 86 ($context["geo_option"] ?? null), true, true, "", ("geoOption_" . // line 90 ($context["unique_id"] ?? null))); // line 91 echo "
    "; } else { // line 94 echo "
    "; // line 95 echo twig_escape_filter($this->env, ($context["possible_as_geometry"] ?? null), "html", null, true); echo " "; // line 96 echo PhpMyAdmin\Util::getRadioFields("geoOption", ["WKT" => _gettext("Well Known Text"), "WKB" => _gettext("Well Known Binary")], // line 102 ($context["geo_option"] ?? null), true, true, "", ("geoOption_" . // line 106 ($context["unique_id"] ?? null))); // line 107 echo "
    "; } // line 110 echo "
    "; // line 117 echo "
    "; } public function getTemplateName() { return "display/results/options_block.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 143 => 117, 138 => 114, 132 => 110, 127 => 107, 125 => 106, 124 => 102, 123 => 96, 119 => 95, 116 => 94, 111 => 91, 109 => 90, 108 => 86, 107 => 79, 104 => 78, 102 => 77, 97 => 74, 95 => 72, 94 => 70, 93 => 67, 90 => 66, 86 => 60, 84 => 58, 83 => 56, 81 => 53, 79 => 51, 78 => 49, 77 => 46, 73 => 44, 68 => 41, 66 => 40, 65 => 36, 64 => 30, 61 => 29, 59 => 28, 54 => 25, 52 => 24, 51 => 20, 49 => 14, 43 => 10, 39 => 8, 37 => 6, 36 => 5, 35 => 4, 34 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/options_block.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/options_block.twig"); } } db/login/tmp/twig/76/76481c8d8c124549abddf4fdd63221617722d04367906d6167f47caac3b2e3d7.php000064400000004523151502156020021431 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\" type=\"text\" name=\"field_comments["; // line 3 echo twig_escape_filter($this->env, ($context["column_number"] ?? null), "html", null, true); echo "]\" size=\"12\" maxlength=\""; // line 5 echo twig_escape_filter($this->env, ($context["max_length"] ?? null), "html", null, true); echo "\" value=\""; // line 6 echo ($context["value"] ?? null); echo "\" class=\"textfield\" /> "; } public function getTemplateName() { return "columns_definitions/column_comment.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 47 => 6, 43 => 5, 38 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_comment.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_comment.twig"); } } db/login/tmp/twig/22/22f328e86274b51eb9034592ac106d133734cc8f4fba3637fe76b0a4b958f16d.php000064400000012033151502156020021410 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 2 if ( !twig_test_empty(($context["class"] ?? null))) { echo " class=\""; echo twig_escape_filter($this->env, ($context["class"] ?? null), "html", null, true); echo "\""; } echo "> "; // line 4 if ((((isset($context["url"]) || array_key_exists("url", $context)) && twig_test_iterable(($context["url"] ?? null))) && !twig_test_empty($this->getAttribute(($context["url"] ?? null), "href", [], "array")))) { // line 5 echo " getAttribute(($context["url"] ?? null), "href", [], "array"))) { echo " href=\""; echo $this->getAttribute(($context["url"] ?? null), "href", [], "array"); echo "\""; } // line 6 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "target", [], "array"))) { echo " target=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "target", [], "array"), "html", null, true); echo "\""; } // line 7 if (( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "target", [], "array")) && ($this->getAttribute(($context["url"] ?? null), "target", [], "array") == "_blank"))) { echo " rel=\"noopener noreferrer\""; } // line 8 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "id", [], "array"))) { echo " id=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "id", [], "array"), "html", null, true); echo "\""; } // line 9 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "class", [], "array"))) { echo " class=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "class", [], "array"), "html", null, true); echo "\""; } // line 10 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "title", [], "array"))) { echo " title=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "title", [], "array"), "html", null, true); echo "\""; } echo "> "; } // line 12 echo " "; echo ($context["content"] ?? null); echo " "; // line 13 if ((((isset($context["url"]) || array_key_exists("url", $context)) && twig_test_iterable(($context["url"] ?? null))) && !twig_test_empty($this->getAttribute(($context["url"] ?? null), "href", [], "array")))) { // line 14 echo " "; } // line 16 echo " "; if ( !twig_test_empty(($context["mysql_help_page"] ?? null))) { // line 17 echo " "; echo PhpMyAdmin\Util::showMySQLDocu(($context["mysql_help_page"] ?? null)); echo " "; } // line 19 echo " "; } public function getTemplateName() { return "list/item.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 106 => 19, 100 => 17, 97 => 16, 93 => 14, 91 => 13, 86 => 12, 77 => 10, 71 => 9, 65 => 8, 61 => 7, 55 => 6, 48 => 5, 46 => 4, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "list/item.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/list/item.twig"); } } db/login/tmp/twig/c9/c916a03c41ea456d5777a282c22fffd9bce9d9c5873be173d122658c88ddcf6c.php000064400000060241151502156020022110 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo "
    "; // line 15 echo " "; $this->loadTemplate("table/structure/table_structure_header.twig", "table/structure/display_structure.twig", 15)->display(twig_to_array(["db_is_system_schema" => // line 16 ($context["db_is_system_schema"] ?? null), "tbl_is_view" => // line 17 ($context["tbl_is_view"] ?? null), "show_column_comments" => // line 18 ($context["show_column_comments"] ?? null)])); // line 20 echo " "; // line 22 echo " "; $context["rownum"] = 0; // line 23 echo " "; $context["columns_list"] = []; // line 24 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["fields"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["row"]) { // line 25 echo " "; $context["rownum"] = (($context["rownum"] ?? null) + 1); // line 26 echo " "; $context["columns_list"] = twig_array_merge(($context["columns_list"] ?? null), [0 => $this->getAttribute($context["row"], "Field", [], "array")]); // line 27 echo " "; $context["field_charset"] = $this->getAttribute($context["row"], "Collation", [], "array"); // line 28 echo " "; // line 29 $context["extracted_columnspec"] = PhpMyAdmin\Util::extractColumnSpec($this->getAttribute($context["row"], "Type", [], "array")); // line 30 echo " "; $context["attribute"] = $this->getAttribute(($context["extracted_columnspec"] ?? null), "attribute", [], "array"); // line 31 echo " "; if ( !(strpos($this->getAttribute($context["row"], "Extra", [], "array"), "on update CURRENT_TIMESTAMP") === false)) { // line 33 echo " "; $context["attribute"] = "on update CURRENT_TIMESTAMP"; // line 34 echo " "; } // line 35 echo " "; // line 36 if ((null === $this->getAttribute($context["row"], "Default", [], "array"))) { // line 37 echo " "; if (($this->getAttribute($context["row"], "Null", [], "array") == "YES")) { // line 38 echo " "; $context["row"] = twig_array_merge($context["row"], ["Default" => "NULL"]); // line 39 echo " "; } // line 40 echo " "; } else { // line 41 echo " "; $context["row"] = twig_array_merge($context["row"], ["Default" => twig_escape_filter($this->env, $this->getAttribute($context["row"], "Default", [], "array"))]); // line 42 echo " "; } // line 43 echo " "; // line 44 $context["field_name"] = twig_escape_filter($this->env, $this->getAttribute($context["row"], "Field", [], "array")); // line 45 echo " "; $context["displayed_field_name"] = ($context["field_name"] ?? null); // line 46 echo " "; // line 47 echo " "; $context["comments"] = ""; // line 48 echo " "; // line 49 echo " "; // line 50 if ($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute($context["row"], "Field", [], "array"), [], "array", true, true)) { // line 51 echo " "; ob_start(function () { return ''; }); // line 52 echo "env, $this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute($context["row"], "Field", [], "array"), [], "array"), "html", null, true); echo "\">"; // line 54 echo ($context["field_name"] ?? null); // line 55 echo ""; $context["displayed_field_name"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 57 echo " "; $context["comments"] = $this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute($context["row"], "Field", [], "array"), [], "array"); // line 58 echo " "; } // line 59 echo " "; // line 60 if ((($context["primary"] ?? null) && $this->getAttribute(($context["primary"] ?? null), "hasColumn", [0 => ($context["field_name"] ?? null)], "method"))) { // line 61 echo " "; $context["displayed_field_name"] = (($context["displayed_field_name"] ?? null) . PhpMyAdmin\Util::getImage("b_primary", _gettext("Primary"))); // line 64 echo " "; } // line 65 echo " "; if (twig_in_filter(($context["field_name"] ?? null), ($context["columns_with_index"] ?? null))) { // line 66 echo " "; $context["displayed_field_name"] = (($context["displayed_field_name"] ?? null) . PhpMyAdmin\Util::getImage("bd_primary", _gettext("Index"))); // line 69 echo " "; } // line 70 echo " "; // line 71 $this->loadTemplate("table/structure/table_structure_row.twig", "table/structure/display_structure.twig", 71)->display(twig_to_array(["row" => // line 72 $context["row"], "rownum" => // line 73 ($context["rownum"] ?? null), "displayed_field_name" => preg_replace("/[\\x00-\\x1F]/", "⁑", // line 77 ($context["displayed_field_name"] ?? null)), "type_nowrap" => PhpMyAdmin\Util::getClassForType($this->getAttribute( // line 79 ($context["extracted_columnspec"] ?? null), "type", [], "array")), "extracted_columnspec" => // line 80 ($context["extracted_columnspec"] ?? null), "attribute" => // line 81 ($context["attribute"] ?? null), "tbl_is_view" => // line 82 ($context["tbl_is_view"] ?? null), "db_is_system_schema" => // line 83 ($context["db_is_system_schema"] ?? null), "url_query" => // line 84 ($context["url_query"] ?? null), "titles" => // line 85 ($context["titles"] ?? null), "table" => // line 86 ($context["table"] ?? null), "tbl_storage_engine" => // line 87 ($context["tbl_storage_engine"] ?? null), "field_charset" => // line 88 ($context["field_charset"] ?? null), "comments" => // line 89 ($context["comments"] ?? null), "show_column_comments" => // line 90 ($context["show_column_comments"] ?? null), "relation_commwork" => // line 91 ($context["relation_commwork"] ?? null), "relation_mimework" => // line 92 ($context["relation_mimework"] ?? null), "browse_mime" => // line 93 ($context["browse_mime"] ?? null)])); // line 95 echo " "; if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 96 echo " "; $this->loadTemplate("table/structure/actions_in_table_structure.twig", "table/structure/display_structure.twig", 96)->display(twig_to_array(["row" => // line 97 $context["row"], "rownum" => // line 98 ($context["rownum"] ?? null), "extracted_columnspec" => // line 99 ($context["extracted_columnspec"] ?? null), "type" => (( !twig_test_empty($this->getAttribute( // line 100 ($context["extracted_columnspec"] ?? null), "print_type", [], "array"))) ? ($this->getAttribute(($context["extracted_columnspec"] ?? null), "print_type", [], "array")) : ("")), "tbl_storage_engine" => // line 101 ($context["tbl_storage_engine"] ?? null), "primary" => // line 102 ($context["primary"] ?? null), "field_name" => // line 103 ($context["field_name"] ?? null), "url_query" => // line 104 ($context["url_query"] ?? null), "titles" => // line 105 ($context["titles"] ?? null), "columns_with_unique_index" => // line 106 ($context["columns_with_unique_index"] ?? null), "is_in_central_columns" => ((twig_in_filter($this->getAttribute( // line 107 $context["row"], "Field", [], "array"), ($context["central_list"] ?? null))) ? (true) : (false)), "central_columns_work" => // line 108 ($context["central_columns_work"] ?? null), "table" => // line 109 ($context["table"] ?? null), "hide_structure_actions" => // line 110 ($context["hide_structure_actions"] ?? null), "mysql_int_version" => // line 111 ($context["mysql_int_version"] ?? null)])); // line 113 echo " "; } // line 114 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['row'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 116 echo "
    "; // line 119 $this->loadTemplate("table/structure/check_all_table_column.twig", "table/structure/display_structure.twig", 119)->display(twig_to_array(["pma_theme_image" => // line 120 ($context["pma_theme_image"] ?? null), "text_dir" => // line 121 ($context["text_dir"] ?? null), "tbl_is_view" => // line 122 ($context["tbl_is_view"] ?? null), "db_is_system_schema" => // line 123 ($context["db_is_system_schema"] ?? null), "tbl_storage_engine" => // line 124 ($context["tbl_storage_engine"] ?? null), "central_columns_work" => // line 125 ($context["central_columns_work"] ?? null)])); // line 127 echo "

    "; // line 129 $this->loadTemplate("table/structure/move_columns_dialog.twig", "table/structure/display_structure.twig", 129)->display(twig_to_array(["db" => // line 130 ($context["db"] ?? null), "table" => // line 131 ($context["table"] ?? null)])); // line 134 echo "
    "; // line 135 if ((($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 136 echo " "; $context["edit_view_url"] = ("view_create.php" . ($context["edit_view_url"] ?? null)); // line 137 echo " "; echo PhpMyAdmin\Util::linkOrButton( // line 138 ($context["edit_view_url"] ?? null), PhpMyAdmin\Util::getIcon("b_edit", _gettext("Edit view"), true)); // line 140 echo " "; } // line 142 echo " "; $this->loadTemplate("table/structure/optional_action_links.twig", "table/structure/display_structure.twig", 142)->display(twig_to_array(["url_query" => // line 143 ($context["url_query"] ?? null), "tbl_is_view" => // line 144 ($context["tbl_is_view"] ?? null), "db_is_system_schema" => // line 145 ($context["db_is_system_schema"] ?? null), "table" => // line 146 ($context["table"] ?? null), "is_active" => // line 147 ($context["is_active"] ?? null), "mysql_int_version" => // line 148 ($context["mysql_int_version"] ?? null), "is_mariadb" => // line 149 ($context["is_mariadb"] ?? null)])); // line 151 echo "
    "; // line 152 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 153 echo " "; $this->loadTemplate("table/structure/add_column.twig", "table/structure/display_structure.twig", 153)->display(twig_to_array(["columns_list" => // line 154 ($context["columns_list"] ?? null), "db" => // line 155 ($context["db"] ?? null), "table" => // line 156 ($context["table"] ?? null)])); } // line 159 echo " "; // line 161 if ((( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null)) && ("ARCHIVE" != // line 162 ($context["tbl_storage_engine"] ?? null)))) { // line 163 echo " "; echo PhpMyAdmin\Index::getHtmlForDisplayIndexes(); echo " "; } // line 165 echo " "; // line 167 if (($context["have_partitioning"] ?? null)) { // line 168 echo " "; // line 169 echo " "; if (( !twig_test_empty(($context["partition_names"] ?? null)) && !(null === $this->getAttribute(($context["partition_names"] ?? null), 0, [], "array")))) { // line 170 echo " "; $context["partitions"] = PhpMyAdmin\Partition::getPartitions(($context["db"] ?? null), ($context["table"] ?? null)); // line 171 echo " "; $context["first_partition"] = $this->getAttribute(($context["partitions"] ?? null), 0, [], "array"); // line 172 echo " "; $context["range_or_list"] = (((($this->getAttribute(($context["first_partition"] ?? null), "getMethod", [], "method") == "RANGE") || ($this->getAttribute( // line 173 ($context["first_partition"] ?? null), "getMethod", [], "method") == "RANGE COLUMNS")) || ($this->getAttribute( // line 174 ($context["first_partition"] ?? null), "getMethod", [], "method") == "LIST")) || ($this->getAttribute( // line 175 ($context["first_partition"] ?? null), "getMethod", [], "method") == "LIST COLUMNS")); // line 176 echo " "; $context["sub_partitions"] = $this->getAttribute(($context["first_partition"] ?? null), "getSubPartitions", [], "method"); // line 177 echo " "; $context["has_sub_partitions"] = $this->getAttribute(($context["first_partition"] ?? null), "hasSubPartitions", [], "method"); // line 178 echo " "; if (($context["has_sub_partitions"] ?? null)) { // line 179 echo " "; $context["first_sub_partition"] = $this->getAttribute(($context["sub_partitions"] ?? null), 0, [], "array"); // line 180 echo " "; } // line 181 echo " "; // line 182 $context["action_icons"] = ["ANALYZE" => PhpMyAdmin\Util::getIcon("b_search", _gettext("Analyze")), "CHECK" => PhpMyAdmin\Util::getIcon("eye", _gettext("Check")), "OPTIMIZE" => PhpMyAdmin\Util::getIcon("normalize", _gettext("Optimize")), "REBUILD" => PhpMyAdmin\Util::getIcon("s_tbl", _gettext("Rebuild")), "REPAIR" => PhpMyAdmin\Util::getIcon("b_tblops", _gettext("Repair")), "TRUNCATE" => PhpMyAdmin\Util::getIcon("b_empty", _gettext("Truncate"))]; // line 190 echo " "; if (($context["range_or_list"] ?? null)) { // line 191 echo " "; $context["action_icons"] = twig_array_merge(($context["action_icons"] ?? null), ["DROP" => PhpMyAdmin\Util::getIcon("b_drop", _gettext("Drop"))]); // line 192 echo " "; } // line 193 echo " "; // line 194 echo PhpMyAdmin\Util::getDivForSliderEffect("partitions", _gettext("Partitions")); echo " "; // line 196 $context["remove_sql"] = (("ALTER TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " REMOVE PARTITIONING"); // line 197 echo " "; $context["remove_url"] = ((("sql.php" . ($context["url_query"] ?? null)) . "&sql_query=") . twig_urlencode_filter(($context["remove_sql"] ?? null))); // line 198 echo " "; // line 199 $this->loadTemplate("table/structure/display_partitions.twig", "table/structure/display_structure.twig", 199)->display(twig_to_array(["db" => // line 200 ($context["db"] ?? null), "table" => // line 201 ($context["table"] ?? null), "url_query" => // line 202 ($context["url_query"] ?? null), "partitions" => // line 203 ($context["partitions"] ?? null), "partition_method" => $this->getAttribute( // line 204 ($context["first_partition"] ?? null), "getMethod", [], "method"), "partition_expression" => $this->getAttribute( // line 205 ($context["first_partition"] ?? null), "getExpression", [], "method"), "has_description" => !twig_test_empty($this->getAttribute( // line 206 ($context["first_partition"] ?? null), "getDescription", [], "method")), "has_sub_partitions" => // line 207 ($context["has_sub_partitions"] ?? null), "sub_partition_method" => (( // line 208 ($context["has_sub_partitions"] ?? null)) ? ($this->getAttribute(($context["first_sub_partition"] ?? null), "getMethod", [], "method")) : ("")), "sub_partition_expression" => (( // line 209 ($context["has_sub_partitions"] ?? null)) ? ($this->getAttribute(($context["first_sub_partition"] ?? null), "getExpression", [], "method")) : ("")), "action_icons" => // line 210 ($context["action_icons"] ?? null), "range_or_list" => // line 211 ($context["range_or_list"] ?? null), "remove_url" => // line 212 ($context["remove_url"] ?? null)])); // line 214 echo " "; } else { // line 215 echo " "; $this->loadTemplate("table/structure/display_partitions.twig", "table/structure/display_structure.twig", 215)->display(twig_to_array(["db" => // line 216 ($context["db"] ?? null), "table" => // line 217 ($context["table"] ?? null)])); // line 219 echo " "; } // line 220 echo " "; // line 221 echo " "; } // line 223 echo " "; // line 225 if (($context["show_stats"] ?? null)) { // line 226 echo " "; echo ($context["table_stats"] ?? null); echo " "; } // line 228 echo "
    "; } public function getTemplateName() { return "table/structure/display_structure.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 421 => 228, 415 => 226, 413 => 225, 410 => 223, 406 => 221, 404 => 220, 401 => 219, 399 => 217, 398 => 216, 396 => 215, 393 => 214, 391 => 212, 390 => 211, 389 => 210, 388 => 209, 387 => 208, 386 => 207, 385 => 206, 384 => 205, 383 => 204, 382 => 203, 381 => 202, 380 => 201, 379 => 200, 378 => 199, 375 => 198, 372 => 197, 370 => 196, 365 => 194, 362 => 193, 359 => 192, 356 => 191, 353 => 190, 351 => 182, 348 => 181, 345 => 180, 342 => 179, 339 => 178, 336 => 177, 333 => 176, 331 => 175, 330 => 174, 329 => 173, 327 => 172, 324 => 171, 321 => 170, 318 => 169, 316 => 168, 314 => 167, 311 => 165, 305 => 163, 303 => 162, 302 => 161, 299 => 159, 296 => 156, 295 => 155, 294 => 154, 292 => 153, 290 => 152, 287 => 151, 285 => 149, 284 => 148, 283 => 147, 282 => 146, 281 => 145, 280 => 144, 279 => 143, 277 => 142, 273 => 140, 271 => 138, 269 => 137, 266 => 136, 264 => 135, 261 => 134, 259 => 131, 258 => 130, 257 => 129, 253 => 127, 251 => 125, 250 => 124, 249 => 123, 248 => 122, 247 => 121, 246 => 120, 245 => 119, 240 => 116, 233 => 114, 230 => 113, 228 => 111, 227 => 110, 226 => 109, 225 => 108, 224 => 107, 223 => 106, 222 => 105, 221 => 104, 220 => 103, 219 => 102, 218 => 101, 217 => 100, 216 => 99, 215 => 98, 214 => 97, 212 => 96, 209 => 95, 207 => 93, 206 => 92, 205 => 91, 204 => 90, 203 => 89, 202 => 88, 201 => 87, 200 => 86, 199 => 85, 198 => 84, 197 => 83, 196 => 82, 195 => 81, 194 => 80, 193 => 79, 192 => 77, 191 => 73, 190 => 72, 189 => 71, 186 => 70, 183 => 69, 180 => 66, 177 => 65, 174 => 64, 171 => 61, 169 => 60, 166 => 59, 163 => 58, 160 => 57, 157 => 55, 155 => 54, 152 => 53, 150 => 52, 147 => 51, 145 => 50, 142 => 49, 140 => 48, 137 => 47, 135 => 46, 132 => 45, 130 => 44, 127 => 43, 124 => 42, 121 => 41, 118 => 40, 115 => 39, 112 => 38, 109 => 37, 107 => 36, 104 => 35, 101 => 34, 98 => 33, 95 => 31, 92 => 30, 90 => 29, 87 => 28, 84 => 27, 81 => 26, 78 => 25, 73 => 24, 70 => 23, 67 => 22, 64 => 20, 62 => 18, 61 => 17, 60 => 16, 58 => 15, 53 => 11, 50 => 10, 47 => 8, 45 => 7, 43 => 6, 41 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/display_structure.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/display_structure.twig"); } } db/login/tmp/twig/5e/5efda5bef354edc861629509c2af48d6fa4d7c8b2066069e32d6297cd238e89c.php000064400000003363151502156020022040 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/search_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/search_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/search_table.twig"); } } db/login/tmp/twig/08/08dd63978d2eb7af0911e6a80dab9b18ec0633899b42a949a91266d50ad51f93.php000064400000003436151502156020021517 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

    "; // line 2 echo _gettext("Format:"); echo "

    "; // line 3 echo ($context["dropdown"] ?? null); echo "
    "; } public function getTemplateName() { return "display/export/format_dropdown.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/format_dropdown.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/format_dropdown.twig"); } } db/login/tmp/twig/c3/c34484a1ece80a38a03398208a02a6c9c564d1fe62351a7d7832d163038d96f4.php000064400000006565151502156020021337 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    env, ($context["parent_div_classes"] ?? null), "html", null, true); echo "\"> "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_array"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content"]) { // line 3 echo " "; if ((isset($context["content"]) || array_key_exists("content", $context))) { // line 4 echo " env, $this->getAttribute($context["content"], 0, [], "array"), "html", null, true); echo "\"> "; // line 5 echo twig_escape_filter($this->env, $this->getAttribute($context["content"], 1, [], "array"), "html", null, true); echo " "; // line 6 if ($this->getAttribute($context["content"], "extraSpan", [], "array", true, true)) { // line 7 echo " : "; echo twig_escape_filter($this->env, $this->getAttribute($context["content"], "extraSpan", [], "array"), "html", null, true); echo " "; } // line 9 echo " "; } // line 11 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 12 echo "
    "; } public function getTemplateName() { return "console/query_action.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 69 => 12, 63 => 11, 59 => 9, 53 => 7, 51 => 6, 47 => 5, 42 => 4, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/query_action.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/query_action.twig"); } } db/login/tmp/twig/bc/bcb7035f13d6840430f8fb71aff1f602ad6e71fc18e33590da7c2ed9c7250b30.php000064400000004105151502156020022027 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

    "; // line 2 echo _gettext("Move the columns by dragging them up and down."); echo "

    "; // line 5 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo "
      "; } public function getTemplateName() { return "table/structure/move_columns_dialog.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 41 => 5, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/move_columns_dialog.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/move_columns_dialog.twig"); } } db/login/tmp/twig/bc/bc23326348cf90d4305cf355481e7b5bc02dcadda7287031e414ec57bbcf024d.php000064400000006154151502156020022023 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " # "; // line 5 echo _gettext("Name"); echo " "; // line 6 echo _gettext("Type"); echo " "; // line 7 echo _gettext("Collation"); echo " "; // line 8 echo _gettext("Attributes"); echo " "; // line 9 echo _gettext("Null"); echo " "; // line 10 echo _gettext("Default"); echo " "; // line 11 if (($context["show_column_comments"] ?? null)) { // line 12 echo ""; echo _gettext("Comments"); echo ""; } // line 14 echo " "; echo _gettext("Extra"); echo " "; // line 16 echo " "; if (( !($context["db_is_system_schema"] ?? null) && !($context["tbl_is_view"] ?? null))) { // line 17 echo " "; echo _gettext("Action"); echo " "; } // line 20 echo " "; } public function getTemplateName() { return "table/structure/table_structure_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 84 => 20, 78 => 18, 75 => 17, 72 => 16, 67 => 14, 62 => 12, 60 => 11, 56 => 10, 52 => 9, 48 => 8, 44 => 7, 40 => 6, 36 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/table_structure_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/table_structure_header.twig"); } } db/login/tmp/twig/f7/f7cf72708d6510b8aae4fe99c15bf5b23091ea7f7de4ae9b63d0de5ec34c5482.php000064400000007141151502156020022236 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["is_zip"] ?? null) || ($context["is_gzip"] ?? null))) { // line 2 echo "
    • "; } else { // line 23 echo " env, ($context["selected_compression"] ?? null), "html", null, true); echo "\"> "; } } public function getTemplateName() { return "display/export/options_output_compression.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 23, 75 => 20, 71 => 18, 69 => 17, 65 => 16, 63 => 15, 60 => 14, 56 => 12, 54 => 11, 50 => 10, 48 => 9, 46 => 8, 42 => 7, 38 => 5, 36 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_compression.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_compression.twig"); } } db/login/tmp/twig/48/48a573d7eed67021ea97956739d952d74698a381585cad8e37a55c2c98e28638.php000064400000005235151502156020021276 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($context["display_logo"] ?? null)) { // line 2 echo " "; } } public function getTemplateName() { return "navigation/logo.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 57 => 11, 53 => 9, 51 => 8, 46 => 7, 41 => 5, 37 => 4, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "navigation/logo.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/navigation/logo.twig"); } } db/login/tmp/twig/48/485b3b69d2b7f93d18aac7fe92a1cf0fc7c40391c80726ddc629c460c73d67d4.php000064400000012105151502156020021731 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 16 if ((($context["char_editing"] ?? null) == "textarea")) { // line 17 echo " "; ob_start(function () { return ''; }); // line 18 echo " "; $___internal_c48f410f880491d5acc0fed7bb8d64a02caa0752b64437fbc829ef0b4c803c9f_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 17 echo twig_spaceless($___internal_c48f410f880491d5acc0fed7bb8d64a02caa0752b64437fbc829ef0b4c803c9f_); } else { // line 25 echo " env, ($context["column_number"] ?? null), "html", null, true); echo "]\" size=\"12\" value=\""; // line 28 echo twig_escape_filter($this->env, ($context["expression"] ?? null), "html", null, true); echo "\" placeholder=\""; // line 29 echo _gettext("Expression"); echo "\" class=\"textfield expression\" /> "; } } public function getTemplateName() { return "columns_definitions/column_virtuality.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 106 => 29, 102 => 28, 97 => 26, 94 => 25, 91 => 17, 85 => 21, 78 => 18, 75 => 17, 73 => 16, 69 => 14, 60 => 11, 57 => 10, 54 => 9, 52 => 8, 51 => 7, 50 => 6, 46 => 5, 42 => 4, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_virtuality.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_virtuality.twig"); } } db/login/tmp/twig/2e/2e6ed961bffa8943f6419f806fe7bfc2232df52e39c5880878e7f34aae869dd9.php000064400000004035151502156020022062 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["group"] ?? null), "html", null, true); echo "\"> env, ($context["colspan"] ?? null), "html", null, true); echo "\"> "; // line 3 echo twig_escape_filter($this->env, ($context["header_text"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "config/form_display/group_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/group_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/group_header.twig"); } } db/login/tmp/twig/ce/ce1e7699169cccdccb45b86f82fe991e789367c65b5b6e96c09c35a537c140cf.php000064400000032014151502156020022126 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "\$( function() { "; // line 3 echo " \$(\"#buttonGo\").bind(\"click\", function() { "; // line 5 echo " \$(\"#upload_form_form\").css(\"display\", \"none\"); "; // line 7 if ((($context["handler"] ?? null) != "PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin")) { // line 8 echo " "; // line 9 echo " "; $context["ajax_url"] = (("import_status.php?id=" . ($context["upload_id"] ?? null)) . PhpMyAdmin\Url::getCommonRaw(["import_status" => 1], "&")); // line 12 echo " "; $context["promot_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers."), false); // line 16 echo " "; $context["statustext_str"] = PhpMyAdmin\Sanitize::escapeJsString(_gettext("%s of %s")); // line 17 echo " "; $context["second_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("%s/sec."), false); // line 18 echo " "; $context["remaining_min"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("About %MIN min. %SEC sec. remaining."), false); // line 19 echo " "; $context["remaining_second"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("About %SEC sec. remaining."), false); // line 20 echo " "; $context["processed_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("The file is being processed, please be patient."), false); // line 24 echo " "; $context["import_url"] = PhpMyAdmin\Url::getCommonRaw(["import_status" => 1], "&"); // line 25 echo " "; // line 26 ob_start(function () { return ''; }); // line 27 echo " "; ob_start(function () { return ''; }); // line 28 echo "
      env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo PhpMyAdmin\Sanitize::jsFormat(_gettext("Uploading your import file…"), false); // line 37 echo "
      "; $___internal_91113cdbde9beb93431482451714f4142bd2a9567edfd728960c8415376d575f_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 27 echo twig_spaceless($___internal_91113cdbde9beb93431482451714f4142bd2a9567edfd728960c8415376d575f_); // line 41 echo " "; $context["upload_html"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 42 echo " "; // line 44 echo " var finished = false; var percent = 0.0; var total = 0; var complete = 0; var original_title = parent && parent.document ? parent.document.title : false; var import_start; var perform_upload = function () { new \$.getJSON( \""; // line 53 echo ($context["ajax_url"] ?? null); echo "\", {}, function(response) { finished = response.finished; percent = response.percent; total = response.total; complete = response.complete; if (total==0 && complete==0 && percent==0) { \$(\"#upload_form_status_info\").html('env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo ($context["promot_str"] ?? null); echo "'); \$(\"#upload_form_status\").css(\"display\", \"none\"); } else { var now = new Date(); now = Date.UTC( now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()) + now.getMilliseconds() - 1000; var statustext = PMA_sprintf( \""; // line 75 echo ($context["statustext_str"] ?? null); echo "\", formatBytes( complete, 1, PMA_messages.strDecimalSeparator ), formatBytes( total, 1, PMA_messages.strDecimalSeparator ) ); if (\$(\"#importmain\").is(\":visible\")) { "; // line 86 echo " \$(\"#importmain\").hide(); \$(\"#import_form_status\") .html('"; // line 88 echo ($context["upload_html"] ?? null); echo "') .show(); import_start = now; } else if (percent > 9 || complete > 2000000) { "; // line 94 echo " var used_time = now - import_start; var seconds = parseInt(((total - complete) / complete) * used_time / 1000); var speed = PMA_sprintf( \""; // line 97 echo ($context["second_str"] ?? null); echo "\", formatBytes(complete / used_time * 1000, 1, PMA_messages.strDecimalSeparator) ); var minutes = parseInt(seconds / 60); seconds %= 60; var estimated_time; if (minutes > 0) { estimated_time = \""; // line 105 echo ($context["remaining_min"] ?? null); echo "\" .replace(\"%MIN\", minutes) .replace(\"%SEC\", seconds); } else { estimated_time = \""; // line 110 echo ($context["remaining_second"] ?? null); echo "\" .replace(\"%SEC\", seconds); } statustext += \"
      \" + speed + \"

      \" + estimated_time; } var percent_str = Math.round(percent) + \"%\"; \$(\"#status\").animate({width: percent_str}, 150); \$(\".percentage\").text(percent_str); "; // line 122 echo " if (original_title !== false) { parent.document.title = percent_str + \" - \" + original_title; } else { document.title = percent_str + \" - \" + original_title; } \$(\"#statustext\").html(statustext); } if (finished == true) { if (original_title !== false) { parent.document.title = original_title; } else { document.title = original_title; } \$(\"#importmain\").hide(); "; // line 142 echo " \$(\"#import_form_status\") .html('env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo ($context["processed_str"] ?? null); echo "') .show(); \$(\"#import_form_status\").load(\"import_status.php?message=true&"; // line 145 echo ($context["import_url"] ?? null); echo "\"); PMA_reloadNavigation(); "; // line 149 echo " } else { setTimeout(perform_upload, 1000); } }); }; setTimeout(perform_upload, 1000); "; } else { // line 157 echo " "; // line 158 echo " "; ob_start(function () { return ''; }); // line 159 echo "env, ($context["pma_theme_image"] ?? null), "html", null, true); // line 160 echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" />"; // line 161 echo PhpMyAdmin\Sanitize::jsFormat(_gettext("Please be patient, the file is being uploaded. Details about the upload are not available."), false); // line 165 echo PhpMyAdmin\Util::showDocu("faq", "faq2-9"); $context["image_tag"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 167 echo " \$('#upload_form_status_info').html('"; echo ($context["image_tag"] ?? null); echo "'); \$(\"#upload_form_status\").css(\"display\", \"none\"); "; } // line 170 echo " }); }); "; } public function getTemplateName() { return "display/import/javascript.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 277 => 170, 270 => 167, 267 => 165, 265 => 161, 263 => 160, 260 => 159, 257 => 158, 255 => 157, 245 => 149, 239 => 145, 232 => 143, 229 => 142, 208 => 122, 194 => 110, 186 => 105, 175 => 97, 170 => 94, 162 => 88, 158 => 86, 145 => 75, 127 => 62, 115 => 53, 104 => 44, 101 => 42, 98 => 41, 96 => 27, 90 => 37, 86 => 36, 76 => 28, 73 => 27, 71 => 26, 68 => 25, 65 => 24, 62 => 20, 59 => 19, 56 => 18, 53 => 17, 50 => 16, 47 => 12, 44 => 9, 42 => 8, 40 => 7, 36 => 5, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/import/javascript.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/import/javascript.twig"); } } db/login/tmp/twig/33/3332dd5ec23e06d91b466c91dd2d22b84eeb240eedd943cd72cf6588c31816ac.php000064400000043153151502156020021772 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" class=\"hide\" />
      env, ($context["id_key"] ?? null), "html", null, true); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["upload_id"] ?? null), "html", null, true); echo "\" /> "; // line 27 if ((($context["import_type"] ?? null) == "server")) { // line 28 echo " "; echo PhpMyAdmin\Url::getHiddenInputs("", "", 1); echo " "; } elseif (( // line 29 ($context["import_type"] ?? null) == "database")) { // line 30 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), "", 1); echo " "; } else { // line 32 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 34 echo " env, ($context["import_type"] ?? null), "html", null, true); echo "\" />

      "; // line 38 echo PhpMyAdmin\Util::getImage("b_import", _gettext("Import")); echo " "; // line 39 if ((($context["import_type"] ?? null) == "server")) { // line 40 echo " "; echo _gettext("Importing into the current server"); // line 41 echo " "; } elseif ((($context["import_type"] ?? null) == "database")) { // line 42 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Importing into the database \"%s\""), ($context["db"] ?? null)), "html", null, true); echo " "; } else { // line 44 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Importing into the table \"%s\""), ($context["table"] ?? null)), "html", null, true); echo " "; } // line 46 echo "

      "; // line 50 echo _gettext("File to import:"); echo "

      "; // line 53 echo " "; if ( !twig_test_empty(($context["compressions"] ?? null))) { // line 54 echo "

      "; // line 56 echo twig_escape_filter($this->env, sprintf(_gettext("File may be compressed (%s) or uncompressed."), twig_join_filter(($context["compressions"] ?? null), ", ")), "html", null, true); echo "
      "; // line 58 echo _gettext("A compressed file's name must end in .[format].[compression]. Example: .sql.zip"); // line 59 echo "

      "; } // line 62 echo "
      "; // line 64 if ((($context["is_upload"] ?? null) && !twig_test_empty(($context["upload_dir"] ?? null)))) { // line 65 echo "
      • "; // line 68 echo PhpMyAdmin\Util::getBrowseUploadFileBlock(($context["max_upload_size"] ?? null)); echo " "; // line 69 echo _gettext("You may also drag and drop a file on any page."); // line 70 echo "
      • "; // line 76 echo PhpMyAdmin\Util::getSelectUploadFileBlock( // line 77 ($context["import_list"] ?? null), // line 78 ($context["upload_dir"] ?? null)); // line 79 echo "
      "; } elseif ( // line 82 ($context["is_upload"] ?? null)) { // line 83 echo " "; echo PhpMyAdmin\Util::getBrowseUploadFileBlock(($context["max_upload_size"] ?? null)); echo "

      "; // line 84 echo _gettext("You may also drag and drop a file on any page."); echo "

      "; } elseif ( ! // line 85 ($context["is_upload"] ?? null)) { // line 86 echo " "; echo call_user_func_array($this->env->getFunction('Message_notice')->getCallable(), [_gettext("File uploads are not allowed on this server.")]); echo " "; } elseif ( !twig_test_empty( // line 87 ($context["upload_dir"] ?? null))) { // line 88 echo " "; echo PhpMyAdmin\Util::getSelectUploadFileBlock( // line 89 ($context["import_list"] ?? null), // line 90 ($context["upload_dir"] ?? null)); // line 91 echo " "; } // line 93 echo "
      "; // line 97 echo " "; // line 98 if (($context["is_encoding_supported"] ?? null)) { // line 99 echo " "; } else { // line 111 echo " "; echo PhpMyAdmin\Charsets::getCharsetDropdownBox( // line 112 ($context["dbi"] ?? null), // line 113 ($context["disable_is"] ?? null), "charset_of_file", "charset_of_file", "utf8", false); // line 118 echo " "; } // line 120 echo "

      "; // line 124 echo _gettext("Partial import:"); echo "

      "; // line 126 if (((isset($context["timeout_passed"]) || array_key_exists("timeout_passed", $context)) && ($context["timeout_passed"] ?? null))) { // line 127 echo "
      env, ($context["offset"] ?? null), "html", null, true); echo "\" /> "; // line 129 echo twig_escape_filter($this->env, sprintf(_gettext("Previous import timed out, after resubmitting will continue from position %d."), ($context["offset"] ?? null)), "html", null, true); echo "
      "; } // line 132 echo "
      "; // line 141 if ( !((isset($context["timeout_passed"]) || array_key_exists("timeout_passed", $context)) && ($context["timeout_passed"] ?? null))) { // line 142 echo "
      "; } else { // line 151 echo " "; // line 154 echo " "; } // line 158 echo "

      "; // line 161 echo _gettext("Other options:"); echo "

      "; // line 163 echo PhpMyAdmin\Util::getFKCheckbox(); echo "

      "; // line 168 echo _gettext("Format:"); echo "

      "; // line 169 echo PhpMyAdmin\Plugins::getChoice("Import", "format", ($context["import_list"] ?? null)); echo "

      "; // line 174 echo _gettext("Format-specific options:"); echo "

      "; // line 176 echo _gettext("Scroll down to fill in the options for the selected format and ignore the options for other formats."); // line 177 echo "

      "; // line 178 echo PhpMyAdmin\Plugins::getOptions("Import", ($context["import_list"] ?? null)); echo "
      "; // line 183 echo " "; if (($context["can_convert_kanji"] ?? null)) { // line 184 echo "

      "; // line 185 echo _gettext("Encoding Conversion:"); echo "

      "; // line 186 $this->loadTemplate("encoding/kanji_encoding_form.twig", "display/import/import.twig", 186)->display($context); // line 187 echo "
      "; } // line 189 echo "
      "; } public function getTemplateName() { return "display/import/import.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 416 => 191, 412 => 189, 408 => 187, 406 => 186, 402 => 185, 399 => 184, 396 => 183, 389 => 178, 386 => 177, 384 => 176, 379 => 174, 371 => 169, 367 => 168, 359 => 163, 354 => 161, 349 => 158, 345 => 156, 343 => 155, 341 => 154, 339 => 151, 334 => 148, 332 => 147, 329 => 145, 327 => 144, 323 => 142, 321 => 141, 316 => 138, 314 => 137, 309 => 135, 304 => 132, 298 => 129, 294 => 128, 291 => 127, 289 => 126, 284 => 124, 278 => 120, 274 => 118, 272 => 113, 271 => 112, 269 => 111, 265 => 109, 256 => 106, 253 => 105, 249 => 104, 247 => 103, 246 => 102, 241 => 101, 237 => 100, 234 => 99, 232 => 98, 227 => 97, 222 => 93, 218 => 91, 216 => 90, 215 => 89, 213 => 88, 211 => 87, 206 => 86, 204 => 85, 200 => 84, 195 => 83, 193 => 82, 188 => 79, 186 => 78, 185 => 77, 184 => 76, 181 => 75, 178 => 74, 176 => 73, 172 => 70, 170 => 69, 166 => 68, 161 => 65, 159 => 64, 155 => 62, 150 => 59, 148 => 58, 143 => 56, 139 => 54, 136 => 53, 131 => 50, 125 => 46, 119 => 44, 113 => 42, 110 => 41, 107 => 40, 105 => 39, 101 => 38, 93 => 34, 87 => 32, 81 => 30, 79 => 29, 74 => 28, 72 => 27, 66 => 26, 62 => 24, 59 => 23, 57 => 22, 47 => 13, 45 => 11, 44 => 10, 43 => 9, 42 => 8, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/import/import.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/import/import.twig"); } } db/login/tmp/twig/b7/b703dad4e80a44e3c9859bf55114aa9faa1db83eaff76a10be4e5d4eb207705d.php000064400000004363151502156020022262 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["sub_tabs"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["tab"]) { // line 3 echo " "; echo PhpMyAdmin\Util::getHtmlTab($context["tab"], ($context["url_params"] ?? null)); echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['tab'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 5 echo "
      "; } public function getTemplateName() { return "secondary_tabs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 46 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "secondary_tabs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/secondary_tabs.twig"); } } db/login/tmp/twig/b7/b74fdba4bd4fc090cfb345bae507cef9e6b8cf10a0491d84a0d02d41babf3182.php000064400000011613151502156020022375 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Rows:"); echo "

        • env, ($context["limit_to"] ?? null), "html", null, true); echo " "; } elseif (( !twig_test_empty( // line 15 ($context["unlim_num_rows"] ?? null)) && (($context["unlim_num_rows"] ?? null) != 0))) { // line 16 echo " "; echo twig_escape_filter($this->env, ($context["unlim_num_rows"] ?? null), "html", null, true); echo " "; } else { // line 18 echo " "; echo twig_escape_filter($this->env, ($context["number_of_rows"] ?? null), "html", null, true); echo " "; } // line 20 echo " "; $___internal_141ad1a69e8c2b55d7c930a93cdd34a27ce71e28f9589266ce0f78a7c9aad9c9_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 12 echo twig_spaceless($___internal_141ad1a69e8c2b55d7c930a93cdd34a27ce71e28f9589266ce0f78a7c9aad9c9_); // line 20 echo "\" onfocus=\"this.select()\">
        • env, ($context["limit_from"] ?? null), "html", null, true))) : (print (0))); echo "\" onfocus=\"this.select()\">
      "; } public function getTemplateName() { return "display/export/options_rows.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 103 => 32, 99 => 31, 91 => 25, 87 => 23, 82 => 20, 80 => 12, 77 => 20, 71 => 18, 65 => 16, 63 => 15, 58 => 14, 55 => 13, 53 => 12, 49 => 10, 43 => 7, 39 => 6, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_rows.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_rows.twig"); } } db/login/tmp/twig/f4/f4dac4ac187ce563d58362b0b69e4dbd99c3ba951c72ea9844e33033f148bf66.php000064400000004774151502156020022024 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • env, ($context["filename_template"] ?? null), "html", null, true); echo "\">
    • "; } public function getTemplateName() { return "display/export/options_output_format.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 53 => 12, 51 => 11, 46 => 9, 42 => 7, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_format.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_format.twig"); } } db/login/tmp/twig/a9/a927a03f526e74569a85726f443090f84a8f992c64804bf95044d29445dce688.php000064400000005055151502156020021175 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context["colspan"] = 2; // line 2 if (($context["is_setup"] ?? null)) { // line 3 echo " "; $context["colspan"] = (($context["colspan"] ?? null) + 1); } // line 5 if (($context["show_buttons"] ?? null)) { // line 6 echo " env, ($context["colspan"] ?? null), "html", null, true); echo "\" class=\"lastrow\"> "; } // line 13 echo " "; } public function getTemplateName() { return "config/form_display/fieldset_bottom.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 13, 51 => 9, 47 => 8, 43 => 7, 40 => 6, 38 => 5, 34 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/fieldset_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/fieldset_bottom.twig"); } } db/login/tmp/twig/a9/a93de3be313f72575577bc39a36ba706434a9821dbfdcfc02bc3accf52a3d530.php000064400000002766151502156020022123 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "config/form_display/form_bottom.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/form_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/form_bottom.twig"); } } db/login/tmp/twig/a8/a8ae10bc9f041a1c2e3b234f8df4e35092e124641ebfccdb2b12b40f2577d3f6.php000064400000011751151502156020022077 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 echo " "; // line 29 echo "
      env, ($context["max_plot_limit"] ?? null), "html", null, true); echo "\" />
      "; } public function getTemplateName() { return "table/search/options_zoom.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 108 => 40, 99 => 33, 97 => 32, 92 => 29, 87 => 25, 81 => 24, 75 => 21, 70 => 20, 64 => 17, 59 => 16, 56 => 15, 52 => 14, 49 => 13, 47 => 12, 40 => 7, 38 => 6, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/options_zoom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/options_zoom.twig"); } } db/login/tmp/twig/d9/d9ea5d41ecfcaf4b2e4aac60205029d0d08579f9991cec3e9f669af99575e11a.php000064400000006565151502156020022177 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["parent_div_classes"] ?? null), "html", null, true); echo "\"> "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_array"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content"]) { // line 3 echo " "; if ((isset($context["content"]) || array_key_exists("content", $context))) { // line 4 echo " env, $this->getAttribute($context["content"], 0, [], "array"), "html", null, true); echo "\"> "; // line 5 echo twig_escape_filter($this->env, $this->getAttribute($context["content"], 1, [], "array"), "html", null, true); echo " "; // line 6 if ($this->getAttribute($context["content"], "extraSpan", [], "array", true, true)) { // line 7 echo " : "; echo twig_escape_filter($this->env, $this->getAttribute($context["content"], "extraSpan", [], "array"), "html", null, true); echo " "; } // line 9 echo " "; } // line 11 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 12 echo "
      "; } public function getTemplateName() { return "console/query_action.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 69 => 12, 63 => 11, 59 => 9, 53 => 7, 51 => 6, 47 => 5, 42 => 4, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/query_action.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/query_action.twig"); } } db/login/tmp/twig/4b/4bef49c8c9d48df4af9b06c54fd0916def870e8ed6d67389cd80090805a43e03.php000064400000005625151502156020022042 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["export_method"] ?? null) != "custom-no-form")) { // line 2 echo "

      "; // line 3 echo _gettext("Export method:"); echo "

      "; } } public function getTemplateName() { return "display/export/method.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 61 => 18, 59 => 17, 54 => 15, 48 => 10, 46 => 9, 41 => 7, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/method.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/method.twig"); } } db/login/tmp/twig/b5/b5d7690f128bc383cbe1302ae1864ae5dbc2298f9612ed1667a98460a46e12b8.php000064400000006661151502156020021564 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 $this->loadTemplate("table/search/table_header.twig", "table/search/fields_table.twig", 2)->display(twig_to_array(["geom_column_flag" => // line 3 ($context["geom_column_flag"] ?? null)])); // line 5 echo " "; // line 6 if ((($context["search_type"] ?? null) == "zoom")) { // line 7 echo " "; $this->loadTemplate("table/search/rows_zoom.twig", "table/search/fields_table.twig", 7)->display(twig_to_array(["self" => // line 8 ($context["self"] ?? null), "column_names" => // line 9 ($context["column_names"] ?? null), "criteria_column_names" => // line 10 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 11 ($context["criteria_column_types"] ?? null)])); // line 13 echo " "; } else { // line 14 echo " "; $this->loadTemplate("table/search/rows_normal.twig", "table/search/fields_table.twig", 14)->display(twig_to_array(["self" => // line 15 ($context["self"] ?? null), "geom_column_flag" => // line 16 ($context["geom_column_flag"] ?? null), "column_names" => // line 17 ($context["column_names"] ?? null), "column_types" => // line 18 ($context["column_types"] ?? null), "column_collations" => // line 19 ($context["column_collations"] ?? null)])); // line 21 echo " "; } // line 22 echo "
      "; } public function getTemplateName() { return "table/search/fields_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 64 => 22, 61 => 21, 59 => 19, 58 => 18, 57 => 17, 56 => 16, 55 => 15, 53 => 14, 50 => 13, 48 => 11, 47 => 10, 46 => 9, 45 => 8, 43 => 7, 41 => 6, 38 => 5, 36 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/fields_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/fields_table.twig"); } } db/login/tmp/twig/b5/b56b406a24364f88325a4abefaba525f3355222cd85457ef2f758f93580324fb.php000064400000015251151502156020021501 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "arrow_"; echo twig_escape_filter($this->env, ($context["text_dir"] ?? null), "html", null, true); echo ".png\" width=\"38\" height=\"22\" alt=\""; echo _gettext("With selected:"); echo "\" /> "; // line 5 if ((($context["overhead_check"] ?? null) != "")) { // line 6 echo " / "; echo _gettext("Check tables having overhead"); echo " "; } // line 8 echo " "; // line 39 echo twig_join_filter(($context["hidden_fields"] ?? null), " "); echo "
      "; } public function getTemplateName() { return "database/structure/check_all_tables.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 162 => 39, 159 => 38, 153 => 35, 149 => 34, 145 => 33, 140 => 32, 137 => 31, 131 => 28, 127 => 27, 123 => 26, 119 => 25, 114 => 23, 110 => 22, 106 => 21, 102 => 20, 98 => 19, 94 => 18, 89 => 16, 85 => 15, 80 => 14, 78 => 13, 74 => 12, 70 => 11, 66 => 10, 60 => 9, 57 => 8, 51 => 6, 49 => 5, 45 => 4, 41 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/check_all_tables.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/check_all_tables.twig"); } } db/login/tmp/twig/d4/d46a8543932790b9a7d42742388b0482e3fd4bf2136687f7328eec3aaa1dd1fe.php000064400000014146151502156020021574 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 3 ob_start(function () { return ''; }); echo _pgettext( "for default", "None"); $context["translation"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 4 $context["default_options"] = ["NONE" => // line 5 ($context["translation"] ?? null), "USER_DEFINED" => _gettext("As defined:"), "NULL" => "NULL", "CURRENT_TIMESTAMP" => "CURRENT_TIMESTAMP"]; // line 10 echo " "; // line 12 $context["default_value"] = ""; // line 13 if ($this->getAttribute(($context["column_meta"] ?? null), "DefaultValue", [], "array", true, true)) { // line 14 echo " "; $context["default_value"] = $this->getAttribute(($context["column_meta"] ?? null), "DefaultValue", [], "array"); } // line 16 if ((($context["type_upper"] ?? null) == "BIT")) { // line 17 echo " "; $context["default_value"] = PhpMyAdmin\Util::convertBitDefaultValue($this->getAttribute(($context["column_meta"] ?? null), "DefaultValue", [], "array")); } elseif ((( // line 18 ($context["type_upper"] ?? null) == "BINARY") || (($context["type_upper"] ?? null) == "VARBINARY"))) { // line 19 echo " "; $context["default_value"] = bin2hex($this->getAttribute(($context["column_meta"] ?? null), "DefaultValue", [], "array")); } // line 21 echo " "; // line 35 if ((($context["char_editing"] ?? null) == "textarea")) { // line 36 echo " "; } else { // line 41 echo " env, ($context["column_number"] ?? null), "html", null, true); echo "]\" size=\"12\" value=\""; // line 44 echo twig_escape_filter($this->env, ($context["default_value"] ?? null), "html", null, true); echo "\" class=\"textfield default_value\" /> "; } } public function getTemplateName() { return "columns_definitions/column_default.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 124 => 44, 119 => 42, 116 => 41, 111 => 39, 104 => 36, 102 => 35, 99 => 34, 90 => 31, 87 => 30, 84 => 29, 82 => 28, 81 => 27, 77 => 26, 73 => 25, 66 => 23, 62 => 22, 59 => 21, 55 => 19, 53 => 18, 50 => 17, 48 => 16, 44 => 14, 42 => 13, 40 => 12, 37 => 10, 35 => 5, 34 => 4, 30 => 3,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_default.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_default.twig"); } } db/login/tmp/twig/53/537d1b26b7e19c67d8df9de364d4c137d9fcc48351c776019fc0833bcae5e87b.php000064400000060241151502156020021747 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo "
      "; // line 15 echo " "; $this->loadTemplate("table/structure/table_structure_header.twig", "table/structure/display_structure.twig", 15)->display(twig_to_array(["db_is_system_schema" => // line 16 ($context["db_is_system_schema"] ?? null), "tbl_is_view" => // line 17 ($context["tbl_is_view"] ?? null), "show_column_comments" => // line 18 ($context["show_column_comments"] ?? null)])); // line 20 echo " "; // line 22 echo " "; $context["rownum"] = 0; // line 23 echo " "; $context["columns_list"] = []; // line 24 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["fields"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["row"]) { // line 25 echo " "; $context["rownum"] = (($context["rownum"] ?? null) + 1); // line 26 echo " "; $context["columns_list"] = twig_array_merge(($context["columns_list"] ?? null), [0 => $this->getAttribute($context["row"], "Field", [], "array")]); // line 27 echo " "; $context["field_charset"] = $this->getAttribute($context["row"], "Collation", [], "array"); // line 28 echo " "; // line 29 $context["extracted_columnspec"] = PhpMyAdmin\Util::extractColumnSpec($this->getAttribute($context["row"], "Type", [], "array")); // line 30 echo " "; $context["attribute"] = $this->getAttribute(($context["extracted_columnspec"] ?? null), "attribute", [], "array"); // line 31 echo " "; if ( !(strpos($this->getAttribute($context["row"], "Extra", [], "array"), "on update CURRENT_TIMESTAMP") === false)) { // line 33 echo " "; $context["attribute"] = "on update CURRENT_TIMESTAMP"; // line 34 echo " "; } // line 35 echo " "; // line 36 if ((null === $this->getAttribute($context["row"], "Default", [], "array"))) { // line 37 echo " "; if (($this->getAttribute($context["row"], "Null", [], "array") == "YES")) { // line 38 echo " "; $context["row"] = twig_array_merge($context["row"], ["Default" => "NULL"]); // line 39 echo " "; } // line 40 echo " "; } else { // line 41 echo " "; $context["row"] = twig_array_merge($context["row"], ["Default" => twig_escape_filter($this->env, $this->getAttribute($context["row"], "Default", [], "array"))]); // line 42 echo " "; } // line 43 echo " "; // line 44 $context["field_name"] = twig_escape_filter($this->env, $this->getAttribute($context["row"], "Field", [], "array")); // line 45 echo " "; $context["displayed_field_name"] = ($context["field_name"] ?? null); // line 46 echo " "; // line 47 echo " "; $context["comments"] = ""; // line 48 echo " "; // line 49 echo " "; // line 50 if ($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute($context["row"], "Field", [], "array"), [], "array", true, true)) { // line 51 echo " "; ob_start(function () { return ''; }); // line 52 echo "env, $this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute($context["row"], "Field", [], "array"), [], "array"), "html", null, true); echo "\">"; // line 54 echo ($context["field_name"] ?? null); // line 55 echo ""; $context["displayed_field_name"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 57 echo " "; $context["comments"] = $this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute($context["row"], "Field", [], "array"), [], "array"); // line 58 echo " "; } // line 59 echo " "; // line 60 if ((($context["primary"] ?? null) && $this->getAttribute(($context["primary"] ?? null), "hasColumn", [0 => ($context["field_name"] ?? null)], "method"))) { // line 61 echo " "; $context["displayed_field_name"] = (($context["displayed_field_name"] ?? null) . PhpMyAdmin\Util::getImage("b_primary", _gettext("Primary"))); // line 64 echo " "; } // line 65 echo " "; if (twig_in_filter(($context["field_name"] ?? null), ($context["columns_with_index"] ?? null))) { // line 66 echo " "; $context["displayed_field_name"] = (($context["displayed_field_name"] ?? null) . PhpMyAdmin\Util::getImage("bd_primary", _gettext("Index"))); // line 69 echo " "; } // line 70 echo " "; // line 71 $this->loadTemplate("table/structure/table_structure_row.twig", "table/structure/display_structure.twig", 71)->display(twig_to_array(["row" => // line 72 $context["row"], "rownum" => // line 73 ($context["rownum"] ?? null), "displayed_field_name" => preg_replace("/[\\x00-\\x1F]/", "⁑", // line 77 ($context["displayed_field_name"] ?? null)), "type_nowrap" => PhpMyAdmin\Util::getClassForType($this->getAttribute( // line 79 ($context["extracted_columnspec"] ?? null), "type", [], "array")), "extracted_columnspec" => // line 80 ($context["extracted_columnspec"] ?? null), "attribute" => // line 81 ($context["attribute"] ?? null), "tbl_is_view" => // line 82 ($context["tbl_is_view"] ?? null), "db_is_system_schema" => // line 83 ($context["db_is_system_schema"] ?? null), "url_query" => // line 84 ($context["url_query"] ?? null), "titles" => // line 85 ($context["titles"] ?? null), "table" => // line 86 ($context["table"] ?? null), "tbl_storage_engine" => // line 87 ($context["tbl_storage_engine"] ?? null), "field_charset" => // line 88 ($context["field_charset"] ?? null), "comments" => // line 89 ($context["comments"] ?? null), "show_column_comments" => // line 90 ($context["show_column_comments"] ?? null), "relation_commwork" => // line 91 ($context["relation_commwork"] ?? null), "relation_mimework" => // line 92 ($context["relation_mimework"] ?? null), "browse_mime" => // line 93 ($context["browse_mime"] ?? null)])); // line 95 echo " "; if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 96 echo " "; $this->loadTemplate("table/structure/actions_in_table_structure.twig", "table/structure/display_structure.twig", 96)->display(twig_to_array(["row" => // line 97 $context["row"], "rownum" => // line 98 ($context["rownum"] ?? null), "extracted_columnspec" => // line 99 ($context["extracted_columnspec"] ?? null), "type" => (( !twig_test_empty($this->getAttribute( // line 100 ($context["extracted_columnspec"] ?? null), "print_type", [], "array"))) ? ($this->getAttribute(($context["extracted_columnspec"] ?? null), "print_type", [], "array")) : ("")), "tbl_storage_engine" => // line 101 ($context["tbl_storage_engine"] ?? null), "primary" => // line 102 ($context["primary"] ?? null), "field_name" => // line 103 ($context["field_name"] ?? null), "url_query" => // line 104 ($context["url_query"] ?? null), "titles" => // line 105 ($context["titles"] ?? null), "columns_with_unique_index" => // line 106 ($context["columns_with_unique_index"] ?? null), "is_in_central_columns" => ((twig_in_filter($this->getAttribute( // line 107 $context["row"], "Field", [], "array"), ($context["central_list"] ?? null))) ? (true) : (false)), "central_columns_work" => // line 108 ($context["central_columns_work"] ?? null), "table" => // line 109 ($context["table"] ?? null), "hide_structure_actions" => // line 110 ($context["hide_structure_actions"] ?? null), "mysql_int_version" => // line 111 ($context["mysql_int_version"] ?? null)])); // line 113 echo " "; } // line 114 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['row'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 116 echo "
      "; // line 119 $this->loadTemplate("table/structure/check_all_table_column.twig", "table/structure/display_structure.twig", 119)->display(twig_to_array(["pma_theme_image" => // line 120 ($context["pma_theme_image"] ?? null), "text_dir" => // line 121 ($context["text_dir"] ?? null), "tbl_is_view" => // line 122 ($context["tbl_is_view"] ?? null), "db_is_system_schema" => // line 123 ($context["db_is_system_schema"] ?? null), "tbl_storage_engine" => // line 124 ($context["tbl_storage_engine"] ?? null), "central_columns_work" => // line 125 ($context["central_columns_work"] ?? null)])); // line 127 echo "

      "; // line 129 $this->loadTemplate("table/structure/move_columns_dialog.twig", "table/structure/display_structure.twig", 129)->display(twig_to_array(["db" => // line 130 ($context["db"] ?? null), "table" => // line 131 ($context["table"] ?? null)])); // line 134 echo "
      "; // line 135 if ((($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 136 echo " "; $context["edit_view_url"] = ("view_create.php" . ($context["edit_view_url"] ?? null)); // line 137 echo " "; echo PhpMyAdmin\Util::linkOrButton( // line 138 ($context["edit_view_url"] ?? null), PhpMyAdmin\Util::getIcon("b_edit", _gettext("Edit view"), true)); // line 140 echo " "; } // line 142 echo " "; $this->loadTemplate("table/structure/optional_action_links.twig", "table/structure/display_structure.twig", 142)->display(twig_to_array(["url_query" => // line 143 ($context["url_query"] ?? null), "tbl_is_view" => // line 144 ($context["tbl_is_view"] ?? null), "db_is_system_schema" => // line 145 ($context["db_is_system_schema"] ?? null), "table" => // line 146 ($context["table"] ?? null), "is_active" => // line 147 ($context["is_active"] ?? null), "mysql_int_version" => // line 148 ($context["mysql_int_version"] ?? null), "is_mariadb" => // line 149 ($context["is_mariadb"] ?? null)])); // line 151 echo "
      "; // line 152 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 153 echo " "; $this->loadTemplate("table/structure/add_column.twig", "table/structure/display_structure.twig", 153)->display(twig_to_array(["columns_list" => // line 154 ($context["columns_list"] ?? null), "db" => // line 155 ($context["db"] ?? null), "table" => // line 156 ($context["table"] ?? null)])); } // line 159 echo " "; // line 161 if ((( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null)) && ("ARCHIVE" != // line 162 ($context["tbl_storage_engine"] ?? null)))) { // line 163 echo " "; echo PhpMyAdmin\Index::getHtmlForDisplayIndexes(); echo " "; } // line 165 echo " "; // line 167 if (($context["have_partitioning"] ?? null)) { // line 168 echo " "; // line 169 echo " "; if (( !twig_test_empty(($context["partition_names"] ?? null)) && !(null === $this->getAttribute(($context["partition_names"] ?? null), 0, [], "array")))) { // line 170 echo " "; $context["partitions"] = PhpMyAdmin\Partition::getPartitions(($context["db"] ?? null), ($context["table"] ?? null)); // line 171 echo " "; $context["first_partition"] = $this->getAttribute(($context["partitions"] ?? null), 0, [], "array"); // line 172 echo " "; $context["range_or_list"] = (((($this->getAttribute(($context["first_partition"] ?? null), "getMethod", [], "method") == "RANGE") || ($this->getAttribute( // line 173 ($context["first_partition"] ?? null), "getMethod", [], "method") == "RANGE COLUMNS")) || ($this->getAttribute( // line 174 ($context["first_partition"] ?? null), "getMethod", [], "method") == "LIST")) || ($this->getAttribute( // line 175 ($context["first_partition"] ?? null), "getMethod", [], "method") == "LIST COLUMNS")); // line 176 echo " "; $context["sub_partitions"] = $this->getAttribute(($context["first_partition"] ?? null), "getSubPartitions", [], "method"); // line 177 echo " "; $context["has_sub_partitions"] = $this->getAttribute(($context["first_partition"] ?? null), "hasSubPartitions", [], "method"); // line 178 echo " "; if (($context["has_sub_partitions"] ?? null)) { // line 179 echo " "; $context["first_sub_partition"] = $this->getAttribute(($context["sub_partitions"] ?? null), 0, [], "array"); // line 180 echo " "; } // line 181 echo " "; // line 182 $context["action_icons"] = ["ANALYZE" => PhpMyAdmin\Util::getIcon("b_search", _gettext("Analyze")), "CHECK" => PhpMyAdmin\Util::getIcon("eye", _gettext("Check")), "OPTIMIZE" => PhpMyAdmin\Util::getIcon("normalize", _gettext("Optimize")), "REBUILD" => PhpMyAdmin\Util::getIcon("s_tbl", _gettext("Rebuild")), "REPAIR" => PhpMyAdmin\Util::getIcon("b_tblops", _gettext("Repair")), "TRUNCATE" => PhpMyAdmin\Util::getIcon("b_empty", _gettext("Truncate"))]; // line 190 echo " "; if (($context["range_or_list"] ?? null)) { // line 191 echo " "; $context["action_icons"] = twig_array_merge(($context["action_icons"] ?? null), ["DROP" => PhpMyAdmin\Util::getIcon("b_drop", _gettext("Drop"))]); // line 192 echo " "; } // line 193 echo " "; // line 194 echo PhpMyAdmin\Util::getDivForSliderEffect("partitions", _gettext("Partitions")); echo " "; // line 196 $context["remove_sql"] = (("ALTER TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " REMOVE PARTITIONING"); // line 197 echo " "; $context["remove_url"] = ((("sql.php" . ($context["url_query"] ?? null)) . "&sql_query=") . twig_urlencode_filter(($context["remove_sql"] ?? null))); // line 198 echo " "; // line 199 $this->loadTemplate("table/structure/display_partitions.twig", "table/structure/display_structure.twig", 199)->display(twig_to_array(["db" => // line 200 ($context["db"] ?? null), "table" => // line 201 ($context["table"] ?? null), "url_query" => // line 202 ($context["url_query"] ?? null), "partitions" => // line 203 ($context["partitions"] ?? null), "partition_method" => $this->getAttribute( // line 204 ($context["first_partition"] ?? null), "getMethod", [], "method"), "partition_expression" => $this->getAttribute( // line 205 ($context["first_partition"] ?? null), "getExpression", [], "method"), "has_description" => !twig_test_empty($this->getAttribute( // line 206 ($context["first_partition"] ?? null), "getDescription", [], "method")), "has_sub_partitions" => // line 207 ($context["has_sub_partitions"] ?? null), "sub_partition_method" => (( // line 208 ($context["has_sub_partitions"] ?? null)) ? ($this->getAttribute(($context["first_sub_partition"] ?? null), "getMethod", [], "method")) : ("")), "sub_partition_expression" => (( // line 209 ($context["has_sub_partitions"] ?? null)) ? ($this->getAttribute(($context["first_sub_partition"] ?? null), "getExpression", [], "method")) : ("")), "action_icons" => // line 210 ($context["action_icons"] ?? null), "range_or_list" => // line 211 ($context["range_or_list"] ?? null), "remove_url" => // line 212 ($context["remove_url"] ?? null)])); // line 214 echo " "; } else { // line 215 echo " "; $this->loadTemplate("table/structure/display_partitions.twig", "table/structure/display_structure.twig", 215)->display(twig_to_array(["db" => // line 216 ($context["db"] ?? null), "table" => // line 217 ($context["table"] ?? null)])); // line 219 echo " "; } // line 220 echo " "; // line 221 echo " "; } // line 223 echo " "; // line 225 if (($context["show_stats"] ?? null)) { // line 226 echo " "; echo ($context["table_stats"] ?? null); echo " "; } // line 228 echo "
      "; } public function getTemplateName() { return "table/structure/display_structure.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 421 => 228, 415 => 226, 413 => 225, 410 => 223, 406 => 221, 404 => 220, 401 => 219, 399 => 217, 398 => 216, 396 => 215, 393 => 214, 391 => 212, 390 => 211, 389 => 210, 388 => 209, 387 => 208, 386 => 207, 385 => 206, 384 => 205, 383 => 204, 382 => 203, 381 => 202, 380 => 201, 379 => 200, 378 => 199, 375 => 198, 372 => 197, 370 => 196, 365 => 194, 362 => 193, 359 => 192, 356 => 191, 353 => 190, 351 => 182, 348 => 181, 345 => 180, 342 => 179, 339 => 178, 336 => 177, 333 => 176, 331 => 175, 330 => 174, 329 => 173, 327 => 172, 324 => 171, 321 => 170, 318 => 169, 316 => 168, 314 => 167, 311 => 165, 305 => 163, 303 => 162, 302 => 161, 299 => 159, 296 => 156, 295 => 155, 294 => 154, 292 => 153, 290 => 152, 287 => 151, 285 => 149, 284 => 148, 283 => 147, 282 => 146, 281 => 145, 280 => 144, 279 => 143, 277 => 142, 273 => 140, 271 => 138, 269 => 137, 266 => 136, 264 => 135, 261 => 134, 259 => 131, 258 => 130, 257 => 129, 253 => 127, 251 => 125, 250 => 124, 249 => 123, 248 => 122, 247 => 121, 246 => 120, 245 => 119, 240 => 116, 233 => 114, 230 => 113, 228 => 111, 227 => 110, 226 => 109, 225 => 108, 224 => 107, 223 => 106, 222 => 105, 221 => 104, 220 => 103, 219 => 102, 218 => 101, 217 => 100, 216 => 99, 215 => 98, 214 => 97, 212 => 96, 209 => 95, 207 => 93, 206 => 92, 205 => 91, 204 => 90, 203 => 89, 202 => 88, 201 => 87, 200 => 86, 199 => 85, 198 => 84, 197 => 83, 196 => 82, 195 => 81, 194 => 80, 193 => 79, 192 => 77, 191 => 73, 190 => 72, 189 => 71, 186 => 70, 183 => 69, 180 => 66, 177 => 65, 174 => 64, 171 => 61, 169 => 60, 166 => 59, 163 => 58, 160 => 57, 157 => 55, 155 => 54, 152 => 53, 150 => 52, 147 => 51, 145 => 50, 142 => 49, 140 => 48, 137 => 47, 135 => 46, 132 => 45, 130 => 44, 127 => 43, 124 => 42, 121 => 41, 118 => 40, 115 => 39, 112 => 38, 109 => 37, 107 => 36, 104 => 35, 101 => 34, 98 => 33, 95 => 31, 92 => 30, 90 => 29, 87 => 28, 84 => 27, 81 => 26, 78 => 25, 73 => 24, 70 => 23, 67 => 22, 64 => 20, 62 => 18, 61 => 17, 60 => 16, 58 => 15, 53 => 11, 50 => 10, 47 => 8, 45 => 7, 43 => 6, 41 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/display_structure.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/display_structure.twig"); } } db/login/tmp/twig/91/91de98eb583efaeced45e8724134d2269650235669d8b5333e043bb2d85fe6a1.php000064400000005466151502156020021532 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ( !twig_test_empty(($context["class"] ?? null))) { // line 2 echo "
      env, ($context["class"] ?? null), "html", null, true); echo "\"> "; } // line 4 echo "env, ($context["html_field_name"] ?? null), "html", null, true); echo "\" id=\""; echo ($context["html_field_id"] ?? null); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["choice_value"] ?? null), "html", null, true); echo "\""; echo ((($context["checked"] ?? null)) ? (" checked=\"checked\"") : ("")); echo " /> "; // line 6 if (($context["is_line_break"] ?? null)) { // line 7 echo "
      "; } // line 9 if ( !twig_test_empty(($context["class"] ?? null))) { // line 10 echo "
      "; } } public function getTemplateName() { return "radio_fields.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 63 => 10, 61 => 9, 57 => 7, 55 => 6, 49 => 5, 38 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "radio_fields.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/radio_fields.twig"); } } db/login/tmp/twig/91/91c2b24bf255478671be8817420705144d04b41166b1a1a3daa92d4e39c11660.php000064400000006775151502156020021076 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["export_type"] ?? null) == "server")) { // line 2 echo " "; echo PhpMyAdmin\Url::getHiddenInputs("", "", 1); echo " "; } elseif (( // line 3 ($context["export_type"] ?? null) == "database")) { // line 4 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), "", 1); echo " "; } else { // line 6 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 8 echo " "; // line 10 if ( !twig_test_empty(($context["single_table"] ?? null))) { // line 11 echo " "; } // line 13 echo " env, ($context["export_type"] ?? null), "html", null, true); echo "\"> "; // line 17 echo "env, ($context["export_method"] ?? null), "html", null, true); echo "\"> "; // line 19 if ( !twig_test_empty(($context["sql_query"] ?? null))) { // line 20 echo " env, ($context["sql_query"] ?? null), "html", null, true); echo "\"> "; } // line 22 echo " env, ($context["template_id"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/export/hidden_inputs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 85 => 23, 82 => 22, 76 => 20, 74 => 19, 68 => 17, 63 => 14, 60 => 13, 56 => 11, 54 => 10, 51 => 8, 45 => 6, 39 => 4, 37 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/hidden_inputs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/hidden_inputs.twig"); } } db/login/tmp/twig/be/be783456d5a8375af7250e89c7fac55015457a014048498bc6981cc3924d9a5a.php000064400000007277151502156020021453 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 echo _gettext("Define new aliases"); echo "
      "; } public function getTemplateName() { return "export/alias_add.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 104 => 46, 98 => 43, 89 => 37, 81 => 32, 75 => 29, 66 => 23, 58 => 18, 52 => 15, 43 => 9, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "export/alias_add.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/export/alias_add.twig"); } } db/login/tmp/twig/65/652fd8defc4cee33f0ac457fb447bef3bb212c470dc13d3a84dc425af3fa821e.php000064400000005626151502156020022345 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\" type=\"text\" name=\"field_length["; // line 3 echo twig_escape_filter($this->env, ($context["column_number"] ?? null), "html", null, true); echo "]\" size=\""; // line 4 echo twig_escape_filter($this->env, ($context["length_values_input_size"] ?? null), "html", null, true); echo "\" value=\""; // line 5 echo twig_escape_filter($this->env, ($context["length_to_display"] ?? null), "html", null, true); echo "\" class=\"textfield\" />

      env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\"> "; // line 9 echo _gettext("Edit ENUM/SET values"); // line 10 echo "

      "; } public function getTemplateName() { return "columns_definitions/column_length.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 60 => 10, 58 => 9, 51 => 7, 46 => 5, 42 => 4, 38 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_length.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_length.twig"); } } db/login/tmp/twig/6c/6c9a7cd11578d393beebc51daa9a48d35c8b03d3a69fd786c55ceedf71a62d29.php000064400000005466151502156020022326 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ( !twig_test_empty(($context["class"] ?? null))) { // line 2 echo "
      env, ($context["class"] ?? null), "html", null, true); echo "\"> "; } // line 4 echo "env, ($context["html_field_name"] ?? null), "html", null, true); echo "\" id=\""; echo ($context["html_field_id"] ?? null); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["choice_value"] ?? null), "html", null, true); echo "\""; echo ((($context["checked"] ?? null)) ? (" checked=\"checked\"") : ("")); echo " /> "; // line 6 if (($context["is_line_break"] ?? null)) { // line 7 echo "
      "; } // line 9 if ( !twig_test_empty(($context["class"] ?? null))) { // line 10 echo "
      "; } } public function getTemplateName() { return "radio_fields.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 63 => 10, 61 => 9, 57 => 7, 55 => 6, 49 => 5, 38 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "radio_fields.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/radio_fields.twig"); } } db/login/tmp/twig/6c/6c94708d292c1d4b68f6c4bb6f87f83baeb2e7f1f5595914cc00acdd1120a3cb.php000064400000011434151502156020022132 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (((isset($context["submit_attribute"]) || array_key_exists("submit_attribute", $context)) && (($context["submit_attribute"] ?? null) != false))) { // line 2 echo " "; $context["attribute"] = ($context["submit_attribute"] ?? null); } elseif (($this->getAttribute( // line 3 ($context["column_meta"] ?? null), "Extra", [], "array", true, true) && ($this->getAttribute( // line 4 ($context["column_meta"] ?? null), "Extra", [], "array") == "on update CURRENT_TIMESTAMP"))) { // line 5 echo " "; $context["attribute"] = "on update CURRENT_TIMESTAMP"; } elseif ($this->getAttribute( // line 6 ($context["extracted_columnspec"] ?? null), "attribute", [], "array", true, true)) { // line 7 echo " "; $context["attribute"] = $this->getAttribute(($context["extracted_columnspec"] ?? null), "attribute", [], "array"); } else { // line 9 echo " "; $context["attribute"] = ""; } // line 11 $context["attribute"] = twig_upper_filter($this->env, ($context["attribute"] ?? null)); // line 12 echo " "; } public function getTemplateName() { return "columns_definitions/column_attribute.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 88 => 21, 79 => 18, 75 => 17, 71 => 16, 66 => 15, 64 => 14, 58 => 13, 53 => 12, 51 => 11, 47 => 9, 43 => 7, 41 => 6, 38 => 5, 36 => 4, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_attribute.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_attribute.twig"); } } db/login/tmp/twig/52/527364076578ef49930bfb57ad1c546546e5abca8685591a8ba46d3da1ac36f2.php000064400000006154151502156020021514 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " # "; // line 5 echo _gettext("Name"); echo " "; // line 6 echo _gettext("Type"); echo " "; // line 7 echo _gettext("Collation"); echo " "; // line 8 echo _gettext("Attributes"); echo " "; // line 9 echo _gettext("Null"); echo " "; // line 10 echo _gettext("Default"); echo " "; // line 11 if (($context["show_column_comments"] ?? null)) { // line 12 echo ""; echo _gettext("Comments"); echo ""; } // line 14 echo " "; echo _gettext("Extra"); echo " "; // line 16 echo " "; if (( !($context["db_is_system_schema"] ?? null) && !($context["tbl_is_view"] ?? null))) { // line 17 echo " "; echo _gettext("Action"); echo " "; } // line 20 echo " "; } public function getTemplateName() { return "table/structure/table_structure_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 84 => 20, 78 => 18, 75 => 17, 72 => 16, 67 => 14, 62 => 12, 60 => 11, 56 => 10, 52 => 9, 48 => 8, 44 => 7, 40 => 6, 36 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/table_structure_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/table_structure_header.twig"); } } db/login/tmp/twig/58/58517487ee06d17bfad5a68b069f636fdc498260a528fe7274b443b098f9067e.php000064400000004535151502156020021415 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["align"] ?? null), "html", null, true); echo " data-decimals=\""; // line 2 (($this->getAttribute(($context["meta"] ?? null), "decimals", [], "any", true, true)) ? (print (twig_escape_filter($this->env, $this->getAttribute(($context["meta"] ?? null), "decimals", []), "html", null, true))) : (print ("-1"))); echo "\" data-type=\""; // line 3 echo twig_escape_filter($this->env, $this->getAttribute(($context["meta"] ?? null), "type", []), "html", null, true); echo "\" "; // line 5 echo " class=\""; echo twig_escape_filter($this->env, ($context["classes"] ?? null), "html", null, true); echo " null\"> NULL "; } public function getTemplateName() { return "display/results/null_display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 5, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/null_display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/null_display.twig"); } } db/login/tmp/twig/e9/e93db45b0ff61ef08308b9a87b60a613c0a93fab9ee661c8271381a01e2fa57a.php000064400000005104151502156020021765 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["table_name_hash"] ?? null), "html", null, true); echo "_favorite_anchor\" class=\"ajax favorite_table_anchor\" href=\"db_structure.php"; // line 3 echo PhpMyAdmin\Url::getCommon(($context["fav_params"] ?? null)); echo "\" title=\""; // line 4 echo twig_escape_filter($this->env, ((($context["already_favorite"] ?? null)) ? (_gettext("Remove from Favorites")) : (_gettext("Add to Favorites"))), "html", null, true); echo "\" data-favtargets=\""; // line 5 echo twig_escape_filter($this->env, ($context["db_table_name_hash"] ?? null), "html", null, true); echo "\" > "; // line 6 echo ((($context["already_favorite"] ?? null)) ? ($this->getAttribute(($context["titles"] ?? null), "Favorite", [], "array")) : ($this->getAttribute(($context["titles"] ?? null), "NoFavorite", [], "array"))); echo " "; } public function getTemplateName() { return "database/structure/favorite_anchor.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 48 => 6, 44 => 5, 40 => 4, 36 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/favorite_anchor.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/favorite_anchor.twig"); } } db/login/tmp/twig/6d/6d7f8059e9b20f76916a175316d7c40d0bad97e6a6c56aef4c677d81f2a2b64f.php000064400000011613151502156020021743 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Rows:"); echo "

        • env, ($context["limit_to"] ?? null), "html", null, true); echo " "; } elseif (( !twig_test_empty( // line 15 ($context["unlim_num_rows"] ?? null)) && (($context["unlim_num_rows"] ?? null) != 0))) { // line 16 echo " "; echo twig_escape_filter($this->env, ($context["unlim_num_rows"] ?? null), "html", null, true); echo " "; } else { // line 18 echo " "; echo twig_escape_filter($this->env, ($context["number_of_rows"] ?? null), "html", null, true); echo " "; } // line 20 echo " "; $___internal_141ad1a69e8c2b55d7c930a93cdd34a27ce71e28f9589266ce0f78a7c9aad9c9_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 12 echo twig_spaceless($___internal_141ad1a69e8c2b55d7c930a93cdd34a27ce71e28f9589266ce0f78a7c9aad9c9_); // line 20 echo "\" onfocus=\"this.select()\">
        • env, ($context["limit_from"] ?? null), "html", null, true))) : (print (0))); echo "\" onfocus=\"this.select()\">
      "; } public function getTemplateName() { return "display/export/options_rows.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 103 => 32, 99 => 31, 91 => 25, 87 => 23, 82 => 20, 80 => 12, 77 => 20, 71 => 18, 65 => 16, 63 => 15, 58 => 14, 55 => 13, 53 => 12, 49 => 10, 43 => 7, 39 => 6, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_rows.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_rows.twig"); } } db/login/tmp/twig/8d/8d46178e1db7a08e822ae7f2b5ceb0f62f5ab02533c5b47ee902eef45b8e7bf9.php000064400000007053151502156020022234 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 2 if ( !twig_test_empty(($context["class"] ?? null))) { echo " class=\""; echo twig_escape_filter($this->env, ($context["class"] ?? null), "html", null, true); echo "\""; } echo "> "; // line 4 if ( !twig_test_empty(($context["items"] ?? null))) { // line 5 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["items"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["item"]) { // line 6 echo " "; if ( !twig_test_iterable($context["item"])) { // line 7 echo " "; $context["item"] = ["content" => $context["item"]]; // line 8 echo " "; } // line 9 echo " "; $this->loadTemplate("list/item.twig", "list/unordered.twig", 9)->display(twig_to_array($context["item"])); // line 10 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 11 echo " "; } elseif ( !twig_test_empty(($context["content"] ?? null))) { // line 12 echo " "; echo ($context["content"] ?? null); echo " "; } // line 14 echo " "; } public function getTemplateName() { return "list/unordered.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 14, 74 => 12, 71 => 11, 65 => 10, 62 => 9, 59 => 8, 56 => 7, 53 => 6, 48 => 5, 46 => 4, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "list/unordered.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/list/unordered.twig"); } } db/login/tmp/twig/8d/8d9d8a912b4c8cff24997c81deb097790322a80a0d11797efbc34dd3e7d3956b.php000064400000002765151502156020021762 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "config/form_display/tabs_bottom.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/tabs_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/tabs_bottom.twig"); } } db/login/tmp/twig/f0/f01cb9ecd5b7d9f5bec82f8ef67a5c6d7117006cbf02cb4153ac133bf4c88b9a.php000064400000005231151502156020022345 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 3 echo PhpMyAdmin\Util::getImage("b_export", _gettext("Export")); echo " "; // line 4 if ((($context["export_type"] ?? null) == "server")) { // line 5 echo " "; echo _gettext("Exporting databases from the current server"); // line 6 echo " "; } elseif ((($context["export_type"] ?? null) == "database")) { // line 7 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Exporting tables from \"%s\" database"), ($context["db"] ?? null)), "html", null, true); echo " "; } else { // line 9 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Exporting rows from \"%s\" table"), ($context["table"] ?? null)), "html", null, true); echo " "; } // line 11 echo "

      "; } public function getTemplateName() { return "display/export/option_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 11, 52 => 9, 46 => 7, 43 => 6, 40 => 5, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/option_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/option_header.twig"); } } db/login/tmp/twig/f0/f08179f137ebb22a9e5d699001ef0dcca44890194051ae470e6d79fce9d51d9c.php000064400000004254151502156020021734 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 3 echo PhpMyAdmin\Util::getIcon("b_print", _gettext("Print"), true); echo " env, ($context["url_query"] ?? null), "html", null, true); echo "\" target=\"print_view\"> "; // line 6 echo PhpMyAdmin\Util::getIcon("b_tblanalyse", _gettext("Data dictionary"), true); echo "

      "; } public function getTemplateName() { return "database/structure/print_view_data_dictionary_link.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 6, 39 => 5, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/print_view_data_dictionary_link.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/print_view_data_dictionary_link.twig"); } } db/login/tmp/twig/e4/e424080d2be779cad463429d2595d6d55c44e10fc4cdb449d0712f1abf8a41ea.php000064400000006176151502156020021774 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["pos"] ?? null), "html", null, true); echo "\" /> env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> env, ($context["goto"] ?? null), "html", null, true); echo "\" /> "; // line 8 echo ($context["input_for_real_end"] ?? null); echo " env, ($context["title"] ?? null), "html", null, true); echo "\""; // line 10 echo ($context["onclick"] ?? null); echo " />
      "; } public function getTemplateName() { return "display/results/table_navigation_button.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 66 => 10, 61 => 9, 57 => 8, 53 => 7, 49 => 6, 45 => 5, 41 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/table_navigation_button.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/table_navigation_button.twig"); } } db/login/tmp/twig/43/43cb8c5a42f17f780372a6d8b976cafccd1f95b8656d9d9638fca2bb2c0c1ee6.php000064400000004535151502156020022162 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["align"] ?? null), "html", null, true); echo " data-decimals=\""; // line 2 (($this->getAttribute(($context["meta"] ?? null), "decimals", [], "any", true, true)) ? (print (twig_escape_filter($this->env, $this->getAttribute(($context["meta"] ?? null), "decimals", []), "html", null, true))) : (print ("-1"))); echo "\" data-type=\""; // line 3 echo twig_escape_filter($this->env, $this->getAttribute(($context["meta"] ?? null), "type", []), "html", null, true); echo "\" "; // line 5 echo " class=\""; echo twig_escape_filter($this->env, ($context["classes"] ?? null), "html", null, true); echo " null\"> NULL "; } public function getTemplateName() { return "display/results/null_display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 5, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/null_display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/null_display.twig"); } } db/login/tmp/twig/fc/fc9de1d24d5447c1f623ed13d3505d470ea779503f68976f88e1e88c2f57210b.php000064400000021706151502156020021612 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
      "; // line 9 if (($context["replication"] ?? null)) { // line 10 echo " "; } // line 12 echo " "; // line 13 if (($context["db_is_system_schema"] ?? null)) { // line 14 echo " "; $context["action_colspan"] = 3; // line 15 echo " "; } else { // line 16 echo " "; $context["action_colspan"] = 6; // line 17 echo " "; } // line 18 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 19 echo " "; $context["action_colspan"] = (($context["action_colspan"] ?? null) + 1); // line 20 echo " "; } // line 21 echo " "; // line 25 echo " "; // line 31 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 32 echo " "; } // line 35 echo " "; // line 36 if (($context["is_show_stats"] ?? null)) { // line 37 echo " "; // line 38 echo " "; // line 40 echo " "; } // line 42 echo " "; // line 43 if (($context["show_charset"] ?? null)) { // line 44 echo " "; } // line 46 echo " "; // line 47 if (($context["show_comment"] ?? null)) { // line 48 echo " "; } // line 50 echo " "; // line 51 if (($context["show_creation"] ?? null)) { // line 52 echo " "; // line 53 echo " "; } // line 55 echo " "; // line 56 if (($context["show_last_update"] ?? null)) { // line 57 echo " "; // line 58 echo " "; } // line 60 echo " "; // line 61 if (($context["show_last_check"] ?? null)) { // line 62 echo " "; // line 63 echo " "; } // line 65 echo " "; // line 68 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["structure_table_rows"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["structure_table_row"]) { // line 69 echo " "; $this->loadTemplate("database/structure/structure_table_row.twig", "database/structure/table_header.twig", 69)->display(twig_to_array($context["structure_table_row"])); // line 70 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['structure_table_row'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 71 echo " "; // line 72 if (($context["body_for_table_summary"] ?? null)) { // line 73 echo " "; $this->loadTemplate("database/structure/body_for_table_summary.twig", "database/structure/table_header.twig", 73)->display(twig_to_array(($context["body_for_table_summary"] ?? null))); // line 74 echo " "; } // line 75 echo "
      "; // line 8 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Table"), "table"); echo ""; echo _gettext("Replication"); echo "env, ($context["action_colspan"] ?? null), "html", null, true); echo "\" class=\"print_ignore\"> "; // line 22 echo _gettext("Action"); // line 23 echo " "; // line 26 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Rows"), "records", "DESC"); echo " "; // line 27 echo PhpMyAdmin\Util::showHint(PhpMyAdmin\Sanitize::sanitize(_gettext("May be approximate. Click on the number to get the exact count. See [doc@faq3-11]FAQ 3.11[/doc]."))); // line 29 echo " "; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Type"), "type"); echo " "; // line 33 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Collation"), "collation"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Size"), "size", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Overhead"), "overhead", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Charset"), "charset"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Comment"), "comment"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Creation"), "creation", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Last update"), "last_update", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Last check"), "last_check", "DESC"); echo "
      "; // line 77 if (($context["check_all_tables"] ?? null)) { // line 78 echo " "; $this->loadTemplate("database/structure/check_all_tables.twig", "database/structure/table_header.twig", 78)->display(twig_to_array(($context["check_all_tables"] ?? null))); } // line 80 echo "
      "; } public function getTemplateName() { return "database/structure/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 233 => 80, 229 => 78, 227 => 77, 223 => 75, 220 => 74, 217 => 73, 215 => 72, 212 => 71, 206 => 70, 203 => 69, 199 => 68, 194 => 65, 188 => 63, 186 => 62, 184 => 61, 181 => 60, 175 => 58, 173 => 57, 171 => 56, 168 => 55, 162 => 53, 160 => 52, 158 => 51, 155 => 50, 149 => 48, 147 => 47, 144 => 46, 138 => 44, 136 => 43, 133 => 42, 127 => 40, 122 => 38, 120 => 37, 118 => 36, 115 => 35, 110 => 33, 105 => 32, 103 => 31, 99 => 29, 97 => 27, 93 => 26, 90 => 25, 87 => 23, 85 => 22, 80 => 21, 77 => 20, 74 => 19, 71 => 18, 68 => 17, 65 => 16, 62 => 15, 59 => 14, 57 => 13, 54 => 12, 48 => 10, 46 => 9, 42 => 8, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/table_header.twig"); } } db/login/tmp/twig/21/21a3bee2bc40466295b888b9fec6fb9d77882a7cf061fd3f3d7194b5d54ab837.php000064400000021706151502156020021744 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
      "; // line 9 if (($context["replication"] ?? null)) { // line 10 echo " "; } // line 12 echo " "; // line 13 if (($context["db_is_system_schema"] ?? null)) { // line 14 echo " "; $context["action_colspan"] = 3; // line 15 echo " "; } else { // line 16 echo " "; $context["action_colspan"] = 6; // line 17 echo " "; } // line 18 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 19 echo " "; $context["action_colspan"] = (($context["action_colspan"] ?? null) + 1); // line 20 echo " "; } // line 21 echo " "; // line 25 echo " "; // line 31 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 32 echo " "; } // line 35 echo " "; // line 36 if (($context["is_show_stats"] ?? null)) { // line 37 echo " "; // line 38 echo " "; // line 40 echo " "; } // line 42 echo " "; // line 43 if (($context["show_charset"] ?? null)) { // line 44 echo " "; } // line 46 echo " "; // line 47 if (($context["show_comment"] ?? null)) { // line 48 echo " "; } // line 50 echo " "; // line 51 if (($context["show_creation"] ?? null)) { // line 52 echo " "; // line 53 echo " "; } // line 55 echo " "; // line 56 if (($context["show_last_update"] ?? null)) { // line 57 echo " "; // line 58 echo " "; } // line 60 echo " "; // line 61 if (($context["show_last_check"] ?? null)) { // line 62 echo " "; // line 63 echo " "; } // line 65 echo " "; // line 68 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["structure_table_rows"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["structure_table_row"]) { // line 69 echo " "; $this->loadTemplate("database/structure/structure_table_row.twig", "database/structure/table_header.twig", 69)->display(twig_to_array($context["structure_table_row"])); // line 70 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['structure_table_row'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 71 echo " "; // line 72 if (($context["body_for_table_summary"] ?? null)) { // line 73 echo " "; $this->loadTemplate("database/structure/body_for_table_summary.twig", "database/structure/table_header.twig", 73)->display(twig_to_array(($context["body_for_table_summary"] ?? null))); // line 74 echo " "; } // line 75 echo "
      "; // line 8 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Table"), "table"); echo ""; echo _gettext("Replication"); echo "env, ($context["action_colspan"] ?? null), "html", null, true); echo "\" class=\"print_ignore\"> "; // line 22 echo _gettext("Action"); // line 23 echo " "; // line 26 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Rows"), "records", "DESC"); echo " "; // line 27 echo PhpMyAdmin\Util::showHint(PhpMyAdmin\Sanitize::sanitize(_gettext("May be approximate. Click on the number to get the exact count. See [doc@faq3-11]FAQ 3.11[/doc]."))); // line 29 echo " "; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Type"), "type"); echo " "; // line 33 echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Collation"), "collation"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Size"), "size", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Overhead"), "overhead", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Charset"), "charset"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Comment"), "comment"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Creation"), "creation", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Last update"), "last_update", "DESC"); echo ""; echo PhpMyAdmin\Util::sortableTableHeader(_gettext("Last check"), "last_check", "DESC"); echo "
      "; // line 77 if (($context["check_all_tables"] ?? null)) { // line 78 echo " "; $this->loadTemplate("database/structure/check_all_tables.twig", "database/structure/table_header.twig", 78)->display(twig_to_array(($context["check_all_tables"] ?? null))); } // line 80 echo "
      "; } public function getTemplateName() { return "database/structure/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 233 => 80, 229 => 78, 227 => 77, 223 => 75, 220 => 74, 217 => 73, 215 => 72, 212 => 71, 206 => 70, 203 => 69, 199 => 68, 194 => 65, 188 => 63, 186 => 62, 184 => 61, 181 => 60, 175 => 58, 173 => 57, 171 => 56, 168 => 55, 162 => 53, 160 => 52, 158 => 51, 155 => 50, 149 => 48, 147 => 47, 144 => 46, 138 => 44, 136 => 43, 133 => 42, 127 => 40, 122 => 38, 120 => 37, 118 => 36, 115 => 35, 110 => 33, 105 => 32, 103 => 31, 99 => 29, 97 => 27, 93 => 26, 90 => 25, 87 => 23, 85 => 22, 80 => 21, 77 => 20, 74 => 19, 71 => 18, 68 => 17, 65 => 16, 62 => 15, 59 => 14, 57 => 13, 54 => 12, 48 => 10, 46 => 9, 42 => 8, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/table_header.twig"); } } db/login/tmp/twig/21/216b38bca146eb848fc6d86397f51a97f80ea5f53a23a867100e47a76d0cc8d4.php000064400000006425151502156020021570 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Format-specific options:"); echo "

      "; // line 4 echo _gettext("Scroll down to fill in the options for the selected format and ignore the options for other formats."); // line 5 echo "

      "; // line 6 echo ($context["options"] ?? null); echo "
      "; // line 9 if (($context["can_convert_kanji"] ?? null)) { // line 10 echo " "; // line 11 echo "

      "; // line 12 echo _gettext("Encoding Conversion:"); echo "

      "; // line 13 $this->loadTemplate("encoding/kanji_encoding_form.twig", "display/export/options_format.twig", 13)->display($context); // line 14 echo "
      "; } // line 16 echo "
      0)) { // line 22 echo " onclick=\"check_time_out("; echo twig_escape_filter($this->env, ($context["exec_time_limit"] ?? null), "html", null, true); echo ")\""; } // line 23 echo ">
      "; } public function getTemplateName() { return "display/export/options_format.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 23, 75 => 22, 73 => 21, 70 => 18, 66 => 16, 62 => 14, 60 => 13, 56 => 12, 53 => 11, 51 => 10, 49 => 9, 43 => 6, 40 => 5, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_format.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_format.twig"); } } db/login/tmp/twig/21/21da9819143464d54ee6b898f48222ab320e5718dfa0e39cee2fa29422d74cc9.php000064400000003532151502156020021503 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "fk_checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 4, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "fk_checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/fk_checkbox.twig"); } } db/login/tmp/twig/73/7344d83090c7e9b9f22c0207185865ef8fa38d47d74e28cfc6282fd1b491faa8.php000064400000004535151502156020021537 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["align"] ?? null), "html", null, true); echo " data-decimals=\""; // line 2 (($this->getAttribute(($context["meta"] ?? null), "decimals", [], "any", true, true)) ? (print (twig_escape_filter($this->env, $this->getAttribute(($context["meta"] ?? null), "decimals", []), "html", null, true))) : (print ("-1"))); echo "\" data-type=\""; // line 3 echo twig_escape_filter($this->env, $this->getAttribute(($context["meta"] ?? null), "type", []), "html", null, true); echo "\" "; // line 5 echo " class=\""; echo twig_escape_filter($this->env, ($context["classes"] ?? null), "html", null, true); echo " null\"> NULL "; } public function getTemplateName() { return "display/results/null_display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 5, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/null_display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/null_display.twig"); } } db/login/tmp/twig/73/73a22388ea06dda0a2e91e156573fc4c47961ae6e35817742bb6901eb91d5478.php000064400000007222151502156020021347 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "dropdown.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 78 => 11, 68 => 9, 64 => 8, 60 => 7, 51 => 5, 49 => 4, 47 => 3, 39 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "dropdown.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/dropdown.twig"); } } db/login/tmp/twig/86/86833a1ac293d683dac31e145fe69330fa67d99195cf43ba43cf2f20231883c5.php000064400000005016151502156020021426 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "arrow_"; echo twig_escape_filter($this->env, ($context["text_dir"] ?? null), "html", null, true); echo ".png\" width=\"38\" height=\"22\" alt=\""; // line 2 echo _gettext("With selected:"); echo "\" /> env, ($context["form_name"] ?? null), "html", null, true); echo "_checkall\" class=\"checkall_box\" title=\""; // line 4 echo _gettext("Check all"); echo "\" /> "; // line 6 echo _gettext("With selected:"); echo " "; } public function getTemplateName() { return "select_all.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 6, 49 => 5, 45 => 4, 41 => 3, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "select_all.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/select_all.twig"); } } db/login/tmp/twig/86/864e539df9e759428996e63ab0680f7a87da7bde66f9c2bc5b7e36d6f812b078.php000064400000012276151502156020021660 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Output:"); echo "

      • "; // line 11 if ((($context["export_type"] ?? null) != "server")) { // line 12 echo "
      • "; } // line 21 echo "
        • "; // line 29 if ( !twig_test_empty(($context["save_dir"] ?? null))) { // line 30 echo " "; echo ($context["options_output_save_dir"] ?? null); echo " "; } // line 32 echo " "; // line 33 echo ($context["options_output_format"] ?? null); echo " "; // line 35 if (($context["is_encoding_supported"] ?? null)) { // line 36 echo " "; echo ($context["options_output_charset"] ?? null); echo " "; } // line 38 echo " "; // line 39 echo ($context["options_output_compression"] ?? null); echo " "; // line 41 if (((($context["export_type"] ?? null) == "server") || (($context["export_type"] ?? null) == "database"))) { // line 42 echo " "; echo ($context["options_output_separate_files"] ?? null); echo " "; } // line 44 echo "
      • "; // line 47 echo ($context["options_output_radio"] ?? null); echo "
      "); // line 53 echo "
      "; } public function getTemplateName() { return "display/export/options_output.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 137 => 53, 135 => 51, 129 => 47, 124 => 44, 118 => 42, 116 => 41, 111 => 39, 108 => 38, 102 => 36, 100 => 35, 95 => 33, 92 => 32, 86 => 30, 84 => 29, 80 => 27, 78 => 26, 73 => 24, 69 => 21, 62 => 17, 57 => 15, 53 => 12, 51 => 11, 46 => 8, 44 => 7, 39 => 5, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output.twig"); } } db/login/tmp/twig/86/8691ca38faf4be1bc11432dbd5cd036564dd471196d15adc2c168e81e4e05a84.php000064400000004774151502156020021717 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • env, ($context["filename_template"] ?? null), "html", null, true); echo "\">
    • "; } public function getTemplateName() { return "display/export/options_output_format.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 53 => 12, 51 => 11, 46 => 9, 42 => 7, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_format.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_format.twig"); } } db/login/tmp/twig/1d/1d07029743fe4190e9d041e085875850116b9e8c1834f9d570ec7665f8feb578.php000064400000005203151502156020021235 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • env, ($context["export_type"] ?? null), "html", null, true); echo "\""; // line 4 echo ((($context["is_checked"] ?? null)) ? (" checked") : ("")); echo ">
    • "; } public function getTemplateName() { return "display/export/options_output_separate_files.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 56 => 11, 53 => 10, 50 => 9, 47 => 8, 44 => 7, 42 => 6, 37 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_separate_files.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_separate_files.twig"); } } db/login/tmp/twig/4f/4fbdd36c6e2b061dc006682ba7e73d8597a9ef070c3e3a17bbbf9dc0c61efba4.php000064400000005235151502156020022346 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($context["display_logo"] ?? null)) { // line 2 echo " "; } } public function getTemplateName() { return "navigation/logo.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 57 => 11, 53 => 9, 51 => 8, 46 => 7, 41 => 5, 37 => 4, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "navigation/logo.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/navigation/logo.twig"); } } db/login/tmp/twig/57/57fba2273bd4f8342dc43b6e0b1e1f021da9bb9ec65c295e9e84dd206e674bbd.php000064400000003436151502156020022140 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Format:"); echo "

      "; // line 3 echo ($context["dropdown"] ?? null); echo "
      "; } public function getTemplateName() { return "display/export/format_dropdown.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/format_dropdown.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/format_dropdown.twig"); } } db/login/tmp/twig/57/57b28796a458d52c050178c633d6a6e7d6a63e403592d6a2afc185bf33b43e6a.php000064400000004002151502156020021416 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 echo _gettext("Filters"); echo "
      env, ($context["filter_value"] ?? null), "html", null, true); echo "\" />
      "; } public function getTemplateName() { return "filter.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 6, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "filter.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/filter.twig"); } } db/login/tmp/twig/b9/b94e0fc9456ae54cc451c9f685b4de4f733aa68d007ba566951743f3080e511a.php000064400000022611151502156020021565 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 3 echo _gettext("Information"); echo " "; // line 4 if ($this->getAttribute(($context["showtable"] ?? null), "TABLE_COMMENT", [], "array")) { // line 5 echo "

      "; // line 6 echo _gettext("Table comments:"); echo " "; // line 7 echo twig_escape_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "TABLE_COMMENT", [], "array"), "html", null, true); echo "

      "; } // line 10 echo " "; // line 12 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 13 echo " "; // line 22 if ((isset($context["index_size"]) || array_key_exists("index_size", $context))) { // line 23 echo " "; } // line 29 echo " "; // line 30 if ((isset($context["free_size"]) || array_key_exists("free_size", $context))) { // line 31 echo " "; } // line 42 echo " "; // line 43 if (((isset($context["tot_size"]) || array_key_exists("tot_size", $context)) && (($context["mergetable"] ?? null) == false))) { // line 44 echo " "; } // line 50 echo " "; // line 52 echo " "; if (((isset($context["free_size"]) || array_key_exists("free_size", $context)) && (((( // line 53 ($context["tbl_storage_engine"] ?? null) == "MYISAM") || ( // line 54 ($context["tbl_storage_engine"] ?? null) == "ARIA")) || ( // line 55 ($context["tbl_storage_engine"] ?? null) == "MARIA")) || ( // line 56 ($context["tbl_storage_engine"] ?? null) == "BDB")))) { // line 57 echo " "; } // line 66 echo "
      "; // line 14 echo _gettext("Space usage"); echo "
      "; // line 17 echo _gettext("Data"); echo " "; // line 18 echo twig_escape_filter($this->env, ($context["data_size"] ?? null), "html", null, true); echo " "; // line 19 echo twig_escape_filter($this->env, ($context["data_unit"] ?? null), "html", null, true); echo "
      "; // line 24 echo _gettext("Index"); echo " "; // line 25 echo twig_escape_filter($this->env, ($context["index_size"] ?? null), "html", null, true); echo " "; // line 26 echo twig_escape_filter($this->env, ($context["index_unit"] ?? null), "html", null, true); echo "
      "; // line 32 echo _gettext("Overhead"); echo " "; // line 33 echo twig_escape_filter($this->env, ($context["free_size"] ?? null), "html", null, true); echo " "; // line 34 echo twig_escape_filter($this->env, ($context["free_unit"] ?? null), "html", null, true); echo "
      "; // line 37 echo _gettext("Effective"); echo " "; // line 38 echo twig_escape_filter($this->env, ($context["effect_size"] ?? null), "html", null, true); echo " "; // line 39 echo twig_escape_filter($this->env, ($context["effect_unit"] ?? null), "html", null, true); echo "
      "; // line 45 echo _gettext("Total"); echo " "; // line 46 echo twig_escape_filter($this->env, ($context["tot_size"] ?? null), "html", null, true); echo " "; // line 47 echo twig_escape_filter($this->env, ($context["tot_unit"] ?? null), "html", null, true); echo "
      env, ($context["url_query"] ?? null), "html", null, true); echo "&pos=0&sql_query="; // line 60 echo twig_escape_filter($this->env, twig_urlencode_filter(("OPTIMIZE TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null)))), "html", null, true); echo "\"> "; // line 61 echo PhpMyAdmin\Util::getIcon("b_tbloptimize", _gettext("Optimize table")); echo "
      "; } // line 69 echo " "; // line 70 $this->loadTemplate("table/structure/row_stats_table.twig", "table/structure/display_table_stats.twig", 70)->display(twig_to_array(["showtable" => // line 71 ($context["showtable"] ?? null), "tbl_collation" => // line 72 ($context["tbl_collation"] ?? null), "is_innodb" => // line 73 ($context["is_innodb"] ?? null), "mergetable" => // line 74 ($context["mergetable"] ?? null), "avg_size" => (( // line 75 (isset($context["avg_size"]) || array_key_exists("avg_size", $context))) ? (($context["avg_size"] ?? null)) : (null)), "avg_unit" => (( // line 76 (isset($context["avg_unit"]) || array_key_exists("avg_unit", $context))) ? (($context["avg_unit"] ?? null)) : (null))])); // line 78 echo "
      "; } public function getTemplateName() { return "table/structure/display_table_stats.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 204 => 78, 202 => 76, 201 => 75, 200 => 74, 199 => 73, 198 => 72, 197 => 71, 196 => 70, 193 => 69, 188 => 66, 180 => 61, 176 => 60, 173 => 59, 169 => 57, 167 => 56, 166 => 55, 165 => 54, 164 => 53, 162 => 52, 159 => 50, 153 => 47, 149 => 46, 145 => 45, 142 => 44, 140 => 43, 137 => 42, 131 => 39, 127 => 38, 123 => 37, 117 => 34, 113 => 33, 109 => 32, 106 => 31, 104 => 30, 101 => 29, 95 => 26, 91 => 25, 87 => 24, 84 => 23, 82 => 22, 76 => 19, 72 => 18, 68 => 17, 62 => 14, 59 => 13, 57 => 12, 53 => 10, 47 => 7, 43 => 6, 40 => 5, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/display_table_stats.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/display_table_stats.twig"); } } db/login/tmp/twig/b9/b9b28b9da42c96adf5f4fd5aa40e7970e674d14b45a1fbb616dc0da871811996.php000064400000030516151502156020022072 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["action"] ?? null), "html", null, true); echo "\" class=\""; // line 2 echo (((($context["action"] ?? null) == "tbl_create.php")) ? ("create_table") : ("append_fields")); // line 3 echo "_form ajax lock-page\"> "; // line 4 echo PhpMyAdmin\Url::getHiddenInputs(($context["form_params"] ?? null)); echo " "; // line 6 echo " "; // line 7 echo " "; // line 8 echo " env, ($context["primary_indexes"] ?? null), "html", null, true))) : (print ("[]"))); echo "\"> env, ($context["unique_indexes"] ?? null), "html", null, true))) : (print ("[]"))); echo "\"> env, ($context["indexes"] ?? null), "html", null, true))) : (print ("[]"))); echo "\"> env, ($context["fulltext_indexes"] ?? null), "html", null, true))) : (print ("[]"))); echo "\"> env, ($context["spatial_indexes"] ?? null), "html", null, true))) : (print ("[]"))); echo "\"> "; // line 19 if ((($context["action"] ?? null) == "tbl_create.php")) { // line 20 echo "
      "; // line 23 echo _gettext("Table name"); echo ": env, ($context["table"] ?? null), "html", null, true))) : (print (""))); echo "\" class=\"textfield\" autofocus required /> "; // line 32 echo _gettext("Add"); // line 33 echo " "; // line 40 echo _gettext("column(s)"); // line 41 echo "
      "; } // line 49 echo " "; if (twig_test_iterable(($context["content_cells"] ?? null))) { // line 50 echo " "; $this->loadTemplate("columns_definitions/table_fields_definitions.twig", "columns_definitions/column_definitions_form.twig", 50)->display(twig_to_array(["is_backup" => // line 51 ($context["is_backup"] ?? null), "fields_meta" => // line 52 ($context["fields_meta"] ?? null), "mimework" => // line 53 ($context["mimework"] ?? null), "content_cells" => // line 54 ($context["content_cells"] ?? null), "change_column" => // line 55 ($context["change_column"] ?? null), "is_virtual_columns_supported" => // line 56 ($context["is_virtual_columns_supported"] ?? null), "browse_mime" => // line 57 ($context["browse_mime"] ?? null), "server_type" => // line 58 ($context["server_type"] ?? null), "max_rows" => // line 59 ($context["max_rows"] ?? null), "char_editing" => // line 60 ($context["char_editing"] ?? null), "attribute_types" => // line 61 ($context["attribute_types"] ?? null), "privs_available" => // line 62 ($context["privs_available"] ?? null), "max_length" => // line 63 ($context["max_length"] ?? null), "dbi" => // line 64 ($context["dbi"] ?? null), "disable_is" => // line 65 ($context["disable_is"] ?? null)])); // line 67 echo " "; } // line 68 echo " "; if ((($context["action"] ?? null) == "tbl_create.php")) { // line 69 echo "
      "; // line 125 if (($context["have_partitioning"] ?? null)) { // line 126 echo " "; } // line 140 echo "
      "; // line 72 echo _gettext("Table comments:"); echo "   "; // line 74 echo _gettext("Collation:"); echo "   "; // line 77 echo _gettext("Storage Engine:"); // line 78 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("Storage_engines"); echo "   "; // line 82 echo _gettext("Connection:"); // line 83 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("federated-create-connection"); echo "
      env, ($context["comment"] ?? null), "html", null, true))) : (print (""))); echo "\" class=\"textfield\" />   "; // line 97 echo PhpMyAdmin\Charsets::getCollationDropdownBox( // line 98 ($context["dbi"] ?? null), // line 99 ($context["disable_is"] ?? null), "tbl_collation", null, // line 102 ($context["tbl_collation"] ?? null), false); // line 104 echo "   "; // line 108 echo PhpMyAdmin\StorageEngine::getHtmlSelect("tbl_storage_engine", null, // line 111 ($context["tbl_storage_engine"] ?? null)); // line 112 echo "   env, ($context["connection"] ?? null), "html", null, true))) : (print (""))); echo "\" placeholder=\"scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name\" class=\"textfield\" required=\"required\" />
      "; // line 128 echo _gettext("PARTITION definition:"); // line 129 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("Partitioning"); echo "
      "; // line 134 $this->loadTemplate("columns_definitions/partitions.twig", "columns_definitions/column_definitions_form.twig", 134)->display(twig_to_array(["partition_details" => // line 135 ($context["partition_details"] ?? null)])); // line 137 echo "
      "; } // line 143 echo "
      "; } public function getTemplateName() { return "columns_definitions/column_definitions_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 267 => 149, 261 => 146, 256 => 143, 251 => 140, 246 => 137, 244 => 135, 243 => 134, 234 => 129, 232 => 128, 228 => 126, 226 => 125, 217 => 119, 208 => 112, 206 => 111, 205 => 108, 199 => 104, 197 => 102, 196 => 99, 195 => 98, 194 => 97, 186 => 92, 173 => 83, 171 => 82, 163 => 78, 161 => 77, 155 => 74, 150 => 72, 145 => 69, 142 => 68, 139 => 67, 137 => 65, 136 => 64, 135 => 63, 134 => 62, 133 => 61, 132 => 60, 131 => 59, 130 => 58, 129 => 57, 128 => 56, 127 => 55, 126 => 54, 125 => 53, 124 => 52, 123 => 51, 121 => 50, 118 => 49, 109 => 43, 105 => 41, 103 => 40, 94 => 33, 92 => 32, 85 => 28, 77 => 23, 72 => 20, 70 => 19, 65 => 17, 61 => 15, 57 => 13, 53 => 11, 49 => 9, 47 => 8, 45 => 7, 43 => 6, 39 => 4, 36 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_definitions_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_definitions_form.twig"); } } db/login/tmp/twig/f8/f864ecf075b166f82d4b4a6a8d0bb6a1c36fe9c8abb8165d1d83fee343289ff6.php000064400000005465151502156020022255 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, PhpMyAdmin\Core::linkURL("https://www.phpmyadmin.net/"), "html", null, true); echo "\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"logo\"> env, $this->getAttribute(($context["theme"] ?? null), "getImgPath", [0 => "logo_right.png", 1 => "pma_logo.png"], "method"), "html", null, true); echo "\" id=\"imLogo\" name=\"imLogo\" alt=\"phpMyAdmin\" border=\"0\" />

      "; // line 5 echo sprintf(_gettext("Welcome to %s"), "phpMyAdmin"); echo "

      "; // line 12 echo call_user_func_array($this->env->getFunction('Message_error')->getCallable(), [_gettext("There is mismatch between HTTPS indicated on the server and client. This can lead to non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly.")]); echo "
      "; } public function getTemplateName() { return "login/header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 12, 48 => 8, 42 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "login/header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/login/header.twig"); } } db/login/tmp/twig/0e/0eb1aeda282ccbbe77a54d41933472e0fa22cbdb67d065a70f10e52ef8eee03a.php000064400000012033151502156020022306 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 2 if ( !twig_test_empty(($context["class"] ?? null))) { echo " class=\""; echo twig_escape_filter($this->env, ($context["class"] ?? null), "html", null, true); echo "\""; } echo "> "; // line 4 if ((((isset($context["url"]) || array_key_exists("url", $context)) && twig_test_iterable(($context["url"] ?? null))) && !twig_test_empty($this->getAttribute(($context["url"] ?? null), "href", [], "array")))) { // line 5 echo " getAttribute(($context["url"] ?? null), "href", [], "array"))) { echo " href=\""; echo $this->getAttribute(($context["url"] ?? null), "href", [], "array"); echo "\""; } // line 6 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "target", [], "array"))) { echo " target=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "target", [], "array"), "html", null, true); echo "\""; } // line 7 if (( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "target", [], "array")) && ($this->getAttribute(($context["url"] ?? null), "target", [], "array") == "_blank"))) { echo " rel=\"noopener noreferrer\""; } // line 8 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "id", [], "array"))) { echo " id=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "id", [], "array"), "html", null, true); echo "\""; } // line 9 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "class", [], "array"))) { echo " class=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "class", [], "array"), "html", null, true); echo "\""; } // line 10 if ( !twig_test_empty($this->getAttribute(($context["url"] ?? null), "title", [], "array"))) { echo " title=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["url"] ?? null), "title", [], "array"), "html", null, true); echo "\""; } echo "> "; } // line 12 echo " "; echo ($context["content"] ?? null); echo " "; // line 13 if ((((isset($context["url"]) || array_key_exists("url", $context)) && twig_test_iterable(($context["url"] ?? null))) && !twig_test_empty($this->getAttribute(($context["url"] ?? null), "href", [], "array")))) { // line 14 echo " "; } // line 16 echo " "; if ( !twig_test_empty(($context["mysql_help_page"] ?? null))) { // line 17 echo " "; echo PhpMyAdmin\Util::showMySQLDocu(($context["mysql_help_page"] ?? null)); echo " "; } // line 19 echo " "; } public function getTemplateName() { return "list/item.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 106 => 19, 100 => 17, 97 => 16, 93 => 14, 91 => 13, 86 => 12, 77 => 10, 71 => 9, 65 => 8, 61 => 7, 55 => 6, 48 => 5, 46 => 4, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "list/item.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/list/item.twig"); } } db/login/tmp/twig/0e/0eb7ed35b2d0bfb13f455ef5f193b82400dbc18586efa56f2378e190f9eccf8a.php000064400000003532151502156020022221 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "fk_checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 4, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "fk_checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/fk_checkbox.twig"); } } db/login/tmp/twig/6f/6fba76d361c89075e358b233882f3e7eae671e928a49cae6497aff07da6ea4a0.php000064400000007555151502156020022043 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " $context["value"]) { // line 3 echo " "; echo twig_escape_filter($this->env, $context["key"], "html", null, true); echo "=\""; echo twig_escape_filter($this->env, $context["value"], "html", null, true); echo "\""; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['key'], $context['value'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 4 echo "> "; // line 5 echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true); echo " "; // line 6 if ( !twig_test_empty(($context["description"] ?? null))) { // line 7 echo "

      "; echo ($context["description"] ?? null); echo "

      "; } // line 10 if ((twig_test_iterable(($context["errors"] ?? null)) && (twig_length_filter($this->env, ($context["errors"] ?? null)) > 0))) { // line 11 echo "
      "; // line 12 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["errors"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["error"]) { // line 13 echo "
      "; echo twig_escape_filter($this->env, $context["error"], "html", null, true); echo "
      "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 15 echo "
      "; } // line 17 echo " "; } public function getTemplateName() { return "config/form_display/fieldset_top.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 83 => 17, 79 => 15, 70 => 13, 66 => 12, 63 => 11, 61 => 10, 55 => 7, 53 => 6, 49 => 5, 46 => 4, 36 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/fieldset_top.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/fieldset_top.twig"); } } db/login/tmp/twig/a4/a4ac2d12abf69de11d60c766983504d1851fe7977f21705a65ac7a9c025fed61.php000064400000012707151502156020021637 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 if ((($context["is_superuser"] ?? null) || ($context["allow_user_drop_database"] ?? null))) { // line 4 echo " "; } // line 6 echo " "; // line 15 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["column_order"] ?? null)); foreach ($context['_seq'] as $context["stat_name"] => $context["stat"]) { // line 16 echo " "; if (twig_in_filter($context["stat_name"], twig_get_array_keys_filter(($context["first_database"] ?? null)))) { // line 17 echo " "; $context["url_params"] = twig_array_merge(($context["url_params"] ?? null), ["sort_by" => // line 18 $context["stat_name"], "sort_order" => (((( // line 19 ($context["sort_by"] ?? null) == $context["stat_name"]) && (($context["sort_order"] ?? null) == "desc"))) ? ("asc") : ("desc"))]); // line 21 echo " getAttribute($context["stat"], "format", [], "array") === "byte")) ? (" colspan=\"2\"") : ("")); echo "> "; // line 24 echo twig_escape_filter($this->env, $this->getAttribute($context["stat"], "disp_name", [], "array"), "html", null, true); echo " "; // line 25 echo (((($context["sort_by"] ?? null) == $context["stat_name"])) ? (PhpMyAdmin\Util::getImage(("s_" . // line 26 ($context["sort_order"] ?? null)), // line 27 ($context["sort_order_text"] ?? null))) : ("")); // line 28 echo " "; } // line 32 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['stat_name'], $context['stat'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 33 echo " "; if (($context["master_replication"] ?? null)) { // line 34 echo " "; } // line 36 echo " "; if (($context["slave_replication"] ?? null)) { // line 37 echo " "; } // line 39 echo " "; } public function getTemplateName() { return "server/databases/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 120 => 39, 114 => 37, 111 => 36, 105 => 34, 102 => 33, 96 => 32, 90 => 28, 88 => 27, 87 => 26, 86 => 25, 82 => 24, 78 => 23, 74 => 22, 71 => 21, 69 => 19, 68 => 18, 66 => 17, 63 => 16, 59 => 15, 54 => 12, 52 => 11, 51 => 10, 49 => 9, 47 => 8, 43 => 7, 40 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/databases/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/databases/table_header.twig"); } } db/login/tmp/twig/a4/a47fe9e07c42fc463219633bd7b7f55baed9a9f21f5ef8588684e5e37e6d1820.php000064400000041551151502156020021763 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 if ((($context["foreigners"] ?? null) && call_user_func_array($this->env->getFunction('Relation_searchColumnInForeigners')->getCallable(), [($context["foreigners"] ?? null), ($context["column_name"] ?? null)]))) { // line 3 echo " "; if (twig_test_iterable($this->getAttribute(($context["foreign_data"] ?? null), "disp_row", [], "array"))) { // line 4 echo " "; } elseif (($this->getAttribute( // line 14 ($context["foreign_data"] ?? null), "foreign_link", [], "array") == true)) { // line 15 echo " env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" name=\"criteriaValues["; // line 17 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "]\" id=\"field_"; // line 18 echo twig_escape_filter($this->env, ($context["column_name_hash"] ?? null), "html", null, true); echo "["; echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "]\" class=\"textfield\" "; // line 20 if ($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true)) { // line 21 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"), "html", null, true); echo "\" "; } // line 22 echo " /> ($context["db"] ?? null), "table" => ($context["table"] ?? null)], ""); // line 25 echo "&field="; echo twig_escape_filter($this->env, twig_urlencode_filter(($context["column_name"] ?? null)), "html", null, true); echo "&fieldkey="; // line 26 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "&fromsearch=1\"> "; // line 27 echo twig_replace_filter($this->getAttribute(($context["titles"] ?? null), "Browse", [], "array"), ["'" => "\\'"]); echo " "; } } elseif (twig_in_filter( // line 30 ($context["column_type"] ?? null), PhpMyAdmin\Util::getGISDatatypes())) { // line 31 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" size=\"40\" class=\"textfield\" id=\"field_"; // line 35 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" /> "; // line 36 if (($context["in_fbs"] ?? null)) { // line 37 echo " "; $context["edit_url"] = ("gis_data_editor.php" . PhpMyAdmin\Url::getCommon()); // line 38 echo " "; $context["edit_str"] = PhpMyAdmin\Util::getIcon("b_edit", _gettext("Edit/Insert")); // line 39 echo " "; // line 40 echo PhpMyAdmin\Util::linkOrButton(($context["edit_url"] ?? null), ($context["edit_str"] ?? null), [], "_blank"); echo " "; } } elseif (((is_string($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4 = // line 43 ($context["column_type"] ?? null)) && is_string($__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 = "enum") && ('' === $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 || 0 === strpos($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4, $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144))) || ((is_string($__internal_1cfccaec8dd2e8578ccb026fbe7f2e7e29ac2ed5deb976639c5fc99a6ea8583b = // line 44 ($context["column_type"] ?? null)) && is_string($__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002 = "set") && ('' === $__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002 || 0 === strpos($__internal_1cfccaec8dd2e8578ccb026fbe7f2e7e29ac2ed5deb976639c5fc99a6ea8583b, $__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002))) && ($context["in_zoom_search_edit"] ?? null)))) { // line 45 echo " "; $context["in_zoom_search_edit"] = false; // line 46 echo " "; $context["value"] = twig_split_filter($this->env, twig_replace_filter(twig_slice($this->env, twig_escape_filter($this->env, ($context["column_type"] ?? null)), 5, -1), ["'" => ""]), ", "); // line 47 echo " "; $context["cnt_value"] = twig_length_filter($this->env, ($context["value"] ?? null)); // line 48 echo " "; // line 54 echo " "; if ((((is_string($__internal_d7fc55f1a54b629533d60b43063289db62e68921ee7a5f8de562bd9d4a2b7ad4 = ($context["column_type"] ?? null)) && is_string($__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666 = "enum") && ('' === $__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666 || 0 === strpos($__internal_d7fc55f1a54b629533d60b43063289db62e68921ee7a5f8de562bd9d4a2b7ad4, $__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666))) && !($context["in_zoom_search_edit"] ?? null)) || ((is_string($__internal_01c35b74bd85735098add188b3f8372ba465b232ab8298cb582c60f493d3c22e = // line 55 ($context["column_type"] ?? null)) && is_string($__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52 = "set") && ('' === $__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52 || 0 === strpos($__internal_01c35b74bd85735098add188b3f8372ba465b232ab8298cb582c60f493d3c22e, $__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52))) && ($context["in_zoom_search_edit"] ?? null)))) { // line 56 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" id=\""; // line 60 echo twig_escape_filter($this->env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" multiple=\"multiple\" size=\""; // line 62 echo twig_escape_filter($this->env, min(3, ($context["cnt_value"] ?? null)), "html", null, true); echo "\"> "; } // line 64 echo " "; // line 65 echo " "; // line 66 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, (($context["cnt_value"] ?? null) - 1))); foreach ($context['_seq'] as $context["_key"] => $context["i"]) { // line 67 echo " "; if ((($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true) && twig_test_iterable($this->getAttribute( // line 68 ($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"))) && twig_in_filter($this->getAttribute( // line 69 ($context["value"] ?? null), $context["i"], [], "array"), $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array")))) { // line 70 echo " "; } else { // line 74 echo " "; } // line 78 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['i'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 79 echo " "; } else { // line 81 echo " "; $context["the_class"] = "textfield"; // line 82 echo " "; if ((($context["column_type"] ?? null) == "date")) { // line 83 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " datefield"); // line 84 echo " "; } elseif (((($context["column_type"] ?? null) == "datetime") || (is_string($__internal_f10a4cc339617934220127f034125576ed229e948660ebac906a15846d52f136 = ($context["column_type"] ?? null)) && is_string($__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386 = "timestamp") && ('' === $__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386 || 0 === strpos($__internal_f10a4cc339617934220127f034125576ed229e948660ebac906a15846d52f136, $__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386))))) { // line 85 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " datetimefield"); // line 86 echo " "; } elseif ((is_string($__internal_d527c24a729d38501d770b40a0d25e1ce8a7f0bff897cc4f8f449ba71fcff3d9 = ($context["column_type"] ?? null)) && is_string($__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae = "bit") && ('' === $__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae || 0 === strpos($__internal_d527c24a729d38501d770b40a0d25e1ce8a7f0bff897cc4f8f449ba71fcff3d9, $__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae)))) { // line 87 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " bit"); // line 88 echo " "; } // line 89 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" size=\"40\" class=\""; // line 92 echo twig_escape_filter($this->env, ($context["the_class"] ?? null), "html", null, true); echo "\" id=\""; // line 93 echo twig_escape_filter($this->env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" "; // line 94 if ($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true)) { // line 95 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"), "html", null, true); echo "\""; } // line 96 echo " /> "; } } public function getTemplateName() { return "table/search/input_box.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 274 => 96, 269 => 95, 267 => 94, 262 => 93, 258 => 92, 253 => 90, 250 => 89, 247 => 88, 244 => 87, 241 => 86, 238 => 85, 235 => 84, 232 => 83, 229 => 82, 226 => 81, 222 => 79, 216 => 78, 210 => 75, 205 => 74, 199 => 71, 194 => 70, 192 => 69, 191 => 68, 189 => 67, 185 => 66, 182 => 65, 180 => 64, 175 => 62, 169 => 60, 164 => 59, 158 => 57, 153 => 56, 151 => 55, 149 => 54, 147 => 48, 144 => 47, 141 => 46, 138 => 45, 136 => 44, 135 => 43, 129 => 40, 126 => 39, 123 => 38, 120 => 37, 118 => 36, 114 => 35, 108 => 32, 105 => 31, 103 => 30, 97 => 27, 93 => 26, 89 => 25, 87 => 24, 84 => 22, 78 => 21, 76 => 20, 69 => 18, 65 => 17, 60 => 16, 57 => 15, 55 => 14, 51 => 12, 49 => 11, 48 => 9, 47 => 8, 46 => 7, 45 => 6, 40 => 5, 35 => 4, 32 => 3, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/input_box.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/input_box.twig"); } } db/login/tmp/twig/a4/a49a944225d69636e60c581e17aaceefffebe40aeb5931afd4aaa3da6a0039b9.php000064400000026514151502156020022343 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 10 if (($context["server_slave_status"] ?? null)) { // line 11 echo " "; } // line 13 echo " "; $context["sum_colspan"] = ((($context["db_is_system_schema"] ?? null)) ? (4) : (7)); // line 14 echo " "; if ((($context["num_favorite_tables"] ?? null) == 0)) { // line 15 echo " "; $context["sum_colspan"] = (($context["sum_colspan"] ?? null) - 1); // line 16 echo " "; } // line 17 echo " "; // line 18 $context["row_count_sum"] = PhpMyAdmin\Util::formatNumber(($context["sum_entries"] ?? null), 0); // line 19 echo " "; // line 20 echo " "; $context["row_sum_url"] = []; // line 21 echo " "; if ((isset($context["approx_rows"]) || array_key_exists("approx_rows", $context))) { // line 22 echo " "; $context["row_sum_url"] = ["ajax_request" => true, "db" => // line 24 ($context["db"] ?? null), "real_row_count" => "true", "real_row_count_all" => "true"]; // line 28 echo " "; } // line 29 echo " "; if (($context["approx_rows"] ?? null)) { // line 30 echo " "; ob_start(function () { return ''; }); // line 31 echo "~"; // line 33 echo twig_escape_filter($this->env, ($context["row_count_sum"] ?? null), "html", null, true); // line 34 echo ""; $context["cell_text"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 36 echo " "; } else { // line 37 echo " "; $context["cell_text"] = ($context["row_count_sum"] ?? null); // line 38 echo " "; } // line 39 echo " "; // line 40 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 41 echo " "; // line 42 echo " "; $context["default_engine"] = $this->getAttribute(($context["dbi"] ?? null), "fetchValue", [0 => "SELECT @@storage_engine;"], "method"); // line 43 echo " "; if (twig_test_empty(($context["default_engine"] ?? null))) { // line 44 echo " "; // line 45 echo " "; $context["default_engine"] = $this->getAttribute(($context["dbi"] ?? null), "fetchValue", [0 => "SELECT @@default_storage_engine;"], "method"); // line 46 echo " "; } // line 47 echo " "; } // line 60 echo " "; // line 61 if (($context["is_show_stats"] ?? null)) { // line 62 echo " "; $context["sum"] = PhpMyAdmin\Util::formatByteDown(($context["sum_size"] ?? null), 3, 1); // line 63 echo " "; $context["sum_formatted"] = $this->getAttribute(($context["sum"] ?? null), 0, [], "array"); // line 64 echo " "; $context["sum_unit"] = $this->getAttribute(($context["sum"] ?? null), 1, [], "array"); // line 65 echo " "; // line 67 $context["overhead"] = PhpMyAdmin\Util::formatByteDown(($context["overhead_size"] ?? null), 3, 1); // line 68 echo " "; $context["overhead_formatted"] = $this->getAttribute(($context["overhead"] ?? null), 0, [], "array"); // line 69 echo " "; $context["overhead_unit"] = $this->getAttribute(($context["overhead"] ?? null), 1, [], "array"); // line 70 echo " "; } // line 72 echo " "; // line 73 if (($context["show_charset"] ?? null)) { // line 74 echo " "; } // line 76 echo " "; if (($context["show_comment"] ?? null)) { // line 77 echo " "; } // line 79 echo " "; if (($context["show_creation"] ?? null)) { // line 80 echo " "; } // line 84 echo " "; if (($context["show_last_update"] ?? null)) { // line 85 echo " "; } // line 89 echo " "; if (($context["show_last_check"] ?? null)) { // line 90 echo " "; } // line 94 echo " "; } public function getTemplateName() { return "database/structure/body_for_table_summary.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 264 => 94, 258 => 91, 255 => 90, 252 => 89, 246 => 86, 243 => 85, 240 => 84, 234 => 81, 231 => 80, 228 => 79, 224 => 77, 221 => 76, 215 => 74, 213 => 73, 210 => 72, 202 => 70, 199 => 69, 196 => 68, 194 => 67, 186 => 65, 183 => 64, 180 => 63, 177 => 62, 175 => 61, 172 => 60, 168 => 58, 162 => 55, 155 => 54, 153 => 53, 146 => 49, 142 => 48, 139 => 47, 136 => 46, 133 => 45, 131 => 44, 128 => 43, 125 => 42, 123 => 41, 121 => 40, 116 => 39, 113 => 38, 110 => 37, 107 => 36, 104 => 34, 102 => 33, 99 => 32, 97 => 31, 94 => 30, 91 => 29, 88 => 28, 86 => 24, 84 => 22, 81 => 21, 78 => 20, 76 => 19, 74 => 18, 67 => 17, 64 => 16, 61 => 15, 58 => 14, 55 => 13, 49 => 11, 47 => 10, 41 => 8, 38 => 6, 36 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/body_for_table_summary.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/body_for_table_summary.twig"); } } db/login/tmp/twig/41/4161342482a4d1436d31f5619bbdbd176c50e500207e3f364662f5ba8210fe31.php000064400000006147151502156020021141 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["parent_div_classes"] ?? null), "html", null, true); echo "\"> "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_array"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content"]) { // line 3 echo " "; if ((isset($context["content"]) || array_key_exists("content", $context))) { // line 4 echo "
      env, $this->getAttribute($context["content"], 0, [], "array"), "html", null, true); echo "\"> "; // line 5 echo (($this->getAttribute($context["content"], "image", [], "array", true, true)) ? ($this->getAttribute($context["content"], "image", [], "array")) : ("")); echo " "; // line 6 echo twig_escape_filter($this->env, $this->getAttribute($context["content"], 1, [], "array"), "html", null, true); echo "
      "; } // line 9 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 10 echo "
      "; } public function getTemplateName() { return "console/toolbar.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 63 => 10, 57 => 9, 51 => 6, 47 => 5, 42 => 4, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/toolbar.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/toolbar.twig"); } } db/login/tmp/twig/41/41f4b3efa18075962fbfdb7dad9cf36de608bc592eab5583976f068a98fa4cdb.php000064400000007222151502156020022245 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "dropdown.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 78 => 11, 68 => 9, 64 => 8, 60 => 7, 51 => 5, 49 => 4, 47 => 3, 39 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "dropdown.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/dropdown.twig"); } } db/login/tmp/twig/b1/b1394b3dfa880c9fdd8ed48a90d1c0486786a6021e044dc01670e971b41c0c63.php000064400000006147151502156020021545 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["parent_div_classes"] ?? null), "html", null, true); echo "\"> "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_array"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content"]) { // line 3 echo " "; if ((isset($context["content"]) || array_key_exists("content", $context))) { // line 4 echo "
      env, $this->getAttribute($context["content"], 0, [], "array"), "html", null, true); echo "\"> "; // line 5 echo (($this->getAttribute($context["content"], "image", [], "array", true, true)) ? ($this->getAttribute($context["content"], "image", [], "array")) : ("")); echo " "; // line 6 echo twig_escape_filter($this->env, $this->getAttribute($context["content"], 1, [], "array"), "html", null, true); echo "
      "; } // line 9 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 10 echo "
      "; } public function getTemplateName() { return "console/toolbar.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 63 => 10, 57 => 9, 51 => 6, 47 => 5, 42 => 4, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/toolbar.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/toolbar.twig"); } } db/login/tmp/twig/3f/3f14a768eafadb3d044ab9231646e499fe5888a4cdfcf2c602c8fed9c6503ca0.php000064400000006176151502156020022235 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "display/results/table_navigation_button.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 66 => 10, 61 => 9, 57 => 8, 53 => 7, 49 => 6, 45 => 5, 41 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/table_navigation_button.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/table_navigation_button.twig"); } } db/login/tmp/twig/93/9324b539cde75f6e934c368174c88a454eae7e54343e499583dd99f6f59d8149.php000064400000013234151502156020021366 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 $this->loadTemplate("select_all.twig", "table/structure/check_all_table_column.twig", 2)->display(twig_to_array(["pma_theme_image" => // line 3 ($context["pma_theme_image"] ?? null), "text_dir" => // line 4 ($context["text_dir"] ?? null), "form_name" => "fieldsForm"])); // line 7 echo " "; // line 8 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Browse"), "b_browse", "browse"); // line 14 echo " "; // line 16 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 17 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit change_columns_anchor ajax", _gettext("Change"), "b_edit", "change"); // line 23 echo " "; // line 24 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Drop"), "b_drop", "drop"); // line 30 echo " "; // line 32 if ((($context["tbl_storage_engine"] ?? null) != "ARCHIVE")) { // line 33 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Primary"), "b_primary", "primary"); // line 39 echo " "; // line 40 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Unique"), "b_unique", "unique"); // line 46 echo " "; // line 47 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Index"), "b_index", "index"); // line 53 echo " "; // line 54 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Fulltext"), "b_ftext", "ftext"); // line 60 echo " "; // line 62 if (( !twig_test_empty(($context["tbl_storage_engine"] ?? null)) && ((( // line 63 ($context["tbl_storage_engine"] ?? null) == "MYISAM") || ( // line 64 ($context["tbl_storage_engine"] ?? null) == "ARIA")) || ( // line 65 ($context["tbl_storage_engine"] ?? null) == "MARIA")))) { // line 66 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Fulltext"), "b_ftext", "ftext"); // line 72 echo " "; } // line 74 echo " "; // line 75 if (($context["central_columns_work"] ?? null)) { // line 76 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Add to central columns"), "centralColumns_add", "add_to_central_columns"); // line 82 echo " "; // line 83 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Remove from central columns"), "centralColumns_delete", "remove_from_central_columns"); // line 89 echo " "; } // line 91 echo " "; } // line 92 echo " "; } // line 93 echo "
      "; } public function getTemplateName() { return "table/structure/check_all_table_column.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 119 => 93, 116 => 92, 113 => 91, 109 => 89, 107 => 83, 104 => 82, 101 => 76, 99 => 75, 96 => 74, 92 => 72, 89 => 66, 87 => 65, 86 => 64, 85 => 63, 84 => 62, 80 => 60, 78 => 54, 75 => 53, 73 => 47, 70 => 46, 68 => 40, 65 => 39, 62 => 33, 60 => 32, 56 => 30, 54 => 24, 51 => 23, 48 => 17, 46 => 16, 42 => 14, 40 => 8, 37 => 7, 35 => 4, 34 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/check_all_table_column.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/check_all_table_column.twig"); } } db/login/tmp/twig/74/74b6fdb6cb9c8ee0a3a08c3b0e8289233d9786de03692f10b28ecf397b618d1e.php000064400000012276151502156020021745 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Output:"); echo "

      • "; // line 11 if ((($context["export_type"] ?? null) != "server")) { // line 12 echo "
      • "; } // line 21 echo "
        • "; // line 29 if ( !twig_test_empty(($context["save_dir"] ?? null))) { // line 30 echo " "; echo ($context["options_output_save_dir"] ?? null); echo " "; } // line 32 echo " "; // line 33 echo ($context["options_output_format"] ?? null); echo " "; // line 35 if (($context["is_encoding_supported"] ?? null)) { // line 36 echo " "; echo ($context["options_output_charset"] ?? null); echo " "; } // line 38 echo " "; // line 39 echo ($context["options_output_compression"] ?? null); echo " "; // line 41 if (((($context["export_type"] ?? null) == "server") || (($context["export_type"] ?? null) == "database"))) { // line 42 echo " "; echo ($context["options_output_separate_files"] ?? null); echo " "; } // line 44 echo "
      • "; // line 47 echo ($context["options_output_radio"] ?? null); echo "
      "); // line 53 echo "
      "; } public function getTemplateName() { return "display/export/options_output.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 137 => 53, 135 => 51, 129 => 47, 124 => 44, 118 => 42, 116 => 41, 111 => 39, 108 => 38, 102 => 36, 100 => 35, 95 => 33, 92 => 32, 86 => 30, 84 => 29, 80 => 27, 78 => 26, 73 => 24, 69 => 21, 62 => 17, 57 => 15, 53 => 12, 51 => 11, 46 => 8, 44 => 7, 39 => 5, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output.twig"); } } db/login/tmp/twig/28/28b0a50a461f315897fb47142ece66a0b8507cf6c7ae8bc0404cabfbe0ed785a.php000064400000007277151502156020022052 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 8 echo _gettext("Database"); // line 9 echo " "; echo (((($context["sort_by"] ?? null) == "SCHEMA_NAME")) ? (PhpMyAdmin\Util::getImage(("s_" . // line 10 ($context["sort_order"] ?? null)), // line 11 ($context["sort_order_text"] ?? null))) : ("")); // line 12 echo " "; echo _gettext("Master replication"); echo ""; echo _gettext("Slave replication"); echo ""; echo _gettext("Action"); echo "
      "; // line 5 ob_start(function () { return ''; }); // line 6 echo _ngettext("%s table", "%s tables", abs(($context["num_tables"] ?? null))); $context["num_tables_trans"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 8 echo " "; echo twig_escape_filter($this->env, sprintf(($context["num_tables_trans"] ?? null), PhpMyAdmin\Util::formatNumber(($context["num_tables"] ?? null), 0)), "html", null, true); echo " "; echo _gettext("Replication"); echo "env, ($context["sum_colspan"] ?? null), "html", null, true); echo "\" class=\"print_ignore\">"; echo _gettext("Sum"); echo ""; echo twig_escape_filter($this->env, ($context["cell_text"] ?? null), "html", null, true); echo " env, sprintf(_gettext("%s is the default storage engine on this MySQL server."), ($context["default_engine"] ?? null)), "html", null, true); echo "\"> "; // line 49 echo twig_escape_filter($this->env, ($context["default_engine"] ?? null), "html", null, true); echo " "; // line 53 if ( !twig_test_empty(($context["db_collation"] ?? null))) { // line 54 echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["db_collation"] ?? null)), "html", null, true); echo " ("; echo _gettext("Default"); echo ")\"> "; // line 55 echo twig_escape_filter($this->env, ($context["db_collation"] ?? null), "html", null, true); echo " "; } // line 58 echo " "; echo twig_escape_filter($this->env, ($context["sum_formatted"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["sum_unit"] ?? null), "html", null, true); echo ""; echo twig_escape_filter($this->env, ($context["overhead_formatted"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["overhead_unit"] ?? null), "html", null, true); echo ""; echo twig_escape_filter($this->env, ($context["db_charset"] ?? null), "html", null, true); echo " "; // line 81 ((($context["create_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["create_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; // line 86 ((($context["update_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["update_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; // line 91 ((($context["check_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["check_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo "
      "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["pos"] ?? null), "html", null, true); echo "\" /> env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> env, ($context["goto"] ?? null), "html", null, true); echo "\" /> "; // line 8 echo ($context["input_for_real_end"] ?? null); echo " env, ($context["title"] ?? null), "html", null, true); echo "\""; // line 10 echo ($context["onclick"] ?? null); echo " />
      "; // line 4 echo _gettext("Define new aliases"); echo "
      "; } public function getTemplateName() { return "export/alias_add.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 104 => 46, 98 => 43, 89 => 37, 81 => 32, 75 => 29, 66 => 23, 58 => 18, 52 => 15, 43 => 9, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "export/alias_add.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/export/alias_add.twig"); } } db/login/tmp/twig/28/28af1caf396ac475c326cbe67581c876a7c3b540942c07d38f7d8f38746b7047.php000064400000006760151502156020021457 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 $context["header"] = ["variables" => ["image" => "s_vars", "text" => _gettext("Server variables and settings")], "engines" => ["image" => "b_engine", "text" => _gettext("Storage engines")], "plugins" => ["image" => "b_plugin", "text" => _gettext("Plugins")], "binlog" => ["image" => "s_tbl", "text" => _gettext("Binary log")], "collations" => ["image" => "s_asci", "text" => _gettext("Character sets and collations")], "replication" => ["image" => "s_replication", "text" => _gettext("Replication")], "database_statistics" => ["image" => "s_db", "text" => _gettext("Databases statistics")], "databases" => ["image" => "s_db", "text" => _gettext("Databases")], "privileges" => ["image" => "b_usrlist", "text" => _gettext("Privileges")]]; // line 40 echo "

      "; // line 41 if ((((isset($context["is_image"]) || array_key_exists("is_image", $context))) ? (_twig_default_filter(($context["is_image"] ?? null), true)) : (true))) { // line 42 echo " "; echo PhpMyAdmin\Util::getImage($this->getAttribute($this->getAttribute(($context["header"] ?? null), ($context["type"] ?? null), [], "array"), "image", [], "array")); echo " "; } else { // line 44 echo " "; echo PhpMyAdmin\Util::getIcon($this->getAttribute($this->getAttribute(($context["header"] ?? null), ($context["type"] ?? null), [], "array"), "image", [], "array")); echo " "; } // line 46 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["header"] ?? null), ($context["type"] ?? null), [], "array"), "text", [], "array"), "html", null, true); echo " "; // line 47 echo (((isset($context["link"]) || array_key_exists("link", $context))) ? (PhpMyAdmin\Util::showMySQLDocu(($context["link"] ?? null))) : ("")); echo "

      "; } public function getTemplateName() { return "server/sub_page_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 54 => 47, 49 => 46, 43 => 44, 37 => 42, 35 => 41, 32 => 40, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/sub_page_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/sub_page_header.twig"); } } db/login/tmp/twig/28/28bcfd31671cb4e1cff7084a80ef5574315cd27a4f33c530bc9ae8da8934caf6.php000064400000005332151502156020022057 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " env, ($context["goto"] ?? null), "html", null, true); echo "\" /> "; // line 4 echo "env, ($context["pos"] ?? null), "html", null, true); echo "\" /> env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> "; // line 6 echo _gettext("Number of rows:"); // line 7 echo PhpMyAdmin\Util::getDropdown("session_max_rows", // line 9 ($context["number_of_rows_choices"] ?? null), // line 10 ($context["max_rows"] ?? null), "", "autosubmit", // line 13 ($context["number_of_rows_placeholder"] ?? null)); // line 14 echo " "; } public function getTemplateName() { return "display/results/additional_fields.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 14, 53 => 13, 52 => 10, 51 => 9, 50 => 7, 48 => 6, 44 => 5, 39 => 4, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/additional_fields.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/additional_fields.twig"); } } db/login/tmp/twig/28/28a4149927e77d0b3c6c67684765358534f20d24430e4275b9388fea6e418212.php000064400000006237151502156020020734 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 $this->loadTemplate("server/sub_page_header.twig", "server/databases/index.twig", 2)->display(twig_to_array(["type" => (( // line 3 ($context["dbstats"] ?? null)) ? ("database_statistics") : ("databases"))])); // line 5 echo " "; // line 7 if (($context["show_create_db"] ?? null)) { // line 8 echo " "; $this->loadTemplate("server/databases/create.twig", "server/databases/index.twig", 8)->display(twig_to_array(["is_create_db_priv" => // line 9 ($context["is_create_db_priv"] ?? null), "dbstats" => // line 10 ($context["dbstats"] ?? null), "db_to_create" => // line 11 ($context["db_to_create"] ?? null), "server_collation" => // line 12 ($context["server_collation"] ?? null), "dbi" => // line 13 ($context["dbi"] ?? null), "disable_is" => // line 14 ($context["disable_is"] ?? null)])); } // line 17 echo " "; // line 18 $this->loadTemplate("filter.twig", "server/databases/index.twig", 18)->display(twig_to_array(["filter_value" => ""])); // line 19 echo " "; // line 21 if ( !(null === ($context["databases"] ?? null))) { // line 22 echo " "; echo ($context["databases"] ?? null); echo " "; } else { // line 24 echo "

      "; echo _gettext("No databases"); echo "

      "; } } public function getTemplateName() { return "server/databases/index.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 64 => 24, 58 => 22, 56 => 21, 53 => 19, 51 => 18, 48 => 17, 45 => 14, 44 => 13, 43 => 12, 42 => 11, 41 => 10, 40 => 9, 38 => 8, 36 => 7, 33 => 5, 31 => 3, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/databases/index.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/databases/index.twig"); } } db/login/tmp/twig/ea/ea83a9c90f4972138fe3ff9a3a3fd42290a70b376123cf31c045c77a9656d9d9.php000064400000026243151502156020021660 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 34 echo " "; if (((isset($context["change_column"]) || array_key_exists("change_column", $context)) && !twig_test_empty(($context["change_column"] ?? null)))) { // line 35 echo " "; } // line 40 echo " "; // line 44 echo " "; if ( !($context["is_backup"] ?? null)) { // line 45 echo " "; } // line 49 echo " "; // line 57 if (($context["is_virtual_columns_supported"] ?? null)) { // line 58 echo " "; } // line 62 echo " "; // line 63 if ((isset($context["fields_meta"]) || array_key_exists("fields_meta", $context))) { // line 64 echo " "; } // line 68 echo " "; // line 69 if ((($context["mimework"] ?? null) && ($context["browse_mime"] ?? null))) { // line 70 echo " "; } // line 97 echo " "; // line 98 $context["options"] = ["" => "", "VIRTUAL" => "VIRTUAL"]; // line 99 echo " "; if ((($context["server_type"] ?? null) == "MariaDB")) { // line 100 echo " "; $context["options"] = twig_array_merge(($context["options"] ?? null), ["PERSISTENT" => "PERSISTENT"]); // line 101 echo " "; $context["options"] = twig_array_merge(($context["options"] ?? null), ["STORED" => "STORED"]); // line 102 echo " "; } else { // line 103 echo " "; $context["options"] = twig_array_merge(($context["options"] ?? null), ["STORED" => "STORED"]); // line 104 echo " "; } // line 105 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_cells"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content_row"]) { // line 106 echo " "; // line 107 $this->loadTemplate("columns_definitions/column_attributes.twig", "columns_definitions/table_fields_definitions.twig", 107)->display(twig_to_array(twig_array_merge($context["content_row"], ["options" => // line 108 ($context["options"] ?? null), "change_column" => // line 109 ($context["change_column"] ?? null), "is_virtual_columns_supported" => // line 110 ($context["is_virtual_columns_supported"] ?? null), "browse_mime" => // line 111 ($context["browse_mime"] ?? null), "max_rows" => // line 112 ($context["max_rows"] ?? null), "char_editing" => // line 113 ($context["char_editing"] ?? null), "attribute_types" => // line 114 ($context["attribute_types"] ?? null), "privs_available" => // line 115 ($context["privs_available"] ?? null), "max_length" => // line 116 ($context["max_length"] ?? null), "dbi" => // line 117 ($context["dbi"] ?? null), "disable_is" => // line 118 ($context["disable_is"] ?? null)]))); // line 120 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content_row'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 122 echo "
      "; // line 4 echo _gettext("Structure"); // line 5 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("CREATE_TABLE"); echo "
      "; // line 9 echo _gettext("Name"); // line 10 echo " "; // line 12 echo _gettext("Type"); // line 13 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("data-types"); echo " "; // line 16 echo _gettext("Length/Values"); // line 17 echo " "; echo PhpMyAdmin\Util::showHint(_gettext("If column type is \"enum\" or \"set\", please enter the values using this format: 'a','b','c'…
      If you ever need to put a backslash (\"\") or a single quote (\"'\") amongst those values, precede it with a backslash (for example '\\\\xyz' or 'a\\'b').")); echo "
      "; // line 20 echo _gettext("Default"); // line 21 echo " "; echo PhpMyAdmin\Util::showHint(_gettext("For default values, please enter just a single value, without backslash escaping or quotes, using this format: a")); echo " "; // line 24 echo _gettext("Collation"); // line 25 echo " "; // line 27 echo _gettext("Attributes"); // line 28 echo " "; // line 30 echo _gettext("Null"); // line 31 echo " "; // line 36 echo _gettext("Adjust privileges"); // line 37 echo " "; echo PhpMyAdmin\Util::showDocu("faq", "faq6-39"); echo " "; // line 46 echo _gettext("Index"); // line 47 echo " A_I "; // line 54 echo _gettext("Comments"); // line 55 echo " "; // line 59 echo _gettext("Virtuality"); // line 60 echo " "; // line 65 echo _gettext("Move column"); // line 66 echo " "; // line 71 echo _gettext("MIME type"); // line 72 echo " "; // line 78 echo _gettext("Browser display transformation"); // line 79 echo " "; // line 82 echo _gettext("Browser display transformation options"); // line 83 echo " "; echo PhpMyAdmin\Util::showHint(_gettext("Please enter the values for transformation options using this format: 'a', 100, b,'c'…
      If you ever need to put a backslash (\"\\\") or a single quote (\"'\") amongst those values, precede it with a backslash (for example '\\\\xyz' or 'a\\'b').")); echo "
      "; // line 89 echo _gettext("Input transformation"); // line 90 echo " "; // line 93 echo _gettext("Input transformation options"); // line 94 echo " "; echo PhpMyAdmin\Util::showHint(_gettext("Please enter the values for transformation options using this format: 'a', 100, b,'c'…
      If you ever need to put a backslash (\"\\\") or a single quote (\"'\") amongst those values, precede it with a backslash (for example '\\\\xyz' or 'a\\'b').")); echo "
      "; } public function getTemplateName() { return "columns_definitions/table_fields_definitions.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 278 => 122, 271 => 120, 269 => 118, 268 => 117, 267 => 116, 266 => 115, 265 => 114, 264 => 113, 263 => 112, 262 => 111, 261 => 110, 260 => 109, 259 => 108, 258 => 107, 255 => 106, 250 => 105, 247 => 104, 244 => 103, 241 => 102, 238 => 101, 235 => 100, 232 => 99, 230 => 98, 227 => 97, 220 => 94, 218 => 93, 213 => 90, 211 => 89, 206 => 87, 202 => 86, 195 => 83, 193 => 82, 188 => 79, 186 => 78, 183 => 77, 181 => 76, 178 => 75, 174 => 72, 172 => 71, 169 => 70, 167 => 69, 164 => 68, 160 => 66, 158 => 65, 155 => 64, 153 => 63, 150 => 62, 146 => 60, 144 => 59, 141 => 58, 139 => 57, 135 => 55, 133 => 54, 126 => 49, 122 => 47, 120 => 46, 117 => 45, 114 => 44, 111 => 40, 104 => 37, 102 => 36, 99 => 35, 96 => 34, 92 => 31, 90 => 30, 86 => 28, 84 => 27, 80 => 25, 78 => 24, 71 => 21, 69 => 20, 62 => 17, 60 => 16, 53 => 13, 51 => 12, 47 => 10, 45 => 9, 37 => 5, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/table_fields_definitions.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/table_fields_definitions.twig"); } } db/login/tmp/twig/ea/ea4da835c84a3b2f6a549dc1406446c857368b546cfd42ee71434033bbf19ac0.php000064400000007053151502156020021706 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 2 if ( !twig_test_empty(($context["class"] ?? null))) { echo " class=\""; echo twig_escape_filter($this->env, ($context["class"] ?? null), "html", null, true); echo "\""; } echo "> "; // line 4 if ( !twig_test_empty(($context["items"] ?? null))) { // line 5 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["items"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["item"]) { // line 6 echo " "; if ( !twig_test_iterable($context["item"])) { // line 7 echo " "; $context["item"] = ["content" => $context["item"]]; // line 8 echo " "; } // line 9 echo " "; $this->loadTemplate("list/item.twig", "list/unordered.twig", 9)->display(twig_to_array($context["item"])); // line 10 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 11 echo " "; } elseif ( !twig_test_empty(($context["content"] ?? null))) { // line 12 echo " "; echo ($context["content"] ?? null); echo " "; } // line 14 echo " "; } public function getTemplateName() { return "list/unordered.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 14, 74 => 12, 71 => 11, 65 => 10, 62 => 9, 59 => 8, 56 => 7, 53 => 6, 48 => 5, 46 => 4, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "list/unordered.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/list/unordered.twig"); } } db/login/tmp/twig/37/3799c822b5b25a39bbe222264c012bcc8bb92cb4d2d352f35b33ab29a6d123b9.php000064400000022611151502156020021600 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 3 echo _gettext("Information"); echo " "; // line 4 if ($this->getAttribute(($context["showtable"] ?? null), "TABLE_COMMENT", [], "array")) { // line 5 echo "

      "; // line 6 echo _gettext("Table comments:"); echo " "; // line 7 echo twig_escape_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "TABLE_COMMENT", [], "array"), "html", null, true); echo "

      "; } // line 10 echo " "; // line 12 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 13 echo " "; // line 22 if ((isset($context["index_size"]) || array_key_exists("index_size", $context))) { // line 23 echo " "; } // line 29 echo " "; // line 30 if ((isset($context["free_size"]) || array_key_exists("free_size", $context))) { // line 31 echo " "; } // line 42 echo " "; // line 43 if (((isset($context["tot_size"]) || array_key_exists("tot_size", $context)) && (($context["mergetable"] ?? null) == false))) { // line 44 echo " "; } // line 50 echo " "; // line 52 echo " "; if (((isset($context["free_size"]) || array_key_exists("free_size", $context)) && (((( // line 53 ($context["tbl_storage_engine"] ?? null) == "MYISAM") || ( // line 54 ($context["tbl_storage_engine"] ?? null) == "ARIA")) || ( // line 55 ($context["tbl_storage_engine"] ?? null) == "MARIA")) || ( // line 56 ($context["tbl_storage_engine"] ?? null) == "BDB")))) { // line 57 echo " "; } // line 66 echo "
      "; // line 14 echo _gettext("Space usage"); echo "
      "; // line 17 echo _gettext("Data"); echo " "; // line 18 echo twig_escape_filter($this->env, ($context["data_size"] ?? null), "html", null, true); echo " "; // line 19 echo twig_escape_filter($this->env, ($context["data_unit"] ?? null), "html", null, true); echo "
      "; // line 24 echo _gettext("Index"); echo " "; // line 25 echo twig_escape_filter($this->env, ($context["index_size"] ?? null), "html", null, true); echo " "; // line 26 echo twig_escape_filter($this->env, ($context["index_unit"] ?? null), "html", null, true); echo "
      "; // line 32 echo _gettext("Overhead"); echo " "; // line 33 echo twig_escape_filter($this->env, ($context["free_size"] ?? null), "html", null, true); echo " "; // line 34 echo twig_escape_filter($this->env, ($context["free_unit"] ?? null), "html", null, true); echo "
      "; // line 37 echo _gettext("Effective"); echo " "; // line 38 echo twig_escape_filter($this->env, ($context["effect_size"] ?? null), "html", null, true); echo " "; // line 39 echo twig_escape_filter($this->env, ($context["effect_unit"] ?? null), "html", null, true); echo "
      "; // line 45 echo _gettext("Total"); echo " "; // line 46 echo twig_escape_filter($this->env, ($context["tot_size"] ?? null), "html", null, true); echo " "; // line 47 echo twig_escape_filter($this->env, ($context["tot_unit"] ?? null), "html", null, true); echo "
      env, ($context["url_query"] ?? null), "html", null, true); echo "&pos=0&sql_query="; // line 60 echo twig_escape_filter($this->env, twig_urlencode_filter(("OPTIMIZE TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null)))), "html", null, true); echo "\"> "; // line 61 echo PhpMyAdmin\Util::getIcon("b_tbloptimize", _gettext("Optimize table")); echo "
      "; } // line 69 echo " "; // line 70 $this->loadTemplate("table/structure/row_stats_table.twig", "table/structure/display_table_stats.twig", 70)->display(twig_to_array(["showtable" => // line 71 ($context["showtable"] ?? null), "tbl_collation" => // line 72 ($context["tbl_collation"] ?? null), "is_innodb" => // line 73 ($context["is_innodb"] ?? null), "mergetable" => // line 74 ($context["mergetable"] ?? null), "avg_size" => (( // line 75 (isset($context["avg_size"]) || array_key_exists("avg_size", $context))) ? (($context["avg_size"] ?? null)) : (null)), "avg_unit" => (( // line 76 (isset($context["avg_unit"]) || array_key_exists("avg_unit", $context))) ? (($context["avg_unit"] ?? null)) : (null))])); // line 78 echo "
      "; } public function getTemplateName() { return "table/structure/display_table_stats.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 204 => 78, 202 => 76, 201 => 75, 200 => 74, 199 => 73, 198 => 72, 197 => 71, 196 => 70, 193 => 69, 188 => 66, 180 => 61, 176 => 60, 173 => 59, 169 => 57, 167 => 56, 166 => 55, 165 => 54, 164 => 53, 162 => 52, 159 => 50, 153 => 47, 149 => 46, 145 => 45, 142 => 44, 140 => 43, 137 => 42, 131 => 39, 127 => 38, 123 => 37, 117 => 34, 113 => 33, 109 => 32, 106 => 31, 104 => 30, 101 => 29, 95 => 26, 91 => 25, 87 => 24, 84 => 23, 82 => 22, 76 => 19, 72 => 18, 68 => 17, 62 => 14, 59 => 13, 57 => 12, 53 => 10, 47 => 7, 43 => 6, 40 => 5, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/display_table_stats.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/display_table_stats.twig"); } } db/login/tmp/twig/37/379da1c6c3af70a12235ed4b151e266df563ed92ba38269c3fe8db03ed3528fd.php000064400000006425151502156020021777 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Format-specific options:"); echo "

      "; // line 4 echo _gettext("Scroll down to fill in the options for the selected format and ignore the options for other formats."); // line 5 echo "

      "; // line 6 echo ($context["options"] ?? null); echo "
      "; // line 9 if (($context["can_convert_kanji"] ?? null)) { // line 10 echo " "; // line 11 echo "

      "; // line 12 echo _gettext("Encoding Conversion:"); echo "

      "; // line 13 $this->loadTemplate("encoding/kanji_encoding_form.twig", "display/export/options_format.twig", 13)->display($context); // line 14 echo "
      "; } // line 16 echo "
      0)) { // line 22 echo " onclick=\"check_time_out("; echo twig_escape_filter($this->env, ($context["exec_time_limit"] ?? null), "html", null, true); echo ")\""; } // line 23 echo ">
      "; } public function getTemplateName() { return "display/export/options_format.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 23, 75 => 22, 73 => 21, 70 => 18, 66 => 16, 62 => 14, 60 => 13, 56 => 12, 53 => 11, 51 => 10, 49 => 9, 43 => 6, 40 => 5, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_format.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_format.twig"); } } db/login/tmp/twig/61/617742b41a84a517d9ba8cea5c758317c8710226dba696447e827ff2b5ecac85.php000064400000011135151502156020021510 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo ""; echo PhpMyAdmin\Util::getIcon("b_print", _gettext("Print"), true); echo " "; // line 2 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 3 echo " "; // line 4 echo " "; if (((($context["mysql_int_version"] ?? null) < 80000) || ($context["is_mariadb"] ?? null))) { // line 5 echo " env, twig_urlencode_filter((("SELECT * FROM " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " PROCEDURE ANALYSE()")), "html", null, true); // line 7 echo "\" style=\"margin-right: 0;\"> "; // line 8 echo PhpMyAdmin\Util::getIcon("b_tblanalyse", _gettext("Propose table structure"), true); // line 12 echo " "; // line 14 echo PhpMyAdmin\Util::showMySQLDocu("procedure_analyse"); echo " "; } // line 16 echo " "; if (($context["is_active"] ?? null)) { // line 17 echo " "; // line 18 echo PhpMyAdmin\Util::getIcon("eye", _gettext("Track table"), true); echo " "; } // line 21 echo " "; // line 22 echo PhpMyAdmin\Util::getIcon("b_move", _gettext("Move columns"), true); echo " "; // line 25 echo PhpMyAdmin\Util::getIcon("normalize", _gettext("Normalize"), true); echo " "; } // line 28 if ((($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 29 echo " "; if (($context["is_active"] ?? null)) { // line 30 echo " "; // line 31 echo PhpMyAdmin\Util::getIcon("eye", _gettext("Track view"), true); echo " "; } } } public function getTemplateName() { return "table/structure/optional_action_links.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 104 => 31, 99 => 30, 96 => 29, 94 => 28, 88 => 25, 84 => 24, 79 => 22, 76 => 21, 70 => 18, 65 => 17, 62 => 16, 57 => 14, 53 => 12, 51 => 8, 48 => 7, 46 => 6, 42 => 5, 39 => 4, 37 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/optional_action_links.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/optional_action_links.twig"); } } db/login/tmp/twig/61/61cf92e037fb131bad1ea24485b8e2ab7f0dd05dbe0bcdec85d8a96c80458223.php000064400000005235151502156020022115 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($context["display_logo"] ?? null)) { // line 2 echo " "; } } public function getTemplateName() { return "navigation/logo.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 57 => 11, 53 => 9, 51 => 8, 46 => 7, 41 => 5, 37 => 4, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "navigation/logo.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/navigation/logo.twig"); } } db/login/tmp/twig/61/61ceffa79330f535f3f38cddb03ed376bed6c7ae087ce415031307833d48d15c.php000064400000004014151502156020021710 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • "; } public function getTemplateName() { return "display/export/options_output_radio.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 40 => 6, 38 => 5, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_radio.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_radio.twig"); } } db/login/tmp/twig/8a/8aff141cf8d425bb845589684066ff2507e82d47114037d68e58b6658907a947.php000064400000021026151502156020021171 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 if ((($context["is_superuser"] ?? null) || ($context["allow_user_drop_database"] ?? null))) { // line 4 echo " "; } // line 6 echo " "; // line 7 echo _gettext("Total"); echo ": "; // line 8 echo twig_escape_filter($this->env, ($context["database_count"] ?? null), "html", null, true); // line 9 echo " "; // line 11 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["column_order"] ?? null)); foreach ($context['_seq'] as $context["stat_name"] => $context["stat"]) { // line 12 echo " "; if (twig_in_filter($context["stat_name"], twig_get_array_keys_filter(($context["first_database"] ?? null)))) { // line 13 echo " "; if (($this->getAttribute($context["stat"], "format", [], "array") === "byte")) { // line 14 echo " "; $context["byte_format"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute($context["stat"], "footer", [], "array"), 3, 1); // line 15 echo " "; $context["value"] = $this->getAttribute(($context["byte_format"] ?? null), 0, [], "array"); // line 16 echo " "; $context["unit"] = $this->getAttribute(($context["byte_format"] ?? null), 1, [], "array"); // line 17 echo " "; } elseif (($this->getAttribute($context["stat"], "format", [], "array") === "number")) { // line 18 echo " "; $context["value"] = PhpMyAdmin\Util::formatNumber($this->getAttribute($context["stat"], "footer", [], "array"), 0); // line 19 echo " "; } else { // line 20 echo " "; $context["value"] = htmlentities($this->getAttribute($context["stat"], "footer", [], "array"), 0); // line 21 echo " "; } // line 22 echo " "; // line 24 if ($this->getAttribute($context["stat"], "description_function", [], "array", true, true)) { // line 25 echo " env, PhpMyAdmin\Charsets::getCollationDescr($this->getAttribute($context["stat"], "footer", [], "array")), "html", null, true); echo "\"> "; // line 26 echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo " "; } else { // line 29 echo " "; echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo " "; } // line 31 echo " "; // line 32 if (($this->getAttribute($context["stat"], "format", [], "array") === "byte")) { // line 33 echo " "; echo twig_escape_filter($this->env, ($context["unit"] ?? null), "html", null, true); echo " "; } // line 35 echo " "; } // line 36 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['stat_name'], $context['stat'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 37 echo " "; if (($context["master_replication"] ?? null)) { // line 38 echo " "; } // line 40 echo " "; if (($context["slave_replication"] ?? null)) { // line 41 echo " "; } // line 43 echo "
      "; // line 50 if ((($context["is_superuser"] ?? null) || ($context["allow_user_drop_database"] ?? null))) { // line 51 echo " "; $this->loadTemplate("select_all.twig", "server/databases/databases_footer.twig", 51)->display(twig_to_array(["pma_theme_image" => // line 52 ($context["pma_theme_image"] ?? null), "text_dir" => // line 53 ($context["text_dir"] ?? null), "form_name" => "dbStatsForm"])); // line 56 echo " "; // line 57 echo PhpMyAdmin\Util::getButtonOrImage("", "mult_submit ajax", _gettext("Drop"), "b_deltbl"); // line 62 echo " "; } // line 64 echo " "; // line 66 if (twig_test_empty(($context["dbstats"] ?? null))) { // line 67 echo " "; echo call_user_func_array($this->env->getFunction('Message_notice')->getCallable(), [_gettext("Note: Enabling the database statistics here might cause heavy traffic between the web server and the MySQL server.")]); echo " "; } // line 76 echo " "; } public function getTemplateName() { return "server/databases/databases_footer.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 193 => 76, 185 => 71, 179 => 70, 172 => 67, 170 => 66, 167 => 64, 163 => 62, 161 => 57, 158 => 56, 156 => 53, 155 => 52, 153 => 51, 151 => 50, 143 => 43, 139 => 41, 136 => 40, 132 => 38, 129 => 37, 123 => 36, 120 => 35, 114 => 33, 112 => 32, 109 => 31, 103 => 29, 97 => 26, 92 => 25, 90 => 24, 86 => 22, 83 => 21, 80 => 20, 77 => 19, 74 => 18, 71 => 17, 68 => 16, 65 => 15, 62 => 14, 59 => 13, 56 => 12, 52 => 11, 48 => 9, 46 => 8, 43 => 7, 40 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/databases/databases_footer.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/databases/databases_footer.twig"); } } db/login/tmp/twig/8a/8a16ca4dbbd4143d994e5b20d8e1e088f482b5a41bf77d34526b36523fc966d7.php000064400000002766151502156020021657 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "config/form_display/form_bottom.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/form_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/form_bottom.twig"); } } db/login/tmp/twig/0d/0dbf5c5a662dbd3dcf20ac4feb546c7bda9be0aa834a3964c1ec6fbd5a8353ac.php000064400000005332151502156020022622 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " env, ($context["goto"] ?? null), "html", null, true); echo "\" /> "; // line 4 echo "env, ($context["pos"] ?? null), "html", null, true); echo "\" /> env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> "; // line 6 echo _gettext("Number of rows:"); // line 7 echo PhpMyAdmin\Util::getDropdown("session_max_rows", // line 9 ($context["number_of_rows_choices"] ?? null), // line 10 ($context["max_rows"] ?? null), "", "autosubmit", // line 13 ($context["number_of_rows_placeholder"] ?? null)); // line 14 echo " "; } public function getTemplateName() { return "display/results/additional_fields.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 14, 53 => 13, 52 => 10, 51 => 9, 50 => 7, 48 => 6, 44 => 5, 39 => 4, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/additional_fields.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/additional_fields.twig"); } } db/login/tmp/twig/c4/c42fb8e833dd16e6593a71f031bc646b5840dd62c39147d523b70b5bab6a0dea.php000064400000003764151502156020021761 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "table/search/column_comparison_operators.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/column_comparison_operators.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/column_comparison_operators.twig"); } } db/login/tmp/twig/14/140c756129da8384403e2fcbb734bd5487b20e1e097f39f50e980bfd75933ec9.php000064400000027721151502156020021440 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 echo PhpMyAdmin\Url::getHiddenInputs(($context["url_params"] ?? null)); echo "
      "; // line 7 if (($context["ajax_dialog"] ?? null)) { // line 8 echo " "; echo _gettext("Details"); // line 9 echo " "; } else { // line 10 echo " "; if (($this->getAttribute(($context["view"] ?? null), "operation", [], "array") == "create")) { // line 11 echo " "; echo _gettext("Create view"); // line 12 echo " "; } else { // line 13 echo " "; echo _gettext("Edit view"); // line 14 echo " "; } // line 15 echo " "; } // line 16 echo " "; // line 18 if (($this->getAttribute(($context["view"] ?? null), "operation", [], "array") == "create")) { // line 19 echo " "; } // line 28 echo " "; // line 63 if (($this->getAttribute(($context["view"] ?? null), "operation", [], "array") == "create")) { // line 64 echo " "; } else { // line 71 echo " "; } // line 77 echo "
      getAttribute(($context["view"] ?? null), "or_replace", [], "array")) { echo " checked=\"checked\" "; } // line 24 echo " value=\"1\" />
      "; // line 45 echo _gettext("Definer"); echo " env, $this->getAttribute(($context["view"] ?? null), "definer", [], "array"), "html", null, true); echo "\" />
      SQL SECURITY
      "; // line 65 echo _gettext("VIEW name"); echo " env, $this->getAttribute(($context["view"] ?? null), "name", [], "array"), "html", null, true); echo "\" />
      env, $this->getAttribute(($context["view"] ?? null), "name", [], "array"), "html", null, true); echo "\" />
      "; // line 79 echo _gettext("Column names"); echo " env, $this->getAttribute(($context["view"] ?? null), "column_names", [], "array"), "html", null, true); echo "\" />
      AS
      WITH CHECK OPTION
      getAttribute(($context["view"] ?? null), "operation", [], "array") == "create")) ? ("createview") : ("alterview")); echo "\" value=\"1\" /> "; // line 114 if ((($context["ajax_dialog"] ?? null) == false)) { // line 115 echo " "; } // line 118 echo "
      "; } public function getTemplateName() { return "view_create.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 280 => 118, 275 => 116, 272 => 115, 270 => 114, 265 => 112, 255 => 104, 246 => 102, 242 => 101, 237 => 100, 233 => 99, 217 => 88, 207 => 81, 202 => 79, 198 => 77, 191 => 73, 187 => 71, 180 => 67, 175 => 65, 172 => 64, 170 => 63, 164 => 59, 155 => 57, 151 => 56, 146 => 55, 142 => 54, 131 => 46, 127 => 45, 120 => 40, 111 => 38, 107 => 36, 105 => 35, 100 => 34, 96 => 33, 89 => 28, 83 => 24, 79 => 23, 73 => 19, 71 => 18, 67 => 16, 64 => 15, 61 => 14, 58 => 13, 55 => 12, 52 => 11, 49 => 10, 46 => 9, 43 => 8, 41 => 7, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "view_create.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/view_create.twig"); } } db/login/tmp/twig/14/14ebb88c3c2bc88c491ff8c9b112feb10f2fd4aee1c0dd7a1babe58a46bdced0.php000064400000005625151502156020022631 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["export_method"] ?? null) != "custom-no-form")) { // line 2 echo "

      "; // line 3 echo _gettext("Export method:"); echo "

      "; } } public function getTemplateName() { return "display/export/method.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 61 => 18, 59 => 17, 54 => 15, 48 => 10, 46 => 9, 41 => 7, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/method.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/method.twig"); } } db/login/tmp/twig/40/40e4cffda5b91a109fbdcbc7c461c59cee77ba1e13518f3bdcb0c13ed65c2fff.php000064400000003363151502156020022553 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/search_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/search_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/search_table.twig"); } } db/login/tmp/twig/7f/7fb170169cdbc3cba2d10fa5d1625cc2ede2cee72cd57ffa88cfd798ccd1315b.php000064400000005465151502156020022600 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, PhpMyAdmin\Core::linkURL("https://www.phpmyadmin.net/"), "html", null, true); echo "\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"logo\"> env, $this->getAttribute(($context["theme"] ?? null), "getImgPath", [0 => "logo_right.png", 1 => "pma_logo.png"], "method"), "html", null, true); echo "\" id=\"imLogo\" name=\"imLogo\" alt=\"phpMyAdmin\" border=\"0\" />

      "; // line 5 echo sprintf(_gettext("Welcome to %s"), "phpMyAdmin"); echo "

      "; // line 12 echo call_user_func_array($this->env->getFunction('Message_error')->getCallable(), [_gettext("There is mismatch between HTTPS indicated on the server and client. This can lead to non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly.")]); echo "
      "; } public function getTemplateName() { return "login/header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 12, 48 => 8, 42 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "login/header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/login/header.twig"); } } db/login/tmp/twig/7f/7f2fea86c14cdbd8cd63e93670d9fef0c3d91595972a398d9aa8d5d919c9aa63.php000064400000007053151502156020022217 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 2 if ( !twig_test_empty(($context["class"] ?? null))) { echo " class=\""; echo twig_escape_filter($this->env, ($context["class"] ?? null), "html", null, true); echo "\""; } echo "> "; // line 4 if ( !twig_test_empty(($context["items"] ?? null))) { // line 5 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["items"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["item"]) { // line 6 echo " "; if ( !twig_test_iterable($context["item"])) { // line 7 echo " "; $context["item"] = ["content" => $context["item"]]; // line 8 echo " "; } // line 9 echo " "; $this->loadTemplate("list/item.twig", "list/unordered.twig", 9)->display(twig_to_array($context["item"])); // line 10 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 11 echo " "; } elseif ( !twig_test_empty(($context["content"] ?? null))) { // line 12 echo " "; echo ($context["content"] ?? null); echo " "; } // line 14 echo " "; } public function getTemplateName() { return "list/unordered.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 14, 74 => 12, 71 => 11, 65 => 10, 62 => 9, 59 => 8, 56 => 7, 53 => 6, 48 => 5, 46 => 4, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "list/unordered.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/list/unordered.twig"); } } db/login/tmp/twig/da/da84ab4578b456842498dce021c1fd43b03f596071d0e0a34fb5d7b3a4a669c8.php000064400000002651151502156020021707 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; } public function getTemplateName() { return "login/footer.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "login/footer.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/login/footer.twig"); } } db/login/tmp/twig/0a/0a46898454922cce902902b21aaeb6e7f394dece200a22ad9202c53a17aacdeb.php000064400000006241151502156020022006 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • "; } public function getTemplateName() { return "display/export/options_output_charset.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 65 => 15, 58 => 13, 56 => 12, 54 => 11, 51 => 10, 49 => 9, 48 => 8, 44 => 7, 40 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_charset.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_charset.twig"); } } db/login/tmp/twig/0a/0a749dcdbf7fd0541417660f883e4a70374b6889c98221bd838ed1eae6ec85fd.php000064400000005466151502156020021753 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ( !twig_test_empty(($context["class"] ?? null))) { // line 2 echo "
      env, ($context["class"] ?? null), "html", null, true); echo "\"> "; } // line 4 echo "env, ($context["html_field_name"] ?? null), "html", null, true); echo "\" id=\""; echo ($context["html_field_id"] ?? null); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["choice_value"] ?? null), "html", null, true); echo "\""; echo ((($context["checked"] ?? null)) ? (" checked=\"checked\"") : ("")); echo " /> "; // line 6 if (($context["is_line_break"] ?? null)) { // line 7 echo "
      "; } // line 9 if ( !twig_test_empty(($context["class"] ?? null))) { // line 10 echo "
      "; } } public function getTemplateName() { return "radio_fields.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 63 => 10, 61 => 9, 57 => 7, 55 => 6, 49 => 5, 38 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "radio_fields.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/radio_fields.twig"); } } db/login/tmp/twig/0a/0ac897125654b1746fb84b96517edee17a18ea266e38e06721fd7760049f8004.php000064400000021230151502156020021262 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " env, $this->getAttribute(($context["row"] ?? null), "Field", [], "array"), "html", null, true); echo "\" id=\"checkbox_row_"; echo twig_escape_filter($this->env, ($context["rownum"] ?? null), "html", null, true); echo "\"/> "; // line 4 echo twig_escape_filter($this->env, ($context["rownum"] ?? null), "html", null, true); echo " env, ($context["type_nowrap"] ?? null), "html", null, true); echo "> "; // line 12 echo $this->getAttribute(($context["extracted_columnspec"] ?? null), "displayed_type", [], "array"); echo " "; // line 13 if ((((($context["relation_commwork"] ?? null) && ($context["relation_mimework"] ?? null)) && ($context["browse_mime"] ?? null)) && $this->getAttribute($this->getAttribute( // line 14 ($context["mime_map"] ?? null), $this->getAttribute(($context["row"] ?? null), "Field", [], "array"), [], "array", false, true), "mimetype", [], "array", true, true))) { // line 15 echo "
      MIME: "; echo twig_escape_filter($this->env, twig_lower_filter($this->env, twig_replace_filter($this->getAttribute($this->getAttribute(($context["mime_map"] ?? null), $this->getAttribute(($context["row"] ?? null), "Field", [], "array"), [], "array"), "mimetype", [], "array"), ["_" => "/"])), "html", null, true); echo " "; } // line 17 echo "
      "; // line 20 if ( !twig_test_empty(($context["field_charset"] ?? null))) { // line 21 echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["field_charset"] ?? null)), "html", null, true); echo "\">"; echo twig_escape_filter($this->env, ($context["field_charset"] ?? null), "html", null, true); echo " "; } // line 23 echo " "; // line 24 echo twig_escape_filter($this->env, ($context["attribute"] ?? null), "html", null, true); echo " "; // line 25 echo twig_escape_filter($this->env, ((($this->getAttribute(($context["row"] ?? null), "Null", [], "array") == "YES")) ? (_gettext("Yes")) : (_gettext("No"))), "html", null, true); echo " "; // line 27 if ( !(null === $this->getAttribute(($context["row"] ?? null), "Default", [], "array"))) { // line 28 echo " "; if (($this->getAttribute(($context["extracted_columnspec"] ?? null), "type", [], "array") == "bit")) { // line 29 echo " "; echo twig_escape_filter($this->env, PhpMyAdmin\Util::convertBitDefaultValue($this->getAttribute(($context["row"] ?? null), "Default", [], "array")), "html", null, true); echo " "; } else { // line 31 echo " "; echo $this->getAttribute(($context["row"] ?? null), "Default", [], "array"); echo " "; } // line 33 echo " "; } else { // line 34 echo " "; echo _pgettext( "None for default", "None"); echo " "; } // line 36 echo " "; // line 37 if (($context["show_column_comments"] ?? null)) { // line 38 echo " "; // line 39 echo twig_escape_filter($this->env, ($context["comments"] ?? null), "html", null, true); echo " "; } // line 42 echo ""; echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute(($context["row"] ?? null), "Extra", [], "array")), "html", null, true); echo " "; // line 43 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 44 echo " env, ($context["url_query"] ?? null), "html", null, true); echo "&field="; echo twig_escape_filter($this->env, twig_urlencode_filter($this->getAttribute(($context["row"] ?? null), "Field", [], "array")), "html", null, true); echo "&change_column=1\"> "; // line 47 echo $this->getAttribute(($context["titles"] ?? null), "Change", [], "array"); echo " env, ($context["url_query"] ?? null), "html", null, true); echo "&sql_query="; // line 52 echo twig_escape_filter($this->env, twig_urlencode_filter((((("ALTER TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " DROP ") . PhpMyAdmin\Util::backquote($this->getAttribute( // line 53 ($context["row"] ?? null), "Field", [], "array"))) . ";")), "html", null, true); // line 54 echo "&dropped_column="; echo twig_escape_filter($this->env, twig_urlencode_filter($this->getAttribute(($context["row"] ?? null), "Field", [], "array")), "html", null, true); echo "&purge=1&message_to_show="; // line 55 echo twig_escape_filter($this->env, twig_urlencode_filter(sprintf(_gettext("Column %s has been dropped."), twig_escape_filter($this->env, $this->getAttribute(($context["row"] ?? null), "Field", [], "array")))), "html", null, true); echo "\"> "; // line 56 echo $this->getAttribute(($context["titles"] ?? null), "Drop", [], "array"); echo " "; } } public function getTemplateName() { return "table/structure/table_structure_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 177 => 56, 173 => 55, 169 => 54, 167 => 53, 166 => 52, 163 => 51, 156 => 47, 150 => 46, 147 => 44, 145 => 43, 140 => 42, 134 => 39, 131 => 38, 129 => 37, 126 => 36, 120 => 34, 117 => 33, 111 => 31, 105 => 29, 102 => 28, 100 => 27, 95 => 25, 91 => 24, 88 => 23, 80 => 21, 78 => 20, 73 => 17, 67 => 15, 65 => 14, 64 => 13, 60 => 12, 55 => 10, 49 => 7, 45 => 6, 40 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/table_structure_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/table_structure_row.twig"); } } db/login/tmp/twig/46/46ed5456a0d8790f4a4d4ced141a4bf51c369cc7b20f119f48d2ebd604d8e63c.php000064400000034262151502156020022001 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 echo " "; $this->loadTemplate("console/toolbar.twig", "console/display.twig", 4)->display(twig_to_array(["parent_div_classes" => "collapsed", "content_array" => [0 => [0 => "switch_button console_switch", 1 => _gettext("Console"), "image" => // line 7 ($context["image"] ?? null)], 1 => [0 => "button clear", 1 => _gettext("Clear")], 2 => [0 => "button history", 1 => _gettext("History")], 3 => [0 => "button options", 1 => _gettext("Options")], 4 => (( // line 11 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "button bookmarks", 1 => _gettext("Bookmarks")]) : (null)), 5 => [0 => "button debug hide", 1 => _gettext("Debug SQL")]]])); // line 15 echo " "; // line 16 echo "
      "; // line 20 echo _gettext("Press Ctrl+Enter to execute query"); // line 21 echo " "; // line 23 echo _gettext("Press Enter to execute query"); // line 24 echo "
      "; // line 26 if ( !twig_test_empty(($context["sql_history"] ?? null))) { // line 27 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(twig_reverse_filter($this->env, ($context["sql_history"] ?? null))); foreach ($context['_seq'] as $context["_key"] => $context["record"]) { // line 28 echo "
      getAttribute($context["record"], "sqlquery", [], "array"))) ? (" select") : ("")); echo "\" targetdb=\""; // line 30 echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "db", [], "array"), "html", null, true); echo "\" targettable=\""; echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "table", [], "array"), "html", null, true); echo "\"> "; // line 31 $this->loadTemplate("console/query_action.twig", "console/display.twig", 31)->display(twig_to_array(["parent_div_classes" => "action_content", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action requery", 1 => _gettext("Requery")], 3 => [0 => "action edit", 1 => _gettext("Edit")], 4 => [0 => "action explain", 1 => _gettext("Explain")], 5 => [0 => "action profiling", 1 => _gettext("Profiling")], 6 => (( // line 40 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "action bookmark", 1 => _gettext("Bookmark")]) : (null)), 7 => [0 => "text failed", 1 => _gettext("Query failed")], 8 => [0 => "text targetdb", 1 => _gettext("Database"), "extraSpan" => $this->getAttribute( // line 42 $context["record"], "db", [], "array")], 9 => [0 => "text query_time", 1 => _gettext("Queried time"), "extraSpan" => (($this->getAttribute( // line 46 $context["record"], "timevalue", [], "array", true, true)) ? ($this->getAttribute( // line 47 $context["record"], "timevalue", [], "array")) : (_gettext("During current session")))]]])); // line 51 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "sqlquery", [], "array"), "html", null, true); echo "
      "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['record'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 54 echo " "; } // line 55 echo "
      "; // line 61 echo "
      "; // line 63 echo "
      "; // line 64 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 64)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "button order order_asc", 1 => _gettext("ascending")], 1 => [0 => "button order order_desc", 1 => _gettext("descending")], 2 => [0 => "text", 1 => _gettext("Order:")], 3 => [0 => "switch_button", 1 => _gettext("Debug SQL")], 4 => [0 => "button order_by sort_count", 1 => _gettext("Count")], 5 => [0 => "button order_by sort_exec", 1 => _gettext("Execution order")], 6 => [0 => "button order_by sort_time", 1 => _gettext("Time taken")], 7 => [0 => "text", 1 => _gettext("Order by:")], 8 => [0 => "button group_queries", 1 => _gettext("Group queries")], 9 => [0 => "button ungroup_queries", 1 => _gettext("Ungroup queries")]]])); // line 79 echo "
      "; // line 84 $this->loadTemplate("console/query_action.twig", "console/display.twig", 84)->display(twig_to_array(["parent_div_classes" => "debug_query action_content", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action dbg_show_trace", 1 => _gettext("Show trace")], 3 => [0 => "action dbg_hide_trace", 1 => _gettext("Hide trace")], 4 => [0 => "text count hide", 1 => _gettext("Count")], 5 => [0 => "text time", 1 => _gettext("Time taken")]]])); // line 95 echo "
      "; // line 97 if (($context["cfg_bookmark"] ?? null)) { // line 98 echo "
      "; // line 99 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 99)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Bookmarks")], 1 => [0 => "button refresh", 1 => _gettext("Refresh")], 2 => [0 => "button add", 1 => _gettext("Add")]]])); // line 107 echo "
      "; // line 108 echo ($context["bookmark_content"] ?? null); echo "
      "; // line 112 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 112)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Add bookmark")]]])); // line 118 echo "
      "; } // line 138 echo " "; // line 139 echo "
      "; // line 140 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 140)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Options")], 1 => [0 => "button default", 1 => _gettext("Set default")]]])); // line 147 echo "





      "; // line 175 echo " "; $this->loadTemplate("console/query_action.twig", "console/display.twig", 175)->display(twig_to_array(["parent_div_classes" => "query_actions", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action requery", 1 => _gettext("Requery")], 3 => [0 => "action edit", 1 => _gettext("Edit")], 4 => [0 => "action explain", 1 => _gettext("Explain")], 5 => [0 => "action profiling", 1 => _gettext("Profiling")], 6 => (( // line 184 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "action bookmark", 1 => _gettext("Bookmark")]) : (null)), 7 => [0 => "text failed", 1 => _gettext("Query failed")], 8 => [0 => "text targetdb", 1 => _gettext("Database"), "extraSpan" => ""], 9 => [0 => "text query_time", 1 => _gettext("Queried time"), "extraSpan" => ""]]])); // line 190 echo "
      "; } public function getTemplateName() { return "console/display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 231 => 190, 229 => 184, 227 => 175, 220 => 169, 218 => 168, 213 => 165, 211 => 162, 205 => 158, 203 => 157, 198 => 154, 196 => 153, 191 => 150, 189 => 149, 185 => 147, 183 => 140, 180 => 139, 178 => 138, 166 => 129, 163 => 128, 161 => 127, 155 => 124, 149 => 121, 144 => 118, 142 => 112, 135 => 108, 132 => 107, 130 => 99, 127 => 98, 125 => 97, 121 => 95, 119 => 84, 112 => 79, 110 => 64, 107 => 63, 104 => 61, 97 => 55, 94 => 54, 84 => 51, 82 => 47, 81 => 46, 80 => 42, 79 => 40, 78 => 31, 72 => 30, 68 => 29, 66 => 28, 61 => 27, 59 => 26, 55 => 24, 53 => 23, 49 => 21, 47 => 20, 41 => 16, 39 => 15, 37 => 11, 36 => 7, 34 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/display.twig"); } } db/login/tmp/twig/46/464d726a12a6ed1a7e52937382ecc07b7bea9d6fc56aa3dc3592d41ec39ed533.php000064400000006176151502156020022007 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["pos"] ?? null), "html", null, true); echo "\" /> env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> env, ($context["goto"] ?? null), "html", null, true); echo "\" /> "; // line 8 echo ($context["input_for_real_end"] ?? null); echo " env, ($context["title"] ?? null), "html", null, true); echo "\""; // line 10 echo ($context["onclick"] ?? null); echo " />
      "; } public function getTemplateName() { return "display/results/table_navigation_button.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 66 => 10, 61 => 9, 57 => 8, 53 => 7, 49 => 6, 45 => 5, 41 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/table_navigation_button.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/table_navigation_button.twig"); } } db/login/tmp/twig/46/46fcaaa83f03b8011795f12a53322d3cbe445c981b7ee1ebe087853b8e01638b.php000064400000007277151502156020021557 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 echo _gettext("Define new aliases"); echo "
      "; } public function getTemplateName() { return "export/alias_add.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 104 => 46, 98 => 43, 89 => 37, 81 => 32, 75 => 29, 66 => 23, 58 => 18, 52 => 15, 43 => 9, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "export/alias_add.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/export/alias_add.twig"); } } db/login/tmp/twig/af/af6dd1f6871b54f086eb95e1abc703a0e92824251df6a715be3d3628d2bd3143.php000064400000055467151502156020022000 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["curr"] ?? null), "html", null, true); echo "\""; echo ((($context["table_is_view"] ?? null)) ? (" class=\"is_view\"") : ("")); echo " data-filter-row=\""; echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array")), "html", null, true); echo "\"> env, ($context["input_class"] ?? null), "html", null, true); echo "\" value=\""; // line 6 echo twig_escape_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "html", null, true); echo "\" id=\"checkbox_tbl_"; // line 7 echo twig_escape_filter($this->env, ($context["curr"] ?? null), "html", null, true); echo "\" /> "; // line 10 echo ($context["browse_table_label"] ?? null); echo " "; // line 11 echo ($context["tracking_icon"] ?? null); echo " "; // line 13 if (($context["server_slave_status"] ?? null)) { // line 14 echo " "; // line 15 echo ((($context["ignored"] ?? null)) ? (PhpMyAdmin\Util::getImage("s_cancel", _gettext("Not replicated"))) : ("")); echo " "; // line 16 echo ((($context["do"] ?? null)) ? (PhpMyAdmin\Util::getImage("s_success", _gettext("Replicated"))) : ("")); echo " "; } // line 19 echo " "; // line 21 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 22 echo " "; // line 24 echo " "; $context["fav_params"] = ["db" => // line 25 ($context["db"] ?? null), "ajax_request" => true, "favorite_table" => $this->getAttribute( // line 27 ($context["current_table"] ?? null), "TABLE_NAME", [], "array"), ((( // line 28 ($context["already_favorite"] ?? null)) ? ("remove") : ("add")) . "_favorite") => true]; // line 30 echo " "; $this->loadTemplate("database/structure/favorite_anchor.twig", "database/structure/structure_table_row.twig", 30)->display(twig_to_array(["table_name_hash" => md5($this->getAttribute( // line 31 ($context["current_table"] ?? null), "TABLE_NAME", [], "array")), "db_table_name_hash" => md5((( // line 32 ($context["db"] ?? null) . ".") . $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"))), "fav_params" => // line 33 ($context["fav_params"] ?? null), "already_favorite" => // line 34 ($context["already_favorite"] ?? null), "titles" => // line 35 ($context["titles"] ?? null)])); // line 37 echo " "; } // line 39 echo " "; // line 41 echo ($context["browse_table"] ?? null); echo " "; // line 45 echo $this->getAttribute(($context["titles"] ?? null), "Structure", [], "array"); echo " "; // line 49 echo ($context["search_table"] ?? null); echo " "; // line 52 if ( !($context["db_is_system_schema"] ?? null)) { // line 53 echo " "; echo $this->getAttribute(($context["titles"] ?? null), "Insert", [], "array"); echo " "; // line 56 echo ($context["empty_table"] ?? null); echo " getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array") == null))) ? (" view") : ("")); echo "\" href=\"sql.php\" data-post=\""; // line 60 echo ($context["tbl_url_query"] ?? null); echo "&reload=1&purge=1&sql_query="; // line 61 echo twig_escape_filter($this->env, twig_urlencode_filter(($context["drop_query"] ?? null)), "html", null, true); echo "&message_to_show="; echo twig_escape_filter($this->env, twig_urlencode_filter(($context["drop_message"] ?? null)), "html", null, true); echo "\"> "; // line 62 echo $this->getAttribute(($context["titles"] ?? null), "Drop", [], "array"); echo " "; } // line 66 echo " "; // line 67 if (($this->getAttribute(($context["current_table"] ?? null), "TABLE_ROWS", [], "array", true, true) && (($this->getAttribute( // line 68 ($context["current_table"] ?? null), "ENGINE", [], "array") != null) || ($context["table_is_view"] ?? null)))) { // line 69 echo " "; // line 70 echo " "; $context["row_count"] = PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["current_table"] ?? null), "TABLE_ROWS", [], "array"), 0); // line 71 echo " "; // line 74 echo " env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "html", null, true); echo "\"> "; // line 76 if (($context["approx_rows"] ?? null)) { // line 77 echo " true, "db" => // line 79 ($context["db"] ?? null), "table" => $this->getAttribute( // line 80 ($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "real_row_count" => "true"]); // line 82 echo "\" class=\"ajax real_row_count\"> ~"; // line 84 echo twig_escape_filter($this->env, ($context["row_count"] ?? null), "html", null, true); echo " "; } else { // line 88 echo " "; echo twig_escape_filter($this->env, ($context["row_count"] ?? null), "html", null, true); echo " "; } // line 90 echo " "; echo ($context["show_superscript"] ?? null); echo " "; // line 93 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 94 echo " "; // line 95 if ( !twig_test_empty($this->getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array"))) { // line 96 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array"), "html", null, true); echo " "; } elseif ( // line 97 ($context["table_is_view"] ?? null)) { // line 98 echo " "; echo _gettext("View"); // line 99 echo " "; } // line 100 echo " "; // line 101 if ((twig_length_filter($this->env, ($context["collation"] ?? null)) > 0)) { // line 102 echo " "; // line 103 echo ($context["collation"] ?? null); echo " "; } // line 106 echo " "; } // line 107 echo " "; // line 108 if (($context["is_show_stats"] ?? null)) { // line 109 echo " "; // line 111 echo twig_escape_filter($this->env, ($context["formatted_size"] ?? null), "html", null, true); echo " "; // line 112 echo twig_escape_filter($this->env, ($context["unit"] ?? null), "html", null, true); echo " "; // line 116 echo ($context["overhead"] ?? null); echo " "; } // line 119 echo " "; // line 120 if ( !(($context["show_charset"] ?? null) > 1)) { // line 121 echo " "; if ((twig_length_filter($this->env, ($context["charset"] ?? null)) > 0)) { // line 122 echo " "; // line 123 echo ($context["charset"] ?? null); echo " "; } // line 126 echo " "; } // line 127 echo " "; // line 128 if (($context["show_comment"] ?? null)) { // line 129 echo " "; $context["comment"] = $this->getAttribute(($context["current_table"] ?? null), "Comment", [], "array"); // line 130 echo " "; // line 131 if ((twig_length_filter($this->env, ($context["comment"] ?? null)) > ($context["limit_chars"] ?? null))) { // line 132 echo " env, ($context["comment"] ?? null), "html", null, true); echo "\"> "; // line 133 echo twig_escape_filter($this->env, twig_slice($this->env, ($context["comment"] ?? null), 0, ($context["limit_chars"] ?? null)), "html", null, true); echo " ... "; } else { // line 137 echo " "; echo twig_escape_filter($this->env, ($context["comment"] ?? null), "html", null, true); echo " "; } // line 139 echo " "; } // line 141 echo " "; // line 142 if (($context["show_creation"] ?? null)) { // line 143 echo " "; // line 144 ((($context["create_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["create_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 147 echo " "; // line 148 if (($context["show_last_update"] ?? null)) { // line 149 echo " "; // line 150 ((($context["update_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["update_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 153 echo " "; // line 154 if (($context["show_last_check"] ?? null)) { // line 155 echo " "; // line 156 ((($context["check_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["check_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 159 echo " "; } elseif ( // line 160 ($context["table_is_view"] ?? null)) { // line 161 echo " - "; // line 163 echo _gettext("View"); // line 164 echo " --- "; // line 166 if (($context["is_show_stats"] ?? null)) { // line 167 echo " - - "; } // line 170 echo " "; if (($context["show_charset"] ?? null)) { // line 171 echo " "; } // line 173 echo " "; if (($context["show_comment"] ?? null)) { // line 174 echo " "; } // line 176 echo " "; if (($context["show_creation"] ?? null)) { // line 177 echo " - "; } // line 179 echo " "; if (($context["show_last_update"] ?? null)) { // line 180 echo " - "; } // line 182 echo " "; if (($context["show_last_check"] ?? null)) { // line 183 echo " - "; } // line 185 echo " "; } else { // line 187 echo " "; $context["count"] = 0; // line 188 echo " "; if (($context["properties_num_columns"] ?? null)) { // line 189 echo " "; $context["count"] = (($context["count"] ?? null) + 2); // line 190 echo " "; } // line 191 echo " "; if (($context["is_show_stats"] ?? null)) { // line 192 echo " "; $context["count"] = (($context["count"] ?? null) + 2); // line 193 echo " "; } // line 194 echo " "; if (($context["show_charset"] ?? null)) { // line 195 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 196 echo " "; } // line 197 echo " "; if (($context["show_comment"] ?? null)) { // line 198 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 199 echo " "; } // line 200 echo " "; if (($context["show_creation"] ?? null)) { // line 201 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 202 echo " "; } // line 203 echo " "; if (($context["show_last_update"] ?? null)) { // line 204 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 205 echo " "; } // line 206 echo " "; if (($context["show_last_check"] ?? null)) { // line 207 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 208 echo " "; } // line 209 echo " "; // line 210 if (($context["db_is_system_schema"] ?? null)) { // line 211 echo " "; $context["action_colspan"] = 3; // line 212 echo " "; } else { // line 213 echo " "; $context["action_colspan"] = 6; // line 214 echo " "; } // line 215 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 216 echo " "; $context["action_colspan"] = (($context["action_colspan"] ?? null) + 1); // line 217 echo " "; } // line 218 echo " "; // line 219 $context["colspan_for_structure"] = (($context["action_colspan"] ?? null) + 3); // line 220 echo " "; // line 222 echo _gettext("in use"); // line 223 echo " "; } // line 225 echo " "; } public function getTemplateName() { return "database/structure/structure_table_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 556 => 225, 552 => 223, 550 => 222, 544 => 220, 542 => 219, 539 => 218, 536 => 217, 533 => 216, 530 => 215, 527 => 214, 524 => 213, 521 => 212, 518 => 211, 516 => 210, 513 => 209, 510 => 208, 507 => 207, 504 => 206, 501 => 205, 498 => 204, 495 => 203, 492 => 202, 489 => 201, 486 => 200, 483 => 199, 480 => 198, 477 => 197, 474 => 196, 471 => 195, 468 => 194, 465 => 193, 462 => 192, 459 => 191, 456 => 190, 453 => 189, 450 => 188, 447 => 187, 443 => 185, 439 => 183, 436 => 182, 432 => 180, 429 => 179, 425 => 177, 422 => 176, 418 => 174, 415 => 173, 411 => 171, 408 => 170, 403 => 167, 401 => 166, 397 => 164, 395 => 163, 391 => 161, 389 => 160, 386 => 159, 380 => 156, 377 => 155, 375 => 154, 372 => 153, 366 => 150, 363 => 149, 361 => 148, 358 => 147, 352 => 144, 349 => 143, 347 => 142, 344 => 141, 340 => 139, 334 => 137, 327 => 133, 322 => 132, 320 => 131, 317 => 130, 314 => 129, 312 => 128, 309 => 127, 306 => 126, 300 => 123, 297 => 122, 294 => 121, 292 => 120, 289 => 119, 283 => 116, 276 => 112, 272 => 111, 268 => 110, 265 => 109, 263 => 108, 260 => 107, 257 => 106, 251 => 103, 248 => 102, 246 => 101, 243 => 100, 240 => 99, 237 => 98, 235 => 97, 230 => 96, 228 => 95, 225 => 94, 223 => 93, 216 => 90, 210 => 88, 203 => 84, 199 => 82, 197 => 80, 196 => 79, 194 => 77, 192 => 76, 188 => 75, 185 => 74, 182 => 71, 179 => 70, 177 => 69, 175 => 68, 174 => 67, 171 => 66, 164 => 62, 158 => 61, 155 => 60, 151 => 59, 146 => 56, 139 => 54, 136 => 53, 134 => 52, 128 => 49, 121 => 45, 117 => 44, 111 => 41, 107 => 39, 103 => 37, 101 => 35, 100 => 34, 99 => 33, 98 => 32, 97 => 31, 95 => 30, 93 => 28, 92 => 27, 91 => 25, 89 => 24, 86 => 22, 83 => 21, 80 => 19, 74 => 16, 70 => 15, 67 => 14, 65 => 13, 60 => 11, 56 => 10, 50 => 7, 46 => 6, 42 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/structure_table_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/structure_table_row.twig"); } } db/login/tmp/twig/af/afb71ce5bcd08b1077214445c1fcfcc47c1fbad0177c2938c418ec24a79e3bf0.php000064400000006241151502156020022251 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • "; } public function getTemplateName() { return "display/export/options_output_charset.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 65 => 15, 58 => 13, 56 => 12, 54 => 11, 51 => 10, 49 => 9, 48 => 8, 44 => 7, 40 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_charset.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_charset.twig"); } } db/login/tmp/twig/af/afa81ff97d2424c5a13db6e43971cb716645566bd8d5c987da242dddf3f79817.php000064400000005410151502156020022026 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["html_field_name"] ?? null), "html", null, true); echo "\""; // line 2 if ((isset($context["html_field_id"]) || array_key_exists("html_field_id", $context))) { echo " id=\""; echo twig_escape_filter($this->env, ($context["html_field_id"] ?? null), "html", null, true); echo "\""; } // line 3 if (((isset($context["checked"]) || array_key_exists("checked", $context)) && ($context["checked"] ?? null))) { echo " checked=\"checked\""; } // line 4 if (((isset($context["onclick"]) || array_key_exists("onclick", $context)) && ($context["onclick"] ?? null))) { echo " class=\"autosubmit\""; } echo " />env, ($context["html_field_id"] ?? null), "html", null, true); echo "\""; } // line 6 echo ">"; echo twig_escape_filter($this->env, ($context["label"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 6, 49 => 5, 44 => 4, 40 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/checkbox.twig"); } } db/login/tmp/twig/af/af405678e3ff89b77eaa25ddfec288678d34db69a5ebd99ab0448461e7b2de90.php000064400000005151151502156020022260 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (((($context["delete_link"] ?? null) == ($context["delete_row"] ?? null)) || (($context["delete_link"] ?? null) == ($context["kill_process"] ?? null)))) { // line 2 echo "
      env, ($context["unique_id"] ?? null), "html", null, true); echo "\" class=\"ajax\"> "; // line 7 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 10 echo "
      env, ($context["unique_id"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/results/multi_row_operations_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 52 => 12, 48 => 10, 42 => 7, 37 => 5, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/multi_row_operations_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/multi_row_operations_form.twig"); } } db/login/tmp/twig/45/454cb2402e1d785767e073e47a43e07359256465fa4aaa22d755e7b7fa151ae3.php000064400000004447151502156020021340 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 if (($context["geom_column_flag"] ?? null)) { // line 4 echo " "; } // line 6 echo " "; } public function getTemplateName() { return "table/search/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 59 => 10, 55 => 9, 51 => 8, 47 => 7, 42 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/table_header.twig"); } } db/login/tmp/twig/d5/d52220f7879a7c498d2943ebe60f3f3d1f5d1f707f9b17486bb1e818ed820eaf.php000064400000034262151502156020021753 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 echo " "; $this->loadTemplate("console/toolbar.twig", "console/display.twig", 4)->display(twig_to_array(["parent_div_classes" => "collapsed", "content_array" => [0 => [0 => "switch_button console_switch", 1 => _gettext("Console"), "image" => // line 7 ($context["image"] ?? null)], 1 => [0 => "button clear", 1 => _gettext("Clear")], 2 => [0 => "button history", 1 => _gettext("History")], 3 => [0 => "button options", 1 => _gettext("Options")], 4 => (( // line 11 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "button bookmarks", 1 => _gettext("Bookmarks")]) : (null)), 5 => [0 => "button debug hide", 1 => _gettext("Debug SQL")]]])); // line 15 echo " "; // line 16 echo "
      "; // line 20 echo _gettext("Press Ctrl+Enter to execute query"); // line 21 echo " "; // line 23 echo _gettext("Press Enter to execute query"); // line 24 echo "
      "; // line 26 if ( !twig_test_empty(($context["sql_history"] ?? null))) { // line 27 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(twig_reverse_filter($this->env, ($context["sql_history"] ?? null))); foreach ($context['_seq'] as $context["_key"] => $context["record"]) { // line 28 echo "
      getAttribute($context["record"], "sqlquery", [], "array"))) ? (" select") : ("")); echo "\" targetdb=\""; // line 30 echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "db", [], "array"), "html", null, true); echo "\" targettable=\""; echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "table", [], "array"), "html", null, true); echo "\"> "; // line 31 $this->loadTemplate("console/query_action.twig", "console/display.twig", 31)->display(twig_to_array(["parent_div_classes" => "action_content", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action requery", 1 => _gettext("Requery")], 3 => [0 => "action edit", 1 => _gettext("Edit")], 4 => [0 => "action explain", 1 => _gettext("Explain")], 5 => [0 => "action profiling", 1 => _gettext("Profiling")], 6 => (( // line 40 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "action bookmark", 1 => _gettext("Bookmark")]) : (null)), 7 => [0 => "text failed", 1 => _gettext("Query failed")], 8 => [0 => "text targetdb", 1 => _gettext("Database"), "extraSpan" => $this->getAttribute( // line 42 $context["record"], "db", [], "array")], 9 => [0 => "text query_time", 1 => _gettext("Queried time"), "extraSpan" => (($this->getAttribute( // line 46 $context["record"], "timevalue", [], "array", true, true)) ? ($this->getAttribute( // line 47 $context["record"], "timevalue", [], "array")) : (_gettext("During current session")))]]])); // line 51 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($context["record"], "sqlquery", [], "array"), "html", null, true); echo "
      "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['record'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 54 echo " "; } // line 55 echo "
      "; // line 61 echo "
      "; // line 63 echo "
      "; // line 64 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 64)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "button order order_asc", 1 => _gettext("ascending")], 1 => [0 => "button order order_desc", 1 => _gettext("descending")], 2 => [0 => "text", 1 => _gettext("Order:")], 3 => [0 => "switch_button", 1 => _gettext("Debug SQL")], 4 => [0 => "button order_by sort_count", 1 => _gettext("Count")], 5 => [0 => "button order_by sort_exec", 1 => _gettext("Execution order")], 6 => [0 => "button order_by sort_time", 1 => _gettext("Time taken")], 7 => [0 => "text", 1 => _gettext("Order by:")], 8 => [0 => "button group_queries", 1 => _gettext("Group queries")], 9 => [0 => "button ungroup_queries", 1 => _gettext("Ungroup queries")]]])); // line 79 echo "
      "; // line 84 $this->loadTemplate("console/query_action.twig", "console/display.twig", 84)->display(twig_to_array(["parent_div_classes" => "debug_query action_content", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action dbg_show_trace", 1 => _gettext("Show trace")], 3 => [0 => "action dbg_hide_trace", 1 => _gettext("Hide trace")], 4 => [0 => "text count hide", 1 => _gettext("Count")], 5 => [0 => "text time", 1 => _gettext("Time taken")]]])); // line 95 echo "
      "; // line 97 if (($context["cfg_bookmark"] ?? null)) { // line 98 echo "
      "; // line 99 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 99)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Bookmarks")], 1 => [0 => "button refresh", 1 => _gettext("Refresh")], 2 => [0 => "button add", 1 => _gettext("Add")]]])); // line 107 echo "
      "; // line 108 echo ($context["bookmark_content"] ?? null); echo "
      "; // line 112 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 112)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Add bookmark")]]])); // line 118 echo "
      "; } // line 138 echo " "; // line 139 echo "
      "; // line 140 $this->loadTemplate("console/toolbar.twig", "console/display.twig", 140)->display(twig_to_array(["parent_div_classes" => "", "content_array" => [0 => [0 => "switch_button", 1 => _gettext("Options")], 1 => [0 => "button default", 1 => _gettext("Set default")]]])); // line 147 echo "





      "; // line 175 echo " "; $this->loadTemplate("console/query_action.twig", "console/display.twig", 175)->display(twig_to_array(["parent_div_classes" => "query_actions", "content_array" => [0 => [0 => "action collapse", 1 => _gettext("Collapse")], 1 => [0 => "action expand", 1 => _gettext("Expand")], 2 => [0 => "action requery", 1 => _gettext("Requery")], 3 => [0 => "action edit", 1 => _gettext("Edit")], 4 => [0 => "action explain", 1 => _gettext("Explain")], 5 => [0 => "action profiling", 1 => _gettext("Profiling")], 6 => (( // line 184 (isset($context["cfg_bookmark"]) || array_key_exists("cfg_bookmark", $context))) ? ([0 => "action bookmark", 1 => _gettext("Bookmark")]) : (null)), 7 => [0 => "text failed", 1 => _gettext("Query failed")], 8 => [0 => "text targetdb", 1 => _gettext("Database"), "extraSpan" => ""], 9 => [0 => "text query_time", 1 => _gettext("Queried time"), "extraSpan" => ""]]])); // line 190 echo "
      "; } public function getTemplateName() { return "console/display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 231 => 190, 229 => 184, 227 => 175, 220 => 169, 218 => 168, 213 => 165, 211 => 162, 205 => 158, 203 => 157, 198 => 154, 196 => 153, 191 => 150, 189 => 149, 185 => 147, 183 => 140, 180 => 139, 178 => 138, 166 => 129, 163 => 128, 161 => 127, 155 => 124, 149 => 121, 144 => 118, 142 => 112, 135 => 108, 132 => 107, 130 => 99, 127 => 98, 125 => 97, 121 => 95, 119 => 84, 112 => 79, 110 => 64, 107 => 63, 104 => 61, 97 => 55, 94 => 54, 84 => 51, 82 => 47, 81 => 46, 80 => 42, 79 => 40, 78 => 31, 72 => 30, 68 => 29, 66 => 28, 61 => 27, 59 => 26, 55 => 24, 53 => 23, 49 => 21, 47 => 20, 41 => 16, 39 => 15, 37 => 11, 36 => 7, 34 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/display.twig"); } } db/login/tmp/twig/70/70db16a839c421259db752d113c99732342fd93595829a14162bc42a5e7d50af.php000064400000021230151502156020021166 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 37 if (($context["show_column_comments"] ?? null)) { // line 38 echo " "; } // line 42 echo " "; // line 43 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 44 echo " "; } } public function getTemplateName() { return "table/structure/table_structure_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 177 => 56, 173 => 55, 169 => 54, 167 => 53, 166 => 52, 163 => 51, 156 => 47, 150 => 46, 147 => 44, 145 => 43, 140 => 42, 134 => 39, 131 => 38, 129 => 37, 126 => 36, 120 => 34, 117 => 33, 111 => 31, 105 => 29, 102 => 28, 100 => 27, 95 => 25, 91 => 24, 88 => 23, 80 => 21, 78 => 20, 73 => 17, 67 => 15, 65 => 14, 64 => 13, 60 => 12, 55 => 10, 49 => 7, 45 => 6, 40 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/table_structure_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/table_structure_row.twig"); } } db/login/tmp/twig/e3/e3e1ac8ef58490516f138f0b6ac0a12b47af9e6d181790b13c45947cc93c40cd.php000064400000004545151502156020021716 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($this->getAttribute(($context["cfg_relation"] ?? null), "relwork", [], "array") || ($context["is_foreign_key_supported"] ?? null))) { // line 2 echo "
        "; // line 3 echo PhpMyAdmin\Util::getHtmlTab(["icon" => "b_props", "link" => "tbl_structure.php", "text" => _gettext("Table structure"), "id" => "table_strucuture_id"], // line 8 ($context["url_params"] ?? null)); echo " "; // line 9 echo PhpMyAdmin\Util::getHtmlTab(["icon" => "b_relations", "link" => "tbl_relation.php", "text" => _gettext("Relation view"), "id" => "table_relation_id"], // line 14 ($context["url_params"] ?? null)); echo "
      "; } } public function getTemplateName() { return "table/secondary_tabs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 41 => 14, 40 => 9, 36 => 8, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/secondary_tabs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/secondary_tabs.twig"); } } db/login/tmp/twig/d3/d33cbc793bdee4e2176e0adb32031dd63fb0aa7a70bf42bca2e5cdc190b36baa.php000064400000006661151502156020022517 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; echo _gettext("Function"); echo ""; echo _gettext("Column"); echo " "; // line 7 echo _gettext("Type"); echo " "; // line 8 echo _gettext("Collation"); echo " "; // line 9 echo _gettext("Operator"); echo " "; // line 10 echo _gettext("Value"); echo "
      env, $this->getAttribute(($context["row"] ?? null), "Field", [], "array"), "html", null, true); echo "\" id=\"checkbox_row_"; echo twig_escape_filter($this->env, ($context["rownum"] ?? null), "html", null, true); echo "\"/> "; // line 4 echo twig_escape_filter($this->env, ($context["rownum"] ?? null), "html", null, true); echo " env, ($context["type_nowrap"] ?? null), "html", null, true); echo "> "; // line 12 echo $this->getAttribute(($context["extracted_columnspec"] ?? null), "displayed_type", [], "array"); echo " "; // line 13 if ((((($context["relation_commwork"] ?? null) && ($context["relation_mimework"] ?? null)) && ($context["browse_mime"] ?? null)) && $this->getAttribute($this->getAttribute( // line 14 ($context["mime_map"] ?? null), $this->getAttribute(($context["row"] ?? null), "Field", [], "array"), [], "array", false, true), "mimetype", [], "array", true, true))) { // line 15 echo "
      MIME: "; echo twig_escape_filter($this->env, twig_lower_filter($this->env, twig_replace_filter($this->getAttribute($this->getAttribute(($context["mime_map"] ?? null), $this->getAttribute(($context["row"] ?? null), "Field", [], "array"), [], "array"), "mimetype", [], "array"), ["_" => "/"])), "html", null, true); echo " "; } // line 17 echo "
      "; // line 20 if ( !twig_test_empty(($context["field_charset"] ?? null))) { // line 21 echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["field_charset"] ?? null)), "html", null, true); echo "\">"; echo twig_escape_filter($this->env, ($context["field_charset"] ?? null), "html", null, true); echo " "; } // line 23 echo " "; // line 24 echo twig_escape_filter($this->env, ($context["attribute"] ?? null), "html", null, true); echo " "; // line 25 echo twig_escape_filter($this->env, ((($this->getAttribute(($context["row"] ?? null), "Null", [], "array") == "YES")) ? (_gettext("Yes")) : (_gettext("No"))), "html", null, true); echo " "; // line 27 if ( !(null === $this->getAttribute(($context["row"] ?? null), "Default", [], "array"))) { // line 28 echo " "; if (($this->getAttribute(($context["extracted_columnspec"] ?? null), "type", [], "array") == "bit")) { // line 29 echo " "; echo twig_escape_filter($this->env, PhpMyAdmin\Util::convertBitDefaultValue($this->getAttribute(($context["row"] ?? null), "Default", [], "array")), "html", null, true); echo " "; } else { // line 31 echo " "; echo $this->getAttribute(($context["row"] ?? null), "Default", [], "array"); echo " "; } // line 33 echo " "; } else { // line 34 echo " "; echo _pgettext( "None for default", "None"); echo " "; } // line 36 echo " "; // line 39 echo twig_escape_filter($this->env, ($context["comments"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute(($context["row"] ?? null), "Extra", [], "array")), "html", null, true); echo " env, ($context["url_query"] ?? null), "html", null, true); echo "&field="; echo twig_escape_filter($this->env, twig_urlencode_filter($this->getAttribute(($context["row"] ?? null), "Field", [], "array")), "html", null, true); echo "&change_column=1\"> "; // line 47 echo $this->getAttribute(($context["titles"] ?? null), "Change", [], "array"); echo " env, ($context["url_query"] ?? null), "html", null, true); echo "&sql_query="; // line 52 echo twig_escape_filter($this->env, twig_urlencode_filter((((("ALTER TABLE " . PhpMyAdmin\Util::backquote(($context["table"] ?? null))) . " DROP ") . PhpMyAdmin\Util::backquote($this->getAttribute( // line 53 ($context["row"] ?? null), "Field", [], "array"))) . ";")), "html", null, true); // line 54 echo "&dropped_column="; echo twig_escape_filter($this->env, twig_urlencode_filter($this->getAttribute(($context["row"] ?? null), "Field", [], "array")), "html", null, true); echo "&purge=1&message_to_show="; // line 55 echo twig_escape_filter($this->env, twig_urlencode_filter(sprintf(_gettext("Column %s has been dropped."), twig_escape_filter($this->env, $this->getAttribute(($context["row"] ?? null), "Field", [], "array")))), "html", null, true); echo "\"> "; // line 56 echo $this->getAttribute(($context["titles"] ?? null), "Drop", [], "array"); echo "
      "; // line 2 $this->loadTemplate("table/search/table_header.twig", "table/search/fields_table.twig", 2)->display(twig_to_array(["geom_column_flag" => // line 3 ($context["geom_column_flag"] ?? null)])); // line 5 echo " "; // line 6 if ((($context["search_type"] ?? null) == "zoom")) { // line 7 echo " "; $this->loadTemplate("table/search/rows_zoom.twig", "table/search/fields_table.twig", 7)->display(twig_to_array(["self" => // line 8 ($context["self"] ?? null), "column_names" => // line 9 ($context["column_names"] ?? null), "criteria_column_names" => // line 10 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 11 ($context["criteria_column_types"] ?? null)])); // line 13 echo " "; } else { // line 14 echo " "; $this->loadTemplate("table/search/rows_normal.twig", "table/search/fields_table.twig", 14)->display(twig_to_array(["self" => // line 15 ($context["self"] ?? null), "geom_column_flag" => // line 16 ($context["geom_column_flag"] ?? null), "column_names" => // line 17 ($context["column_names"] ?? null), "column_types" => // line 18 ($context["column_types"] ?? null), "column_collations" => // line 19 ($context["column_collations"] ?? null)])); // line 21 echo " "; } // line 22 echo "
      "; } public function getTemplateName() { return "table/search/fields_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 64 => 22, 61 => 21, 59 => 19, 58 => 18, 57 => 17, 56 => 16, 55 => 15, 53 => 14, 50 => 13, 48 => 11, 47 => 10, 46 => 9, 45 => 8, 43 => 7, 41 => 6, 38 => 5, 36 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/fields_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/fields_table.twig"); } } db/login/tmp/twig/29/29b158a9cc21b88f3110fe47ecd70b6c79b4d595d381b737033a0dab4ebe8ef1.php000064400000005055151502156020022000 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context["colspan"] = 2; // line 2 if (($context["is_setup"] ?? null)) { // line 3 echo " "; $context["colspan"] = (($context["colspan"] ?? null) + 1); } // line 5 if (($context["show_buttons"] ?? null)) { // line 6 echo " env, ($context["colspan"] ?? null), "html", null, true); echo "\" class=\"lastrow\"> "; } // line 13 echo " "; } public function getTemplateName() { return "config/form_display/fieldset_bottom.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 13, 51 => 9, 47 => 8, 43 => 7, 40 => 6, 38 => 5, 34 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/fieldset_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/fieldset_bottom.twig"); } } db/login/tmp/twig/29/298e71b3de4c4d77625c5f921a233a88635e50dd54326d68d10443e58bf9d82a.php000064400000013473151502156020021366 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo PhpMyAdmin\Util::getDivForSliderEffect("searchoptions", _gettext("Options")); echo " "; // line 4 echo "
      "; // line 6 echo _gettext("Select columns (at least one):"); // line 7 echo "
      "; // line 23 echo "
      "; // line 25 echo _gettext("Or"); echo " "; // line 26 echo _gettext("Add search conditions (body of the \"where\" clause):"); // line 27 echo " "; // line 28 echo PhpMyAdmin\Util::showMySQLDocu("Functions"); echo "
      "; // line 33 echo "
      "; // line 34 echo _gettext("Number of rows per page"); echo " env, ($context["max_rows"] ?? null), "html", null, true); echo "\" class=\"textfield\" />
      "; // line 44 echo "
      "; // line 45 echo _gettext("Display order:"); echo " "; // line 54 echo PhpMyAdmin\Util::getRadioFields("order", ["ASC" => _gettext("Ascending"), "DESC" => _gettext("Descending")], "ASC", false, true, "formelement"); // line 64 echo "
      "; } public function getTemplateName() { return "table/search/options.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 146 => 64, 144 => 54, 140 => 52, 131 => 49, 126 => 48, 122 => 47, 117 => 45, 114 => 44, 107 => 39, 99 => 34, 96 => 33, 89 => 28, 86 => 27, 84 => 26, 80 => 25, 76 => 23, 69 => 17, 60 => 14, 54 => 12, 50 => 11, 45 => 9, 41 => 7, 39 => 6, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/options.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/options.twig"); } } db/login/tmp/twig/6a/6ac23fab4b2fab24ca48f8df74d4b74ea08540c9839ef8b3f7d1664daaf9d755.php000064400000003677151502156020022325 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["title"] ?? null), "html", null, true); echo "\"> "; // line 2 echo twig_escape_filter($this->env, ($context["truename"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "database/structure/browse_table_label.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/browse_table_label.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/browse_table_label.twig"); } } db/login/tmp/twig/b6/b6079fe255c3aa67a3ee83c05b3dd26678bb18fc5f7681a6855eb8f22e603ad4.php000064400000007222151502156020022011 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "dropdown.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 78 => 11, 68 => 9, 64 => 8, 60 => 7, 51 => 5, 49 => 4, 47 => 3, 39 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "dropdown.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/dropdown.twig"); } } db/login/tmp/twig/b6/b6c8adb0e14792534ce716cd3bf1d57bc78d45138e62be7d661d75a5f03edcba.php000064400000005525151502156020022220 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 if (PhpMyAdmin\Util::showIcons("ActionLinksMode")) { // line 5 echo PhpMyAdmin\Util::getImage("b_table_add"); } // line 7 echo " "; echo _gettext("Create table"); // line 8 echo " "; // line 9 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
      "; // line 11 echo _gettext("Name"); echo ":
      "; // line 15 echo _gettext("Number of columns"); echo ":
      "; } public function getTemplateName() { return "database/create_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 67 => 21, 58 => 15, 51 => 11, 46 => 9, 43 => 8, 40 => 7, 37 => 5, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/create_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/create_table.twig"); } } db/login/tmp/twig/eb/ebad70c3711a96854395e345192e3618a35739360804f28b54d23d4b49eca4b0.php000064400000055467151502156020021352 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["curr"] ?? null), "html", null, true); echo "\""; echo ((($context["table_is_view"] ?? null)) ? (" class=\"is_view\"") : ("")); echo " data-filter-row=\""; echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array")), "html", null, true); echo "\"> env, ($context["input_class"] ?? null), "html", null, true); echo "\" value=\""; // line 6 echo twig_escape_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "html", null, true); echo "\" id=\"checkbox_tbl_"; // line 7 echo twig_escape_filter($this->env, ($context["curr"] ?? null), "html", null, true); echo "\" /> "; // line 10 echo ($context["browse_table_label"] ?? null); echo " "; // line 11 echo ($context["tracking_icon"] ?? null); echo " "; // line 13 if (($context["server_slave_status"] ?? null)) { // line 14 echo " "; // line 15 echo ((($context["ignored"] ?? null)) ? (PhpMyAdmin\Util::getImage("s_cancel", _gettext("Not replicated"))) : ("")); echo " "; // line 16 echo ((($context["do"] ?? null)) ? (PhpMyAdmin\Util::getImage("s_success", _gettext("Replicated"))) : ("")); echo " "; } // line 19 echo " "; // line 21 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 22 echo " "; // line 24 echo " "; $context["fav_params"] = ["db" => // line 25 ($context["db"] ?? null), "ajax_request" => true, "favorite_table" => $this->getAttribute( // line 27 ($context["current_table"] ?? null), "TABLE_NAME", [], "array"), ((( // line 28 ($context["already_favorite"] ?? null)) ? ("remove") : ("add")) . "_favorite") => true]; // line 30 echo " "; $this->loadTemplate("database/structure/favorite_anchor.twig", "database/structure/structure_table_row.twig", 30)->display(twig_to_array(["table_name_hash" => md5($this->getAttribute( // line 31 ($context["current_table"] ?? null), "TABLE_NAME", [], "array")), "db_table_name_hash" => md5((( // line 32 ($context["db"] ?? null) . ".") . $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"))), "fav_params" => // line 33 ($context["fav_params"] ?? null), "already_favorite" => // line 34 ($context["already_favorite"] ?? null), "titles" => // line 35 ($context["titles"] ?? null)])); // line 37 echo " "; } // line 39 echo " "; // line 41 echo ($context["browse_table"] ?? null); echo " "; // line 45 echo $this->getAttribute(($context["titles"] ?? null), "Structure", [], "array"); echo " "; // line 49 echo ($context["search_table"] ?? null); echo " "; // line 52 if ( !($context["db_is_system_schema"] ?? null)) { // line 53 echo " "; echo $this->getAttribute(($context["titles"] ?? null), "Insert", [], "array"); echo " "; // line 56 echo ($context["empty_table"] ?? null); echo " getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array") == null))) ? (" view") : ("")); echo "\" href=\"sql.php\" data-post=\""; // line 60 echo ($context["tbl_url_query"] ?? null); echo "&reload=1&purge=1&sql_query="; // line 61 echo twig_escape_filter($this->env, twig_urlencode_filter(($context["drop_query"] ?? null)), "html", null, true); echo "&message_to_show="; echo twig_escape_filter($this->env, twig_urlencode_filter(($context["drop_message"] ?? null)), "html", null, true); echo "\"> "; // line 62 echo $this->getAttribute(($context["titles"] ?? null), "Drop", [], "array"); echo " "; } // line 66 echo " "; // line 67 if (($this->getAttribute(($context["current_table"] ?? null), "TABLE_ROWS", [], "array", true, true) && (($this->getAttribute( // line 68 ($context["current_table"] ?? null), "ENGINE", [], "array") != null) || ($context["table_is_view"] ?? null)))) { // line 69 echo " "; // line 70 echo " "; $context["row_count"] = PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["current_table"] ?? null), "TABLE_ROWS", [], "array"), 0); // line 71 echo " "; // line 74 echo " env, $this->getAttribute(($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "html", null, true); echo "\"> "; // line 76 if (($context["approx_rows"] ?? null)) { // line 77 echo " true, "db" => // line 79 ($context["db"] ?? null), "table" => $this->getAttribute( // line 80 ($context["current_table"] ?? null), "TABLE_NAME", [], "array"), "real_row_count" => "true"]); // line 82 echo "\" class=\"ajax real_row_count\"> ~"; // line 84 echo twig_escape_filter($this->env, ($context["row_count"] ?? null), "html", null, true); echo " "; } else { // line 88 echo " "; echo twig_escape_filter($this->env, ($context["row_count"] ?? null), "html", null, true); echo " "; } // line 90 echo " "; echo ($context["show_superscript"] ?? null); echo " "; // line 93 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 94 echo " "; // line 95 if ( !twig_test_empty($this->getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array"))) { // line 96 echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["current_table"] ?? null), "ENGINE", [], "array"), "html", null, true); echo " "; } elseif ( // line 97 ($context["table_is_view"] ?? null)) { // line 98 echo " "; echo _gettext("View"); // line 99 echo " "; } // line 100 echo " "; // line 101 if ((twig_length_filter($this->env, ($context["collation"] ?? null)) > 0)) { // line 102 echo " "; // line 103 echo ($context["collation"] ?? null); echo " "; } // line 106 echo " "; } // line 107 echo " "; // line 108 if (($context["is_show_stats"] ?? null)) { // line 109 echo " "; // line 111 echo twig_escape_filter($this->env, ($context["formatted_size"] ?? null), "html", null, true); echo " "; // line 112 echo twig_escape_filter($this->env, ($context["unit"] ?? null), "html", null, true); echo " "; // line 116 echo ($context["overhead"] ?? null); echo " "; } // line 119 echo " "; // line 120 if ( !(($context["show_charset"] ?? null) > 1)) { // line 121 echo " "; if ((twig_length_filter($this->env, ($context["charset"] ?? null)) > 0)) { // line 122 echo " "; // line 123 echo ($context["charset"] ?? null); echo " "; } // line 126 echo " "; } // line 127 echo " "; // line 128 if (($context["show_comment"] ?? null)) { // line 129 echo " "; $context["comment"] = $this->getAttribute(($context["current_table"] ?? null), "Comment", [], "array"); // line 130 echo " "; // line 131 if ((twig_length_filter($this->env, ($context["comment"] ?? null)) > ($context["limit_chars"] ?? null))) { // line 132 echo " env, ($context["comment"] ?? null), "html", null, true); echo "\"> "; // line 133 echo twig_escape_filter($this->env, twig_slice($this->env, ($context["comment"] ?? null), 0, ($context["limit_chars"] ?? null)), "html", null, true); echo " ... "; } else { // line 137 echo " "; echo twig_escape_filter($this->env, ($context["comment"] ?? null), "html", null, true); echo " "; } // line 139 echo " "; } // line 141 echo " "; // line 142 if (($context["show_creation"] ?? null)) { // line 143 echo " "; // line 144 ((($context["create_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["create_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 147 echo " "; // line 148 if (($context["show_last_update"] ?? null)) { // line 149 echo " "; // line 150 ((($context["update_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["update_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 153 echo " "; // line 154 if (($context["show_last_check"] ?? null)) { // line 155 echo " "; // line 156 ((($context["check_time"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["check_time"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 159 echo " "; } elseif ( // line 160 ($context["table_is_view"] ?? null)) { // line 161 echo " - "; // line 163 echo _gettext("View"); // line 164 echo " --- "; // line 166 if (($context["is_show_stats"] ?? null)) { // line 167 echo " - - "; } // line 170 echo " "; if (($context["show_charset"] ?? null)) { // line 171 echo " "; } // line 173 echo " "; if (($context["show_comment"] ?? null)) { // line 174 echo " "; } // line 176 echo " "; if (($context["show_creation"] ?? null)) { // line 177 echo " - "; } // line 179 echo " "; if (($context["show_last_update"] ?? null)) { // line 180 echo " - "; } // line 182 echo " "; if (($context["show_last_check"] ?? null)) { // line 183 echo " - "; } // line 185 echo " "; } else { // line 187 echo " "; $context["count"] = 0; // line 188 echo " "; if (($context["properties_num_columns"] ?? null)) { // line 189 echo " "; $context["count"] = (($context["count"] ?? null) + 2); // line 190 echo " "; } // line 191 echo " "; if (($context["is_show_stats"] ?? null)) { // line 192 echo " "; $context["count"] = (($context["count"] ?? null) + 2); // line 193 echo " "; } // line 194 echo " "; if (($context["show_charset"] ?? null)) { // line 195 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 196 echo " "; } // line 197 echo " "; if (($context["show_comment"] ?? null)) { // line 198 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 199 echo " "; } // line 200 echo " "; if (($context["show_creation"] ?? null)) { // line 201 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 202 echo " "; } // line 203 echo " "; if (($context["show_last_update"] ?? null)) { // line 204 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 205 echo " "; } // line 206 echo " "; if (($context["show_last_check"] ?? null)) { // line 207 echo " "; $context["count"] = (($context["count"] ?? null) + 1); // line 208 echo " "; } // line 209 echo " "; // line 210 if (($context["db_is_system_schema"] ?? null)) { // line 211 echo " "; $context["action_colspan"] = 3; // line 212 echo " "; } else { // line 213 echo " "; $context["action_colspan"] = 6; // line 214 echo " "; } // line 215 echo " "; if ((($context["num_favorite_tables"] ?? null) > 0)) { // line 216 echo " "; $context["action_colspan"] = (($context["action_colspan"] ?? null) + 1); // line 217 echo " "; } // line 218 echo " "; // line 219 $context["colspan_for_structure"] = (($context["action_colspan"] ?? null) + 3); // line 220 echo " "; // line 222 echo _gettext("in use"); // line 223 echo " "; } // line 225 echo " "; } public function getTemplateName() { return "database/structure/structure_table_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 556 => 225, 552 => 223, 550 => 222, 544 => 220, 542 => 219, 539 => 218, 536 => 217, 533 => 216, 530 => 215, 527 => 214, 524 => 213, 521 => 212, 518 => 211, 516 => 210, 513 => 209, 510 => 208, 507 => 207, 504 => 206, 501 => 205, 498 => 204, 495 => 203, 492 => 202, 489 => 201, 486 => 200, 483 => 199, 480 => 198, 477 => 197, 474 => 196, 471 => 195, 468 => 194, 465 => 193, 462 => 192, 459 => 191, 456 => 190, 453 => 189, 450 => 188, 447 => 187, 443 => 185, 439 => 183, 436 => 182, 432 => 180, 429 => 179, 425 => 177, 422 => 176, 418 => 174, 415 => 173, 411 => 171, 408 => 170, 403 => 167, 401 => 166, 397 => 164, 395 => 163, 391 => 161, 389 => 160, 386 => 159, 380 => 156, 377 => 155, 375 => 154, 372 => 153, 366 => 150, 363 => 149, 361 => 148, 358 => 147, 352 => 144, 349 => 143, 347 => 142, 344 => 141, 340 => 139, 334 => 137, 327 => 133, 322 => 132, 320 => 131, 317 => 130, 314 => 129, 312 => 128, 309 => 127, 306 => 126, 300 => 123, 297 => 122, 294 => 121, 292 => 120, 289 => 119, 283 => 116, 276 => 112, 272 => 111, 268 => 110, 265 => 109, 263 => 108, 260 => 107, 257 => 106, 251 => 103, 248 => 102, 246 => 101, 243 => 100, 240 => 99, 237 => 98, 235 => 97, 230 => 96, 228 => 95, 225 => 94, 223 => 93, 216 => 90, 210 => 88, 203 => 84, 199 => 82, 197 => 80, 196 => 79, 194 => 77, 192 => 76, 188 => 75, 185 => 74, 182 => 71, 179 => 70, 177 => 69, 175 => 68, 174 => 67, 171 => 66, 164 => 62, 158 => 61, 155 => 60, 151 => 59, 146 => 56, 139 => 54, 136 => 53, 134 => 52, 128 => 49, 121 => 45, 117 => 44, 111 => 41, 107 => 39, 103 => 37, 101 => 35, 100 => 34, 99 => 33, 98 => 32, 97 => 31, 95 => 30, 93 => 28, 92 => 27, 91 => 25, 89 => 24, 86 => 22, 83 => 21, 80 => 19, 74 => 16, 70 => 15, 67 => 14, 65 => 13, 60 => 11, 56 => 10, 50 => 7, 46 => 6, 42 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/structure_table_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/structure_table_row.twig"); } } db/login/tmp/twig/eb/eb580afd124e17c7b4da80ff1cf325600b485c586c618182aeff918c662d797c.php000064400000004752151502156020022015 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["column_number"] ?? null), "html", null, true); echo "]\" id=\"field_"; // line 2 echo twig_escape_filter($this->env, ($context["column_number"] ?? null), "html", null, true); echo "_"; echo twig_escape_filter($this->env, (($context["ci"] ?? null) - ($context["ci_offset"] ?? null)), "html", null, true); echo "\" "; // line 3 if (($this->getAttribute(($context["column_meta"] ?? null), "Extra", [], "array", true, true) && (twig_lower_filter($this->env, $this->getAttribute(($context["column_meta"] ?? null), "Extra", [], "array")) == "auto_increment"))) { // line 4 echo "checked=\"checked\""; } // line 6 echo " type=\"checkbox\" value=\"AUTO_INCREMENT\" /> "; } public function getTemplateName() { return "columns_definitions/column_auto_increment.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 46 => 6, 43 => 4, 41 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_auto_increment.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_auto_increment.twig"); } } db/login/tmp/twig/92/928b35d10f2d1cd62185319ffa952ce82d6f7b81a32e3b41dd8f337358a1aac9.php000064400000004551151502156020021641 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["script_name"] ?? null), "html", null, true); echo "\" name=\"insertForm\" id=\""; echo twig_escape_filter($this->env, ($context["form_id"] ?? null), "html", null, true); echo "\" class=\"ajax lock-page\"> "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["goto"] ?? null), "html", null, true); echo "\" /> env, ($context["script_name"] ?? null), "html", null, true); echo "\" /> "; } public function getTemplateName() { return "table/search/form_tag.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 45 => 4, 41 => 3, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/form_tag.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/form_tag.twig"); } } db/login/tmp/twig/92/9271c56994d4784b56b28e441482b6bd99097b7898e7415303fb809f60529cd4.php000064400000003764151502156020021051 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "table/search/column_comparison_operators.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/column_comparison_operators.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/column_comparison_operators.twig"); } } db/login/tmp/twig/92/925e24ff2b3819cb297b4267d44deebbcb293182f8f90d9b85edca4d8279d5f3.php000064400000003541151502156020022037 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 echo "
      "; // line 6 echo "
      "; // line 8 echo "
      "; // line 11 echo "
      "; // line 13 echo " "; } public function getTemplateName() { return "database/search/result_divs.twig"; } public function getDebugInfo() { return array ( 45 => 13, 42 => 11, 38 => 8, 35 => 6, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/search/result_divs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/search/result_divs.twig"); } } db/login/tmp/twig/01/01ab6a3355363a1d84ad0f8e1cb359a8d83bf6b6cc3adc1d6e48a43fb65befc2.php000064400000032014151502156020022240 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "\$( function() { "; // line 3 echo " \$(\"#buttonGo\").bind(\"click\", function() { "; // line 5 echo " \$(\"#upload_form_form\").css(\"display\", \"none\"); "; // line 7 if ((($context["handler"] ?? null) != "PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin")) { // line 8 echo " "; // line 9 echo " "; $context["ajax_url"] = (("import_status.php?id=" . ($context["upload_id"] ?? null)) . PhpMyAdmin\Url::getCommonRaw(["import_status" => 1], "&")); // line 12 echo " "; $context["promot_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers."), false); // line 16 echo " "; $context["statustext_str"] = PhpMyAdmin\Sanitize::escapeJsString(_gettext("%s of %s")); // line 17 echo " "; $context["second_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("%s/sec."), false); // line 18 echo " "; $context["remaining_min"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("About %MIN min. %SEC sec. remaining."), false); // line 19 echo " "; $context["remaining_second"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("About %SEC sec. remaining."), false); // line 20 echo " "; $context["processed_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("The file is being processed, please be patient."), false); // line 24 echo " "; $context["import_url"] = PhpMyAdmin\Url::getCommonRaw(["import_status" => 1], "&"); // line 25 echo " "; // line 26 ob_start(function () { return ''; }); // line 27 echo " "; ob_start(function () { return ''; }); // line 28 echo "
      env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo PhpMyAdmin\Sanitize::jsFormat(_gettext("Uploading your import file…"), false); // line 37 echo "
      "; $___internal_91113cdbde9beb93431482451714f4142bd2a9567edfd728960c8415376d575f_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 27 echo twig_spaceless($___internal_91113cdbde9beb93431482451714f4142bd2a9567edfd728960c8415376d575f_); // line 41 echo " "; $context["upload_html"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 42 echo " "; // line 44 echo " var finished = false; var percent = 0.0; var total = 0; var complete = 0; var original_title = parent && parent.document ? parent.document.title : false; var import_start; var perform_upload = function () { new \$.getJSON( \""; // line 53 echo ($context["ajax_url"] ?? null); echo "\", {}, function(response) { finished = response.finished; percent = response.percent; total = response.total; complete = response.complete; if (total==0 && complete==0 && percent==0) { \$(\"#upload_form_status_info\").html('env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo ($context["promot_str"] ?? null); echo "'); \$(\"#upload_form_status\").css(\"display\", \"none\"); } else { var now = new Date(); now = Date.UTC( now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()) + now.getMilliseconds() - 1000; var statustext = PMA_sprintf( \""; // line 75 echo ($context["statustext_str"] ?? null); echo "\", formatBytes( complete, 1, PMA_messages.strDecimalSeparator ), formatBytes( total, 1, PMA_messages.strDecimalSeparator ) ); if (\$(\"#importmain\").is(\":visible\")) { "; // line 86 echo " \$(\"#importmain\").hide(); \$(\"#import_form_status\") .html('"; // line 88 echo ($context["upload_html"] ?? null); echo "') .show(); import_start = now; } else if (percent > 9 || complete > 2000000) { "; // line 94 echo " var used_time = now - import_start; var seconds = parseInt(((total - complete) / complete) * used_time / 1000); var speed = PMA_sprintf( \""; // line 97 echo ($context["second_str"] ?? null); echo "\", formatBytes(complete / used_time * 1000, 1, PMA_messages.strDecimalSeparator) ); var minutes = parseInt(seconds / 60); seconds %= 60; var estimated_time; if (minutes > 0) { estimated_time = \""; // line 105 echo ($context["remaining_min"] ?? null); echo "\" .replace(\"%MIN\", minutes) .replace(\"%SEC\", seconds); } else { estimated_time = \""; // line 110 echo ($context["remaining_second"] ?? null); echo "\" .replace(\"%SEC\", seconds); } statustext += \"
      \" + speed + \"

      \" + estimated_time; } var percent_str = Math.round(percent) + \"%\"; \$(\"#status\").animate({width: percent_str}, 150); \$(\".percentage\").text(percent_str); "; // line 122 echo " if (original_title !== false) { parent.document.title = percent_str + \" - \" + original_title; } else { document.title = percent_str + \" - \" + original_title; } \$(\"#statustext\").html(statustext); } if (finished == true) { if (original_title !== false) { parent.document.title = original_title; } else { document.title = original_title; } \$(\"#importmain\").hide(); "; // line 142 echo " \$(\"#import_form_status\") .html('env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo ($context["processed_str"] ?? null); echo "') .show(); \$(\"#import_form_status\").load(\"import_status.php?message=true&"; // line 145 echo ($context["import_url"] ?? null); echo "\"); PMA_reloadNavigation(); "; // line 149 echo " } else { setTimeout(perform_upload, 1000); } }); }; setTimeout(perform_upload, 1000); "; } else { // line 157 echo " "; // line 158 echo " "; ob_start(function () { return ''; }); // line 159 echo "env, ($context["pma_theme_image"] ?? null), "html", null, true); // line 160 echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" />"; // line 161 echo PhpMyAdmin\Sanitize::jsFormat(_gettext("Please be patient, the file is being uploaded. Details about the upload are not available."), false); // line 165 echo PhpMyAdmin\Util::showDocu("faq", "faq2-9"); $context["image_tag"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 167 echo " \$('#upload_form_status_info').html('"; echo ($context["image_tag"] ?? null); echo "'); \$(\"#upload_form_status\").css(\"display\", \"none\"); "; } // line 170 echo " }); }); "; } public function getTemplateName() { return "display/import/javascript.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 277 => 170, 270 => 167, 267 => 165, 265 => 161, 263 => 160, 260 => 159, 257 => 158, 255 => 157, 245 => 149, 239 => 145, 232 => 143, 229 => 142, 208 => 122, 194 => 110, 186 => 105, 175 => 97, 170 => 94, 162 => 88, 158 => 86, 145 => 75, 127 => 62, 115 => 53, 104 => 44, 101 => 42, 98 => 41, 96 => 27, 90 => 37, 86 => 36, 76 => 28, 73 => 27, 71 => 26, 68 => 25, 65 => 24, 62 => 20, 59 => 19, 56 => 18, 53 => 17, 50 => 16, 47 => 12, 44 => 9, 42 => 8, 40 => 7, 36 => 5, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/import/javascript.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/import/javascript.twig"); } } db/login/tmp/twig/b4/b4b9aaea9dac879728444b39966cadf564e96bc79623176d67ea195c452598b2.php000064400000011005151502156020021621 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • env, ($context["class"] ?? null), "html", null, true); echo "\"> "; // line 2 if (((((($context["type"] ?? null) == "text") || ( // line 3 ($context["type"] ?? null) == "blob")) || ( // line 4 ($context["tbl_storage_engine"] ?? null) == "ARCHIVE")) || // line 5 ($context["has_field"] ?? null))) { // line 6 echo " "; echo $this->getAttribute(($context["titles"] ?? null), ("No" . ($context["action"] ?? null)), [], "array"); echo " "; } else { // line 8 echo " env, twig_urlencode_filter(((((((("ALTER TABLE " . PhpMyAdmin\Util::backquote( // line 20 ($context["table"] ?? null))) . (( // line 21 ($context["is_primary"] ?? null)) ? (((($context["primary"] ?? null)) ? (" DROP PRIMARY KEY,") : (""))) : (""))) . " ") . // line 23 ($context["syntax"] ?? null)) . "(") . PhpMyAdmin\Util::backquote($this->getAttribute( // line 25 ($context["row"] ?? null), "Field", [], "array"))) . ");")), "html", null, true); // line 27 echo "&message_to_show="; echo twig_escape_filter($this->env, twig_urlencode_filter(sprintf(($context["message"] ?? null), twig_escape_filter($this->env, $this->getAttribute(($context["row"] ?? null), "Field", [], "array")))), "html", null, true); echo "\"> "; // line 28 echo $this->getAttribute(($context["titles"] ?? null), ($context["action"] ?? null), [], "array"); echo " "; } // line 31 echo "
    • "; } public function getTemplateName() { return "table/structure/action_row_in_structure_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 87 => 31, 81 => 28, 76 => 27, 74 => 25, 73 => 23, 72 => 21, 71 => 20, 70 => 19, 68 => 18, 65 => 17, 62 => 16, 60 => 15, 58 => 14, 56 => 13, 54 => 12, 52 => 11, 50 => 10, 48 => 9, 46 => 8, 40 => 6, 38 => 5, 37 => 4, 36 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/action_row_in_structure_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/action_row_in_structure_table.twig"); } } db/login/tmp/twig/b4/b49d1f62959abd552e7abd70c3e42287d6abc15a9565703e59530ea780addf78.php000064400000006433151502156020021733 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> env, ($context["max_rows"] ?? null), "html", null, true)))); echo "\" /> env, ($context["goto"] ?? null), "html", null, true); echo "\" /> env, ($context["unique_id"] ?? null), "html", null, true); echo "\" class=\"showAllRows\""; // line 10 echo ((($context["showing_all"] ?? null)) ? (" checked=\"checked\"") : ("")); echo " value=\"all\" />
      "; } public function getTemplateName() { return "display/results/show_all_checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 62 => 11, 58 => 10, 55 => 9, 51 => 8, 47 => 7, 43 => 6, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/show_all_checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/show_all_checkbox.twig"); } } db/login/tmp/twig/ec/ec35f2297c0ab5ffba123002eb68bb0fc30961d614cbdeee64e11fec543b065b.php000064400000013627151502156020022322 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, (twig_length_filter($this->env, ($context["column_names"] ?? null)) - 1))); foreach ($context['_seq'] as $context["_key"] => $context["column_index"]) { // line 2 echo " "; // line 4 echo " "; if (($context["geom_column_flag"] ?? null)) { // line 5 echo " "; $this->loadTemplate("table/search/geom_func.twig", "table/search/rows_normal.twig", 5)->display(twig_to_array(["column_index" => // line 6 $context["column_index"], "column_types" => // line 7 ($context["column_types"] ?? null)])); // line 9 echo " "; } // line 10 echo " "; // line 11 echo " "; // line 12 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_names"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo " "; // line 14 $context["properties"] = $this->getAttribute(($context["self"] ?? null), "getColumnProperties", [0 => $context["column_index"], 1 => $context["column_index"]], "method"); // line 15 echo " "; // line 16 echo twig_escape_filter($this->env, $this->getAttribute(($context["properties"] ?? null), "type", [], "array"), "html", null, true); echo " "; // line 19 echo twig_escape_filter($this->env, $this->getAttribute(($context["properties"] ?? null), "collation", [], "array"), "html", null, true); echo " "; // line 22 echo $this->getAttribute(($context["properties"] ?? null), "func", [], "array"); echo " "; // line 25 echo " env, $this->getAttribute(($context["properties"] ?? null), "type", [], "array"), "html", null, true); echo "\"> "; // line 26 echo $this->getAttribute(($context["properties"] ?? null), "value", [], "array"); echo " "; // line 28 echo " env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 30 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_names"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 33 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_types"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 36 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_collations"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['column_index'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; } public function getTemplateName() { return "table/search/rows_normal.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 114 => 36, 110 => 35, 105 => 33, 101 => 32, 96 => 30, 92 => 29, 89 => 28, 85 => 26, 80 => 25, 75 => 22, 69 => 19, 63 => 16, 60 => 15, 58 => 14, 53 => 12, 50 => 11, 48 => 10, 45 => 9, 43 => 7, 42 => 6, 40 => 5, 37 => 4, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/rows_normal.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/rows_normal.twig"); } } db/login/tmp/twig/ec/ece5f3da958187e3e628b5157c6282746bd0cb34a3976def807c172a50025921.php000064400000041551151502156020021512 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 if ((($context["foreigners"] ?? null) && call_user_func_array($this->env->getFunction('Relation_searchColumnInForeigners')->getCallable(), [($context["foreigners"] ?? null), ($context["column_name"] ?? null)]))) { // line 3 echo " "; if (twig_test_iterable($this->getAttribute(($context["foreign_data"] ?? null), "disp_row", [], "array"))) { // line 4 echo " "; } elseif (($this->getAttribute( // line 14 ($context["foreign_data"] ?? null), "foreign_link", [], "array") == true)) { // line 15 echo " env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" name=\"criteriaValues["; // line 17 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "]\" id=\"field_"; // line 18 echo twig_escape_filter($this->env, ($context["column_name_hash"] ?? null), "html", null, true); echo "["; echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "]\" class=\"textfield\" "; // line 20 if ($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true)) { // line 21 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"), "html", null, true); echo "\" "; } // line 22 echo " /> ($context["db"] ?? null), "table" => ($context["table"] ?? null)], ""); // line 25 echo "&field="; echo twig_escape_filter($this->env, twig_urlencode_filter(($context["column_name"] ?? null)), "html", null, true); echo "&fieldkey="; // line 26 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "&fromsearch=1\"> "; // line 27 echo twig_replace_filter($this->getAttribute(($context["titles"] ?? null), "Browse", [], "array"), ["'" => "\\'"]); echo " "; } } elseif (twig_in_filter( // line 30 ($context["column_type"] ?? null), PhpMyAdmin\Util::getGISDatatypes())) { // line 31 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" size=\"40\" class=\"textfield\" id=\"field_"; // line 35 echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" /> "; // line 36 if (($context["in_fbs"] ?? null)) { // line 37 echo " "; $context["edit_url"] = ("gis_data_editor.php" . PhpMyAdmin\Url::getCommon()); // line 38 echo " "; $context["edit_str"] = PhpMyAdmin\Util::getIcon("b_edit", _gettext("Edit/Insert")); // line 39 echo " "; // line 40 echo PhpMyAdmin\Util::linkOrButton(($context["edit_url"] ?? null), ($context["edit_str"] ?? null), [], "_blank"); echo " "; } } elseif (((is_string($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4 = // line 43 ($context["column_type"] ?? null)) && is_string($__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 = "enum") && ('' === $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 || 0 === strpos($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4, $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144))) || ((is_string($__internal_1cfccaec8dd2e8578ccb026fbe7f2e7e29ac2ed5deb976639c5fc99a6ea8583b = // line 44 ($context["column_type"] ?? null)) && is_string($__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002 = "set") && ('' === $__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002 || 0 === strpos($__internal_1cfccaec8dd2e8578ccb026fbe7f2e7e29ac2ed5deb976639c5fc99a6ea8583b, $__internal_68aa442c1d43d3410ea8f958ba9090f3eaa9a76f8de8fc9be4d6c7389ba28002))) && ($context["in_zoom_search_edit"] ?? null)))) { // line 45 echo " "; $context["in_zoom_search_edit"] = false; // line 46 echo " "; $context["value"] = twig_split_filter($this->env, twig_replace_filter(twig_slice($this->env, twig_escape_filter($this->env, ($context["column_type"] ?? null)), 5, -1), ["'" => ""]), ", "); // line 47 echo " "; $context["cnt_value"] = twig_length_filter($this->env, ($context["value"] ?? null)); // line 48 echo " "; // line 54 echo " "; if ((((is_string($__internal_d7fc55f1a54b629533d60b43063289db62e68921ee7a5f8de562bd9d4a2b7ad4 = ($context["column_type"] ?? null)) && is_string($__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666 = "enum") && ('' === $__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666 || 0 === strpos($__internal_d7fc55f1a54b629533d60b43063289db62e68921ee7a5f8de562bd9d4a2b7ad4, $__internal_01476f8db28655ee4ee02ea2d17dd5a92599be76304f08cd8bc0e05aced30666))) && !($context["in_zoom_search_edit"] ?? null)) || ((is_string($__internal_01c35b74bd85735098add188b3f8372ba465b232ab8298cb582c60f493d3c22e = // line 55 ($context["column_type"] ?? null)) && is_string($__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52 = "set") && ('' === $__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52 || 0 === strpos($__internal_01c35b74bd85735098add188b3f8372ba465b232ab8298cb582c60f493d3c22e, $__internal_63ad1f9a2bf4db4af64b010785e9665558fdcac0e8db8b5b413ed986c62dbb52))) && ($context["in_zoom_search_edit"] ?? null)))) { // line 56 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" id=\""; // line 60 echo twig_escape_filter($this->env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" multiple=\"multiple\" size=\""; // line 62 echo twig_escape_filter($this->env, min(3, ($context["cnt_value"] ?? null)), "html", null, true); echo "\"> "; } // line 64 echo " "; // line 65 echo " "; // line 66 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, (($context["cnt_value"] ?? null) - 1))); foreach ($context['_seq'] as $context["_key"] => $context["i"]) { // line 67 echo " "; if ((($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true) && twig_test_iterable($this->getAttribute( // line 68 ($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"))) && twig_in_filter($this->getAttribute( // line 69 ($context["value"] ?? null), $context["i"], [], "array"), $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array")))) { // line 70 echo " "; } else { // line 74 echo " "; } // line 78 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['i'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 79 echo " "; } else { // line 81 echo " "; $context["the_class"] = "textfield"; // line 82 echo " "; if ((($context["column_type"] ?? null) == "date")) { // line 83 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " datefield"); // line 84 echo " "; } elseif (((($context["column_type"] ?? null) == "datetime") || (is_string($__internal_f10a4cc339617934220127f034125576ed229e948660ebac906a15846d52f136 = ($context["column_type"] ?? null)) && is_string($__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386 = "timestamp") && ('' === $__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386 || 0 === strpos($__internal_f10a4cc339617934220127f034125576ed229e948660ebac906a15846d52f136, $__internal_887a873a4dc3cf8bd4f99c487b4c7727999c350cc3a772414714e49a195e4386))))) { // line 85 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " datetimefield"); // line 86 echo " "; } elseif ((is_string($__internal_d527c24a729d38501d770b40a0d25e1ce8a7f0bff897cc4f8f449ba71fcff3d9 = ($context["column_type"] ?? null)) && is_string($__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae = "bit") && ('' === $__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae || 0 === strpos($__internal_d527c24a729d38501d770b40a0d25e1ce8a7f0bff897cc4f8f449ba71fcff3d9, $__internal_f6dde3a1020453fdf35e718e94f93ce8eb8803b28cc77a665308e14bbe8572ae)))) { // line 87 echo " "; $context["the_class"] = (($context["the_class"] ?? null) . " bit"); // line 88 echo " "; } // line 89 echo " env, ($context["column_index"] ?? null), "html", null, true); echo "]\" size=\"40\" class=\""; // line 92 echo twig_escape_filter($this->env, ($context["the_class"] ?? null), "html", null, true); echo "\" id=\""; // line 93 echo twig_escape_filter($this->env, ($context["column_id"] ?? null), "html", null, true); echo twig_escape_filter($this->env, ($context["column_index"] ?? null), "html", null, true); echo "\" "; // line 94 if ($this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array", true, true)) { // line 95 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_values"] ?? null), ($context["column_index"] ?? null), [], "array"), "html", null, true); echo "\""; } // line 96 echo " /> "; } } public function getTemplateName() { return "table/search/input_box.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 274 => 96, 269 => 95, 267 => 94, 262 => 93, 258 => 92, 253 => 90, 250 => 89, 247 => 88, 244 => 87, 241 => 86, 238 => 85, 235 => 84, 232 => 83, 229 => 82, 226 => 81, 222 => 79, 216 => 78, 210 => 75, 205 => 74, 199 => 71, 194 => 70, 192 => 69, 191 => 68, 189 => 67, 185 => 66, 182 => 65, 180 => 64, 175 => 62, 169 => 60, 164 => 59, 158 => 57, 153 => 56, 151 => 55, 149 => 54, 147 => 48, 144 => 47, 141 => 46, 138 => 45, 136 => 44, 135 => 43, 129 => 40, 126 => 39, 123 => 38, 120 => 37, 118 => 36, 114 => 35, 108 => 32, 105 => 31, 103 => 30, 97 => 27, 93 => 26, 89 => 25, 87 => 24, 84 => 22, 78 => 21, 76 => 20, 69 => 18, 65 => 17, 60 => 16, 57 => 15, 55 => 14, 51 => 12, 49 => 11, 48 => 9, 47 => 8, 46 => 7, 45 => 6, 40 => 5, 35 => 4, 32 => 3, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/input_box.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/input_box.twig"); } } db/login/tmp/twig/4e/4e18d70cfbb6bf445e549032d630cf93936a72ce6b59fa0dd9614ca6619336e3.php000064400000007555151502156020021662 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " $context["value"]) { // line 3 echo " "; echo twig_escape_filter($this->env, $context["key"], "html", null, true); echo "=\""; echo twig_escape_filter($this->env, $context["value"], "html", null, true); echo "\""; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['key'], $context['value'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 4 echo "> "; // line 5 echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true); echo " "; // line 6 if ( !twig_test_empty(($context["description"] ?? null))) { // line 7 echo "

      "; echo ($context["description"] ?? null); echo "

      "; } // line 10 if ((twig_test_iterable(($context["errors"] ?? null)) && (twig_length_filter($this->env, ($context["errors"] ?? null)) > 0))) { // line 11 echo "
      "; // line 12 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["errors"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["error"]) { // line 13 echo "
      "; echo twig_escape_filter($this->env, $context["error"], "html", null, true); echo "
      "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 15 echo "
      "; } // line 17 echo " "; } public function getTemplateName() { return "config/form_display/fieldset_top.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 83 => 17, 79 => 15, 70 => 13, 66 => 12, 63 => 11, 61 => 10, 55 => 7, 53 => 6, 49 => 5, 46 => 4, 36 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/fieldset_top.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/fieldset_top.twig"); } } db/login/tmp/twig/4e/4e35345b9f3a063c8ec0b2852a4633c7e829b289ac5820c3e8bbbc511a9e8325.php000064400000011005151502156020021545 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • env, ($context["class"] ?? null), "html", null, true); echo "\"> "; // line 2 if (((((($context["type"] ?? null) == "text") || ( // line 3 ($context["type"] ?? null) == "blob")) || ( // line 4 ($context["tbl_storage_engine"] ?? null) == "ARCHIVE")) || // line 5 ($context["has_field"] ?? null))) { // line 6 echo " "; echo $this->getAttribute(($context["titles"] ?? null), ("No" . ($context["action"] ?? null)), [], "array"); echo " "; } else { // line 8 echo " env, twig_urlencode_filter(((((((("ALTER TABLE " . PhpMyAdmin\Util::backquote( // line 20 ($context["table"] ?? null))) . (( // line 21 ($context["is_primary"] ?? null)) ? (((($context["primary"] ?? null)) ? (" DROP PRIMARY KEY,") : (""))) : (""))) . " ") . // line 23 ($context["syntax"] ?? null)) . "(") . PhpMyAdmin\Util::backquote($this->getAttribute( // line 25 ($context["row"] ?? null), "Field", [], "array"))) . ");")), "html", null, true); // line 27 echo "&message_to_show="; echo twig_escape_filter($this->env, twig_urlencode_filter(sprintf(($context["message"] ?? null), twig_escape_filter($this->env, $this->getAttribute(($context["row"] ?? null), "Field", [], "array")))), "html", null, true); echo "\"> "; // line 28 echo $this->getAttribute(($context["titles"] ?? null), ($context["action"] ?? null), [], "array"); echo " "; } // line 31 echo "
    • "; } public function getTemplateName() { return "table/structure/action_row_in_structure_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 87 => 31, 81 => 28, 76 => 27, 74 => 25, 73 => 23, 72 => 21, 71 => 20, 70 => 19, 68 => 18, 65 => 17, 62 => 16, 60 => 15, 58 => 14, 56 => 13, 54 => 12, 52 => 11, 50 => 10, 48 => 9, 46 => 8, 40 => 6, 38 => 5, 37 => 4, 36 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/action_row_in_structure_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/action_row_in_structure_table.twig"); } } db/login/tmp/twig/4e/4e68050e4aec7ca6cfa1665dd465a55a5d643fca6abb104a310e5145d7310851.php000064400000003441151502156020021656 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "display/results/empty_display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/empty_display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/empty_display.twig"); } } db/login/tmp/twig/b8/b8467faa5f2a7b309d051ad2bf80809b54162172bdc2b15ae0a6642bd81d528b.php000064400000006147151502156020021667 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["parent_div_classes"] ?? null), "html", null, true); echo "\"> "; // line 2 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["content_array"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["content"]) { // line 3 echo " "; if ((isset($context["content"]) || array_key_exists("content", $context))) { // line 4 echo "
      env, $this->getAttribute($context["content"], 0, [], "array"), "html", null, true); echo "\"> "; // line 5 echo (($this->getAttribute($context["content"], "image", [], "array", true, true)) ? ($this->getAttribute($context["content"], "image", [], "array")) : ("")); echo " "; // line 6 echo twig_escape_filter($this->env, $this->getAttribute($context["content"], 1, [], "array"), "html", null, true); echo "
      "; } // line 9 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['content'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 10 echo "
      "; } public function getTemplateName() { return "console/toolbar.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 63 => 10, 57 => 9, 51 => 6, 47 => 5, 42 => 4, 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "console/toolbar.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/console/toolbar.twig"); } } db/login/tmp/twig/2c/2c8132363817803038cc421e5d937d2d4516ef49fa1c21a9ecabcfd5ceaae6d8.php000064400000015611151502156020022043 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(["db" => // line 3 ($context["db"] ?? null), "table" => // line 4 ($context["table"] ?? null), "sql_query" => // line 5 ($context["sql_query"] ?? null), "goto" => // line 6 ($context["goto"] ?? null), "display_options_form" => 1]); // line 8 echo " "; // line 10 echo PhpMyAdmin\Util::getDivForSliderEffect("", _gettext("Options")); echo "
      "; // line 14 echo " "; echo PhpMyAdmin\Util::getRadioFields("pftext", ["P" => _gettext("Partial texts"), "F" => _gettext("Full texts")], // line 20 ($context["pftext"] ?? null), true, true, "", ("pftext_" . // line 24 ($context["unique_id"] ?? null))); // line 25 echo "
      "; // line 28 if ((($context["relwork"] ?? null) && ($context["displaywork"] ?? null))) { // line 29 echo "
      "; // line 30 echo PhpMyAdmin\Util::getRadioFields("relational_display", ["K" => _gettext("Relational key"), "D" => _gettext("Display column for relationships")], // line 36 ($context["relational_display"] ?? null), true, true, "", ("relational_display_" . // line 40 ($context["unique_id"] ?? null))); // line 41 echo "
      "; } // line 44 echo "
      "; // line 46 $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 46)->display(twig_to_array(["html_field_name" => "display_binary", "label" => _gettext("Show binary contents"), "checked" => !twig_test_empty( // line 49 ($context["display_binary"] ?? null)), "onclick" => false, "html_field_id" => ("display_binary_" . // line 51 ($context["unique_id"] ?? null))])); // line 53 echo " "; $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 53)->display(twig_to_array(["html_field_name" => "display_blob", "label" => _gettext("Show BLOB contents"), "checked" => !twig_test_empty( // line 56 ($context["display_blob"] ?? null)), "onclick" => false, "html_field_id" => ("display_blob_" . // line 58 ($context["unique_id"] ?? null))])); // line 60 echo "
      "; // line 66 echo "
      "; // line 67 $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 67)->display(twig_to_array(["html_field_name" => "hide_transformation", "label" => _gettext("Hide browser transformation"), "checked" => !twig_test_empty( // line 70 ($context["hide_transformation"] ?? null)), "onclick" => false, "html_field_id" => ("hide_transformation_" . // line 72 ($context["unique_id"] ?? null))])); // line 74 echo "
      "; // line 77 if (($context["possible_as_geometry"] ?? null)) { // line 78 echo "
      "; // line 79 echo PhpMyAdmin\Util::getRadioFields("geoOption", ["GEOM" => _gettext("Geometry"), "WKT" => _gettext("Well Known Text"), "WKB" => _gettext("Well Known Binary")], // line 86 ($context["geo_option"] ?? null), true, true, "", ("geoOption_" . // line 90 ($context["unique_id"] ?? null))); // line 91 echo "
      "; } else { // line 94 echo "
      "; // line 95 echo twig_escape_filter($this->env, ($context["possible_as_geometry"] ?? null), "html", null, true); echo " "; // line 96 echo PhpMyAdmin\Util::getRadioFields("geoOption", ["WKT" => _gettext("Well Known Text"), "WKB" => _gettext("Well Known Binary")], // line 102 ($context["geo_option"] ?? null), true, true, "", ("geoOption_" . // line 106 ($context["unique_id"] ?? null))); // line 107 echo "
      "; } // line 110 echo "
      "; // line 117 echo " "; } public function getTemplateName() { return "display/results/options_block.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 143 => 117, 138 => 114, 132 => 110, 127 => 107, 125 => 106, 124 => 102, 123 => 96, 119 => 95, 116 => 94, 111 => 91, 109 => 90, 108 => 86, 107 => 79, 104 => 78, 102 => 77, 97 => 74, 95 => 72, 94 => 70, 93 => 67, 90 => 66, 86 => 60, 84 => 58, 83 => 56, 81 => 53, 79 => 51, 78 => 49, 77 => 46, 73 => 44, 68 => 41, 66 => 40, 65 => 36, 64 => 30, 61 => 29, 59 => 28, 54 => 25, 52 => 24, 51 => 20, 49 => 14, 43 => 10, 39 => 8, 37 => 6, 36 => 5, 35 => 4, 34 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/options_block.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/options_block.twig"); } } db/login/tmp/twig/2c/2cb6beba963d2480f96014077f5b3bab7173150c07bdf222566a68d64b87c9bf.php000064400000024666151502156020021641 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 $context["type"] = []; // line 3 $context["collation"] = []; // line 4 $context["func"] = []; // line 5 $context["value"] = []; // line 6 echo " "; // line 7 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, 3)); foreach ($context['_seq'] as $context["_key"] => $context["i"]) { // line 8 echo " "; // line 9 echo " "; if (($context["i"] == 2)) { // line 10 echo " "; } // line 16 echo " "; // line 36 if (((isset($context["criteria_column_names"]) || array_key_exists("criteria_column_names", $context)) && ($this->getAttribute( // line 37 ($context["criteria_column_names"] ?? null), $context["i"], [], "array") != "pma_null"))) { // line 38 echo " "; $context["key"] = array_search($this->getAttribute(($context["criteria_column_names"] ?? null), $context["i"], [], "array"), ($context["column_names"] ?? null)); // line 39 echo " "; $context["properties"] = $this->getAttribute(($context["self"] ?? null), "getColumnProperties", [0 => $context["i"], 1 => ($context["key"] ?? null)], "method"); // line 40 echo " "; $context["type"] = twig_array_merge(($context["type"] ?? null), ["i" => $this->getAttribute(($context["properties"] ?? null), "type", [], "array")]); // line 41 echo " "; $context["collation"] = twig_array_merge(($context["collation"] ?? null), ["i" => $this->getAttribute(($context["properties"] ?? null), "collation", [], "array")]); // line 42 echo " "; $context["func"] = twig_array_merge(($context["func"] ?? null), ["i" => $this->getAttribute(($context["properties"] ?? null), "func", [], "array")]); // line 43 echo " "; $context["value"] = twig_array_merge(($context["value"] ?? null), ["i" => $this->getAttribute(($context["properties"] ?? null), "value", [], "array")]); // line 44 echo " "; } // line 45 echo " "; // line 46 echo " "; // line 50 echo " "; // line 54 echo " "; // line 58 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['i'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; } public function getTemplateName() { return "table/search/rows_zoom.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 199 => 71, 195 => 70, 191 => 68, 186 => 67, 184 => 66, 181 => 65, 177 => 64, 174 => 63, 170 => 61, 165 => 58, 160 => 55, 157 => 54, 152 => 51, 149 => 50, 144 => 47, 141 => 46, 139 => 45, 136 => 44, 133 => 43, 130 => 42, 127 => 41, 124 => 40, 121 => 39, 118 => 38, 116 => 37, 115 => 36, 111 => 34, 105 => 33, 99 => 30, 94 => 29, 88 => 26, 83 => 25, 81 => 24, 79 => 23, 75 => 22, 72 => 21, 70 => 20, 65 => 18, 61 => 16, 56 => 13, 54 => 12, 50 => 10, 47 => 9, 45 => 8, 41 => 7, 38 => 6, 36 => 5, 34 => 4, 32 => 3, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/rows_zoom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/rows_zoom.twig"); } } db/login/tmp/twig/2c/2c251d18b1d19ce2a790db25f5f4299d9458bb7c19c59bc2468376dcf6ee1da6.php000064400000013627151502156020022022 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, (twig_length_filter($this->env, ($context["column_names"] ?? null)) - 1))); foreach ($context['_seq'] as $context["_key"] => $context["column_index"]) { // line 2 echo " "; // line 4 echo " "; if (($context["geom_column_flag"] ?? null)) { // line 5 echo " "; $this->loadTemplate("table/search/geom_func.twig", "table/search/rows_normal.twig", 5)->display(twig_to_array(["column_index" => // line 6 $context["column_index"], "column_types" => // line 7 ($context["column_types"] ?? null)])); // line 9 echo " "; } // line 10 echo " "; // line 11 echo " "; // line 14 $context["properties"] = $this->getAttribute(($context["self"] ?? null), "getColumnProperties", [0 => $context["column_index"], 1 => $context["column_index"]], "method"); // line 15 echo " "; // line 25 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['column_index'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; } public function getTemplateName() { return "table/search/rows_normal.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 114 => 36, 110 => 35, 105 => 33, 101 => 32, 96 => 30, 92 => 29, 89 => 28, 85 => 26, 80 => 25, 75 => 22, 69 => 19, 63 => 16, 60 => 15, 58 => 14, 53 => 12, 50 => 11, 48 => 10, 45 => 9, 43 => 7, 42 => 6, 40 => 5, 37 => 4, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/rows_normal.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/rows_normal.twig"); } } db/login/tmp/twig/50/50c0a656d109a3006ebaf04e81fabeffdd4cb8fb95106bae7ea13a87e092e8e3.php000064400000004556151502156020022256 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 2 if ((($context["export_type"] ?? null) == "server")) { // line 3 echo "

      "; echo _gettext("Databases:"); echo "

      "; } elseif (( // line 4 ($context["export_type"] ?? null) == "database")) { // line 5 echo "

      "; echo _gettext("Tables:"); echo "

      "; } // line 7 echo " "; if ( !twig_test_empty(($context["multi_values"] ?? null))) { // line 8 echo " "; echo ($context["multi_values"] ?? null); echo " "; } // line 10 echo "
      "; } public function getTemplateName() { return "display/export/selection.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 57 => 10, 51 => 8, 48 => 7, 42 => 5, 40 => 4, 35 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/selection.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/selection.twig"); } } db/login/tmp/twig/c8/c87eb823230fdb4ab25aab2ef5d245831ab68ae8733172acfe968619324a3808.php000064400000006425151502156020021640 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Format-specific options:"); echo "

      "; // line 4 echo _gettext("Scroll down to fill in the options for the selected format and ignore the options for other formats."); // line 5 echo "

      "; // line 6 echo ($context["options"] ?? null); echo "
      "; // line 9 if (($context["can_convert_kanji"] ?? null)) { // line 10 echo " "; // line 11 echo "

      "; // line 12 echo _gettext("Encoding Conversion:"); echo "

      "; // line 13 $this->loadTemplate("encoding/kanji_encoding_form.twig", "display/export/options_format.twig", 13)->display($context); // line 14 echo "
      "; } // line 16 echo "
      0)) { // line 22 echo " onclick=\"check_time_out("; echo twig_escape_filter($this->env, ($context["exec_time_limit"] ?? null), "html", null, true); echo ")\""; } // line 23 echo ">
      "; } public function getTemplateName() { return "display/export/options_format.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 23, 75 => 22, 73 => 21, 70 => 18, 66 => 16, 62 => 14, 60 => 13, 56 => 12, 53 => 11, 51 => 10, 49 => 9, 43 => 6, 40 => 5, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_format.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_format.twig"); } } db/login/tmp/twig/3b/3bf8a6b93e8c4961d320a65db6c6f551428da6ae8b8e0c87200629b4ddad332d.php000064400000005151151502156020021767 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (((($context["delete_link"] ?? null) == ($context["delete_row"] ?? null)) || (($context["delete_link"] ?? null) == ($context["kill_process"] ?? null)))) { // line 2 echo " env, ($context["unique_id"] ?? null), "html", null, true); echo "\" class=\"ajax\"> "; // line 7 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 10 echo "
      env, ($context["align"] ?? null), "html", null, true); echo " class=\""; echo twig_escape_filter($this->env, ($context["classes"] ?? null), "html", null, true); echo "\">
      "; // line 12 echo _gettext("Additional search criteria"); // line 13 echo "
      "; // line 47 (($this->getAttribute(($context["type"] ?? null), $context["i"], [], "array", true, true)) ? (print (twig_escape_filter($this->env, $this->getAttribute(($context["type"] ?? null), $context["i"], [], "array"), "html", null, true))) : (print (""))); echo " "; // line 51 (($this->getAttribute(($context["collation"] ?? null), $context["i"], [], "array", true, true)) ? (print (twig_escape_filter($this->env, $this->getAttribute(($context["collation"] ?? null), $context["i"], [], "array"), "html", null, true))) : (print (""))); echo " "; // line 55 echo (($this->getAttribute(($context["func"] ?? null), $context["i"], [], "array", true, true)) ? ($this->getAttribute(($context["func"] ?? null), $context["i"], [], "array")) : ("")); echo " "; // line 61 echo (($this->getAttribute(($context["value"] ?? null), $context["i"], [], "array", true, true)) ? ($this->getAttribute(($context["value"] ?? null), $context["i"], [], "array")) : ("")); echo " "; // line 63 echo " env, $context["i"], "html", null, true); echo "]\" id=\"types_"; // line 65 echo twig_escape_filter($this->env, $context["i"], "html", null, true); echo "\""; // line 66 if ($this->getAttribute(($context["criteria_column_types"] ?? null), $context["i"], [], "array", true, true)) { // line 67 echo " value=\""; echo twig_escape_filter($this->env, $this->getAttribute(($context["criteria_column_types"] ?? null), $context["i"], [], "array"), "html", null, true); echo "\""; } // line 68 echo " /> env, $context["i"], "html", null, true); echo "]\" id=\"collations_"; // line 71 echo twig_escape_filter($this->env, $context["i"], "html", null, true); echo "\" />
      "; // line 12 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_names"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo " "; // line 16 echo twig_escape_filter($this->env, $this->getAttribute(($context["properties"] ?? null), "type", [], "array"), "html", null, true); echo " "; // line 19 echo twig_escape_filter($this->env, $this->getAttribute(($context["properties"] ?? null), "collation", [], "array"), "html", null, true); echo " "; // line 22 echo $this->getAttribute(($context["properties"] ?? null), "func", [], "array"); echo " env, $this->getAttribute(($context["properties"] ?? null), "type", [], "array"), "html", null, true); echo "\"> "; // line 26 echo $this->getAttribute(($context["properties"] ?? null), "value", [], "array"); echo " "; // line 28 echo " env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 30 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_names"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 33 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_types"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 36 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_collations"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" />
      env, ($context["unique_id"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/results/multi_row_operations_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 52 => 12, 48 => 10, 42 => 7, 37 => 5, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/multi_row_operations_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/multi_row_operations_form.twig"); } } db/login/tmp/twig/5a/5a16d7c558f12d24219ffa989a2a62778f60d4e4993002d40d217428e95c4b76.php000064400000005525151502156020021302 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      "; // line 4 if (PhpMyAdmin\Util::showIcons("ActionLinksMode")) { // line 5 echo PhpMyAdmin\Util::getImage("b_table_add"); } // line 7 echo " "; echo _gettext("Create table"); // line 8 echo " "; // line 9 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
      "; // line 11 echo _gettext("Name"); echo ":
      "; // line 15 echo _gettext("Number of columns"); echo ":
      "; } public function getTemplateName() { return "database/create_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 67 => 21, 58 => 15, 51 => 11, 46 => 9, 43 => 8, 40 => 7, 37 => 5, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/create_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/create_table.twig"); } } db/login/tmp/twig/5a/5abc4616e7174217f134bab455cd31bd3dbab548afbbaeb43ab56e4bbe2ddb45.php000064400000004110151502156020022435 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/empty_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 40 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/empty_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/empty_table.twig"); } } db/login/tmp/twig/5a/5ad41ac16979a27d4a1a0f44b2971295b2adb36da7c1b1b8af0cd141531eb50c.php000064400000003764151502156020022007 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "table/search/column_comparison_operators.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/column_comparison_operators.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/column_comparison_operators.twig"); } } db/login/tmp/twig/47/4783286a6d9beeb3deae41083d42c3d69cbee9a0596d694c710a0af40b376145.php000064400000007141151502156020021641 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["is_zip"] ?? null) || ($context["is_gzip"] ?? null))) { // line 2 echo "
    • "; } else { // line 23 echo " env, ($context["selected_compression"] ?? null), "html", null, true); echo "\"> "; } } public function getTemplateName() { return "display/export/options_output_compression.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 23, 75 => 20, 71 => 18, 69 => 17, 65 => 16, 63 => 15, 60 => 14, 56 => 12, 54 => 11, 50 => 10, 48 => 9, 46 => 8, 42 => 7, 38 => 5, 36 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_compression.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_compression.twig"); } } db/login/tmp/twig/89/890cc745d7e9981bb36bd74af469a546cd6cb8544fe85ff475dc3668f5bfa2d6.php000064400000015251151502156020022067 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "arrow_"; echo twig_escape_filter($this->env, ($context["text_dir"] ?? null), "html", null, true); echo ".png\" width=\"38\" height=\"22\" alt=\""; echo _gettext("With selected:"); echo "\" /> "; // line 5 if ((($context["overhead_check"] ?? null) != "")) { // line 6 echo " / "; echo _gettext("Check tables having overhead"); echo " "; } // line 8 echo " "; // line 39 echo twig_join_filter(($context["hidden_fields"] ?? null), " "); echo "
      "; } public function getTemplateName() { return "database/structure/check_all_tables.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 162 => 39, 159 => 38, 153 => 35, 149 => 34, 145 => 33, 140 => 32, 137 => 31, 131 => 28, 127 => 27, 123 => 26, 119 => 25, 114 => 23, 110 => 22, 106 => 21, 102 => 20, 98 => 19, 94 => 18, 89 => 16, 85 => 15, 80 => 14, 78 => 13, 74 => 12, 70 => 11, 66 => 10, 60 => 9, 57 => 8, 51 => 6, 49 => 5, 45 => 4, 41 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/check_all_tables.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/check_all_tables.twig"); } } db/login/tmp/twig/15/1575796472db0598c1beb413af357435d750e75cc45c5775097d48fe4846d75f.php000064400000004014151502156020021236 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
    • "; } public function getTemplateName() { return "display/export/options_output_radio.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 40 => 6, 38 => 5, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_radio.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_radio.twig"); } } db/login/tmp/twig/15/15a885ca9738e5a84084a3e52f1f6b23c771ea4f7bdca01081f7b87d3b86a6f9.php000064400000032014151502156020021645 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "\$( function() { "; // line 3 echo " \$(\"#buttonGo\").bind(\"click\", function() { "; // line 5 echo " \$(\"#upload_form_form\").css(\"display\", \"none\"); "; // line 7 if ((($context["handler"] ?? null) != "PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin")) { // line 8 echo " "; // line 9 echo " "; $context["ajax_url"] = (("import_status.php?id=" . ($context["upload_id"] ?? null)) . PhpMyAdmin\Url::getCommonRaw(["import_status" => 1], "&")); // line 12 echo " "; $context["promot_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers."), false); // line 16 echo " "; $context["statustext_str"] = PhpMyAdmin\Sanitize::escapeJsString(_gettext("%s of %s")); // line 17 echo " "; $context["second_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("%s/sec."), false); // line 18 echo " "; $context["remaining_min"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("About %MIN min. %SEC sec. remaining."), false); // line 19 echo " "; $context["remaining_second"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("About %SEC sec. remaining."), false); // line 20 echo " "; $context["processed_str"] = PhpMyAdmin\Sanitize::jsFormat(_gettext("The file is being processed, please be patient."), false); // line 24 echo " "; $context["import_url"] = PhpMyAdmin\Url::getCommonRaw(["import_status" => 1], "&"); // line 25 echo " "; // line 26 ob_start(function () { return ''; }); // line 27 echo " "; ob_start(function () { return ''; }); // line 28 echo "
      env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo PhpMyAdmin\Sanitize::jsFormat(_gettext("Uploading your import file…"), false); // line 37 echo "
      "; $___internal_91113cdbde9beb93431482451714f4142bd2a9567edfd728960c8415376d575f_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 27 echo twig_spaceless($___internal_91113cdbde9beb93431482451714f4142bd2a9567edfd728960c8415376d575f_); // line 41 echo " "; $context["upload_html"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 42 echo " "; // line 44 echo " var finished = false; var percent = 0.0; var total = 0; var complete = 0; var original_title = parent && parent.document ? parent.document.title : false; var import_start; var perform_upload = function () { new \$.getJSON( \""; // line 53 echo ($context["ajax_url"] ?? null); echo "\", {}, function(response) { finished = response.finished; percent = response.percent; total = response.total; complete = response.complete; if (total==0 && complete==0 && percent==0) { \$(\"#upload_form_status_info\").html('env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo ($context["promot_str"] ?? null); echo "'); \$(\"#upload_form_status\").css(\"display\", \"none\"); } else { var now = new Date(); now = Date.UTC( now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()) + now.getMilliseconds() - 1000; var statustext = PMA_sprintf( \""; // line 75 echo ($context["statustext_str"] ?? null); echo "\", formatBytes( complete, 1, PMA_messages.strDecimalSeparator ), formatBytes( total, 1, PMA_messages.strDecimalSeparator ) ); if (\$(\"#importmain\").is(\":visible\")) { "; // line 86 echo " \$(\"#importmain\").hide(); \$(\"#import_form_status\") .html('"; // line 88 echo ($context["upload_html"] ?? null); echo "') .show(); import_start = now; } else if (percent > 9 || complete > 2000000) { "; // line 94 echo " var used_time = now - import_start; var seconds = parseInt(((total - complete) / complete) * used_time / 1000); var speed = PMA_sprintf( \""; // line 97 echo ($context["second_str"] ?? null); echo "\", formatBytes(complete / used_time * 1000, 1, PMA_messages.strDecimalSeparator) ); var minutes = parseInt(seconds / 60); seconds %= 60; var estimated_time; if (minutes > 0) { estimated_time = \""; // line 105 echo ($context["remaining_min"] ?? null); echo "\" .replace(\"%MIN\", minutes) .replace(\"%SEC\", seconds); } else { estimated_time = \""; // line 110 echo ($context["remaining_second"] ?? null); echo "\" .replace(\"%SEC\", seconds); } statustext += \"
      \" + speed + \"

      \" + estimated_time; } var percent_str = Math.round(percent) + \"%\"; \$(\"#status\").animate({width: percent_str}, 150); \$(\".percentage\").text(percent_str); "; // line 122 echo " if (original_title !== false) { parent.document.title = percent_str + \" - \" + original_title; } else { document.title = percent_str + \" - \" + original_title; } \$(\"#statustext\").html(statustext); } if (finished == true) { if (original_title !== false) { parent.document.title = original_title; } else { document.title = original_title; } \$(\"#importmain\").hide(); "; // line 142 echo " \$(\"#import_form_status\") .html('env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" /> "; echo ($context["processed_str"] ?? null); echo "') .show(); \$(\"#import_form_status\").load(\"import_status.php?message=true&"; // line 145 echo ($context["import_url"] ?? null); echo "\"); PMA_reloadNavigation(); "; // line 149 echo " } else { setTimeout(perform_upload, 1000); } }); }; setTimeout(perform_upload, 1000); "; } else { // line 157 echo " "; // line 158 echo " "; ob_start(function () { return ''; }); // line 159 echo "env, ($context["pma_theme_image"] ?? null), "html", null, true); // line 160 echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" />"; // line 161 echo PhpMyAdmin\Sanitize::jsFormat(_gettext("Please be patient, the file is being uploaded. Details about the upload are not available."), false); // line 165 echo PhpMyAdmin\Util::showDocu("faq", "faq2-9"); $context["image_tag"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 167 echo " \$('#upload_form_status_info').html('"; echo ($context["image_tag"] ?? null); echo "'); \$(\"#upload_form_status\").css(\"display\", \"none\"); "; } // line 170 echo " }); }); "; } public function getTemplateName() { return "display/import/javascript.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 277 => 170, 270 => 167, 267 => 165, 265 => 161, 263 => 160, 260 => 159, 257 => 158, 255 => 157, 245 => 149, 239 => 145, 232 => 143, 229 => 142, 208 => 122, 194 => 110, 186 => 105, 175 => 97, 170 => 94, 162 => 88, 158 => 86, 145 => 75, 127 => 62, 115 => 53, 104 => 44, 101 => 42, 98 => 41, 96 => 27, 90 => 37, 86 => 36, 76 => 28, 73 => 27, 71 => 26, 68 => 25, 65 => 24, 62 => 20, 59 => 19, 56 => 18, 53 => 17, 50 => 16, 47 => 12, 44 => 9, 42 => 8, 40 => 7, 36 => 5, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/import/javascript.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/import/javascript.twig"); } } db/login/tmp/twig/15/15de5799d2abc58084ae90abe26e9862248c336b83dc2f40e6834b5b33f7aaad.php000064400000004105151502156020021716 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

      "; // line 2 echo _gettext("Move the columns by dragging them up and down."); echo "

      "; // line 5 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo "
        "; } public function getTemplateName() { return "table/structure/move_columns_dialog.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 41 => 5, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/move_columns_dialog.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/move_columns_dialog.twig"); } } db/login/tmp/twig/9e/9ed23d78fa40b109fca7524500b40ca83ceec9a3ab64d7c38d780c2acf911588.php000064400000015251151502156020022055 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "arrow_"; echo twig_escape_filter($this->env, ($context["text_dir"] ?? null), "html", null, true); echo ".png\" width=\"38\" height=\"22\" alt=\""; echo _gettext("With selected:"); echo "\" /> "; // line 5 if ((($context["overhead_check"] ?? null) != "")) { // line 6 echo " / "; echo _gettext("Check tables having overhead"); echo " "; } // line 8 echo " "; // line 39 echo twig_join_filter(($context["hidden_fields"] ?? null), " "); echo "
        "; } public function getTemplateName() { return "database/structure/check_all_tables.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 162 => 39, 159 => 38, 153 => 35, 149 => 34, 145 => 33, 140 => 32, 137 => 31, 131 => 28, 127 => 27, 123 => 26, 119 => 25, 114 => 23, 110 => 22, 106 => 21, 102 => 20, 98 => 19, 94 => 18, 89 => 16, 85 => 15, 80 => 14, 78 => 13, 74 => 12, 70 => 11, 66 => 10, 60 => 9, 57 => 8, 51 => 6, 49 => 5, 45 => 4, 41 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/check_all_tables.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/check_all_tables.twig"); } } db/login/tmp/twig/96/96885525f00ce10c76c38335c2cf2e232a709122ae75937b4f2eafcdde7be991.php000064400000005055151502156020021575 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context["colspan"] = 2; // line 2 if (($context["is_setup"] ?? null)) { // line 3 echo " "; $context["colspan"] = (($context["colspan"] ?? null) + 1); } // line 5 if (($context["show_buttons"] ?? null)) { // line 6 echo " "; } // line 13 echo "
        env, ($context["colspan"] ?? null), "html", null, true); echo "\" class=\"lastrow\">
        "; } public function getTemplateName() { return "config/form_display/fieldset_bottom.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 13, 51 => 9, 47 => 8, 43 => 7, 40 => 6, 38 => 5, 34 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/fieldset_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/fieldset_bottom.twig"); } } db/login/tmp/twig/96/963c73de5c21a46575e0d45bbcc20e1ed3bf0bf602ad4b78ae947ba5405060d4.php000064400000003441151502156020021752 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["align"] ?? null), "html", null, true); echo " class=\""; echo twig_escape_filter($this->env, ($context["classes"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/results/empty_display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/empty_display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/empty_display.twig"); } } db/login/tmp/twig/96/9612d02121240585429b2ed392225ceb673ea216eb8423501415d353f3dce973.php000064400000011745151502156020021025 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " "; // line 3 if (PhpMyAdmin\Util::showIcons("ActionLinksMode")) { // line 4 echo " "; echo PhpMyAdmin\Util::getImage("b_insrow", _gettext("Add column")); echo "  "; } // line 6 echo " "; $context["num_fields"] = ('' === $tmp = "") ? '' : new Markup($tmp, $this->env->getCharset()); // line 9 echo " "; echo sprintf(_gettext("Add %s column(s)"), ($context["num_fields"] ?? null)); echo "   "; // line 12 echo "
        "; } public function getTemplateName() { return "table/structure/add_column.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 108 => 23, 105 => 22, 88 => 19, 84 => 18, 80 => 17, 63 => 16, 60 => 15, 58 => 14, 54 => 12, 48 => 9, 45 => 6, 39 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/add_column.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/add_column.twig"); } } db/login/tmp/twig/2b/2b0b259a596df92f58ed078a886933def449002d0d45bf724cacb4dd11371150.php000064400000004447151502156020021555 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 if (($context["geom_column_flag"] ?? null)) { // line 4 echo " "; echo _gettext("Function"); echo " "; } // line 6 echo " "; echo _gettext("Column"); echo " "; // line 7 echo _gettext("Type"); echo " "; // line 8 echo _gettext("Collation"); echo " "; // line 9 echo _gettext("Operator"); echo " "; // line 10 echo _gettext("Value"); echo " "; } public function getTemplateName() { return "table/search/table_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 59 => 10, 55 => 9, 51 => 8, 47 => 7, 42 => 6, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/table_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/table_header.twig"); } } db/login/tmp/twig/b0/b0f79e2a13ae4ece258c70757746024f3d828d90c85a58e1b2c6ae75cede2a82.php000064400000004014151502156020021773 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
      • "; } public function getTemplateName() { return "display/export/options_output_radio.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 40 => 6, 38 => 5, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_radio.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_radio.twig"); } } db/login/tmp/twig/b0/b09e5befdeec571d23efa809282673b69cca704a6b1b338a929a4f28cd337923.php000064400000005410151502156020021774 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["html_field_name"] ?? null), "html", null, true); echo "\""; // line 2 if ((isset($context["html_field_id"]) || array_key_exists("html_field_id", $context))) { echo " id=\""; echo twig_escape_filter($this->env, ($context["html_field_id"] ?? null), "html", null, true); echo "\""; } // line 3 if (((isset($context["checked"]) || array_key_exists("checked", $context)) && ($context["checked"] ?? null))) { echo " checked=\"checked\""; } // line 4 if (((isset($context["onclick"]) || array_key_exists("onclick", $context)) && ($context["onclick"] ?? null))) { echo " class=\"autosubmit\""; } echo " />env, ($context["html_field_id"] ?? null), "html", null, true); echo "\""; } // line 6 echo ">"; echo twig_escape_filter($this->env, ($context["label"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 6, 49 => 5, 44 => 4, 40 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/checkbox.twig"); } } db/login/tmp/twig/2d/2d18a13e45e593091a67ec2e80c2d3a3063abc65e1ee0e140a02ec311e653656.php000064400000005615151502156020021513 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["initial_sliders_state"] ?? null) == "disabled")) { // line 2 echo " env, ($context["id"] ?? null), "html", null, true); echo "\""; } echo "> "; } else { // line 4 echo " "; // line 12 echo " env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 13 echo " "; if ((($context["initial_sliders_state"] ?? null) == "closed")) { // line 14 echo "style=\"display: none; overflow:auto;\""; } echo " class=\"pma_auto_slider\""; // line 15 if ((isset($context["message"]) || array_key_exists("message", $context))) { echo " title=\""; echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true); echo "\""; } echo "> "; } } public function getTemplateName() { return "div_for_slider_effect.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 15, 54 => 14, 51 => 13, 44 => 12, 42 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "div_for_slider_effect.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/div_for_slider_effect.twig"); } } db/login/tmp/twig/2d/2dd0ef5185cb8d853b8afd1c6e80e7d8653c5a490c0d63b5c925796bd4b86e9d.php000064400000003677151502156020022117 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["title"] ?? null), "html", null, true); echo "\"> "; // line 2 echo twig_escape_filter($this->env, ($context["truename"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "database/structure/browse_table_label.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/browse_table_label.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/browse_table_label.twig"); } } db/login/tmp/twig/3d/3da49499f71b689cd54aedbbb3b23d74dbd69f60caf21b16672d87ead8a58cf4.php000064400000003441151502156020022315 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["align"] ?? null), "html", null, true); echo " class=\""; echo twig_escape_filter($this->env, ($context["classes"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/results/empty_display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/empty_display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/empty_display.twig"); } } db/login/tmp/twig/3d/3d8e4d464605f0b74f9c2014b49c91e129344220bcba7edbb5551424316b94d6.php000064400000003366151502156020021404 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/browse_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/browse_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/browse_table.twig"); } } db/login/tmp/twig/32/32990fe82dc401917ff4d027faaba972d9d23b9e6b851686fb1660e2150b27d2.php000064400000005104151502156020021472 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["table_name_hash"] ?? null), "html", null, true); echo "_favorite_anchor\" class=\"ajax favorite_table_anchor\" href=\"db_structure.php"; // line 3 echo PhpMyAdmin\Url::getCommon(($context["fav_params"] ?? null)); echo "\" title=\""; // line 4 echo twig_escape_filter($this->env, ((($context["already_favorite"] ?? null)) ? (_gettext("Remove from Favorites")) : (_gettext("Add to Favorites"))), "html", null, true); echo "\" data-favtargets=\""; // line 5 echo twig_escape_filter($this->env, ($context["db_table_name_hash"] ?? null), "html", null, true); echo "\" > "; // line 6 echo ((($context["already_favorite"] ?? null)) ? ($this->getAttribute(($context["titles"] ?? null), "Favorite", [], "array")) : ($this->getAttribute(($context["titles"] ?? null), "NoFavorite", [], "array"))); echo " "; } public function getTemplateName() { return "database/structure/favorite_anchor.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 48 => 6, 44 => 5, 40 => 4, 36 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/favorite_anchor.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/favorite_anchor.twig"); } } db/login/tmp/twig/6b/6bad7894c73c4f572667b33aac67b4c96f5e213da2ed56979dcd733688650e19.php000064400000003436151502156020021625 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

        "; // line 2 echo _gettext("Format:"); echo "

        "; // line 3 echo ($context["dropdown"] ?? null); echo "
        "; } public function getTemplateName() { return "display/export/format_dropdown.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/format_dropdown.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/format_dropdown.twig"); } } db/login/tmp/twig/c0/c04c2973a6c799e941d45c132e0aeae8111d4ebcca4e29abc73385fc75ed4e7b.php000064400000025712151502156020022212 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 4 if ($this->getAttribute(($context["showtable"] ?? null), "Row_format", [], "array", true, true)) { // line 5 echo " "; // line 7 if (($this->getAttribute(($context["showtable"] ?? null), "Row_format", [], "array") == "Fixed")) { // line 8 echo " "; } elseif (($this->getAttribute( // line 9 ($context["showtable"] ?? null), "Row_format", [], "array") == "Dynamic")) { // line 10 echo " "; } else { // line 12 echo " "; } // line 14 echo " "; } // line 16 echo " "; // line 17 if ( !twig_test_empty($this->getAttribute(($context["showtable"] ?? null), "Create_options", [], "array"))) { // line 18 echo " "; // line 20 if (($this->getAttribute(($context["showtable"] ?? null), "Create_options", [], "array") == "partitioned")) { // line 21 echo " "; } else { // line 23 echo " "; } // line 25 echo " "; } // line 27 echo " "; // line 28 if ( !twig_test_empty(($context["tbl_collation"] ?? null))) { // line 29 echo " "; } // line 38 echo " "; // line 39 if (( !($context["is_innodb"] ?? null) && $this->getAttribute(($context["showtable"] ?? null), "Rows", [], "array", true, true))) { // line 40 echo " "; } // line 45 echo " "; // line 46 if ((( !($context["is_innodb"] ?? null) && $this->getAttribute( // line 47 ($context["showtable"] ?? null), "Avg_row_length", [], "array", true, true)) && ($this->getAttribute( // line 48 ($context["showtable"] ?? null), "Avg_row_length", [], "array") > 0))) { // line 49 echo " "; // line 51 $context["avg_row_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute(($context["showtable"] ?? null), "Avg_row_length", [], "array"), 6, 1); // line 52 echo " "; } // line 55 echo " "; // line 56 if ((((( !($context["is_innodb"] ?? null) && $this->getAttribute( // line 57 ($context["showtable"] ?? null), "Data_length", [], "array", true, true)) && $this->getAttribute( // line 58 ($context["showtable"] ?? null), "Rows", [], "array", true, true)) && ($this->getAttribute( // line 59 ($context["showtable"] ?? null), "Rows", [], "array") > 0)) && ( // line 60 ($context["mergetable"] ?? null) == false))) { // line 61 echo " "; } // line 66 echo " "; // line 67 if ($this->getAttribute(($context["showtable"] ?? null), "Auto_increment", [], "array", true, true)) { // line 68 echo " "; } // line 73 echo " "; // line 74 if ($this->getAttribute(($context["showtable"] ?? null), "Create_time", [], "array", true, true)) { // line 75 echo " "; } // line 80 echo " "; // line 81 if ($this->getAttribute(($context["showtable"] ?? null), "Update_time", [], "array", true, true)) { // line 82 echo " "; } // line 87 echo " "; // line 88 if ($this->getAttribute(($context["showtable"] ?? null), "Check_time", [], "array", true, true)) { // line 89 echo " "; } // line 94 echo "
        "; // line 2 echo _gettext("Row statistics"); echo "
        "; // line 6 echo _gettext("Format"); echo ""; echo _gettext("static"); echo ""; echo _gettext("dynamic"); echo ""; echo twig_escape_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Row_format", [], "array"), "html", null, true); echo "
        "; // line 19 echo _gettext("Options"); echo ""; echo _gettext("partitioned"); echo ""; echo twig_escape_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Create_options", [], "array"), "html", null, true); echo "
        "; // line 30 echo _gettext("Collation"); echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["tbl_collation"] ?? null)), "html", null, true); echo "\"> "; // line 33 echo twig_escape_filter($this->env, ($context["tbl_collation"] ?? null), "html", null, true); echo "
        "; // line 41 echo _gettext("Rows"); echo " "; // line 42 echo twig_escape_filter($this->env, PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["showtable"] ?? null), "Rows", [], "array"), 0), "html", null, true); echo "
        "; // line 50 echo _gettext("Row length"); echo ""; echo twig_escape_filter($this->env, $this->getAttribute(($context["avg_row_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["avg_row_length"] ?? null), 1, [], "array"), "html", null, true); echo "
        "; // line 62 echo _gettext("Row size"); echo " "; // line 63 echo twig_escape_filter($this->env, ($context["avg_size"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["avg_unit"] ?? null), "html", null, true); echo "
        "; // line 69 echo _gettext("Next autoindex"); echo " "; // line 70 echo twig_escape_filter($this->env, PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["showtable"] ?? null), "Auto_increment", [], "array"), 0), "html", null, true); echo "
        "; // line 76 echo _gettext("Creation"); echo " "; // line 77 echo twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(twig_date_format_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Create_time", [], "array"), "U")), "html", null, true); echo "
        "; // line 83 echo _gettext("Last update"); echo " "; // line 84 echo twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(twig_date_format_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Update_time", [], "array"), "U")), "html", null, true); echo "
        "; // line 90 echo _gettext("Last check"); echo " "; // line 91 echo twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(twig_date_format_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Check_time", [], "array"), "U")), "html", null, true); echo "
        "; } public function getTemplateName() { return "table/structure/row_stats_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 266 => 94, 260 => 91, 256 => 90, 253 => 89, 251 => 88, 248 => 87, 242 => 84, 238 => 83, 235 => 82, 233 => 81, 230 => 80, 224 => 77, 220 => 76, 217 => 75, 215 => 74, 212 => 73, 206 => 70, 202 => 69, 199 => 68, 197 => 67, 194 => 66, 186 => 63, 182 => 62, 179 => 61, 177 => 60, 176 => 59, 175 => 58, 174 => 57, 173 => 56, 170 => 55, 161 => 52, 159 => 51, 155 => 50, 152 => 49, 150 => 48, 149 => 47, 148 => 46, 145 => 45, 139 => 42, 135 => 41, 132 => 40, 130 => 39, 127 => 38, 119 => 33, 115 => 32, 110 => 30, 107 => 29, 105 => 28, 102 => 27, 98 => 25, 92 => 23, 86 => 21, 84 => 20, 80 => 19, 77 => 18, 75 => 17, 72 => 16, 68 => 14, 62 => 12, 56 => 10, 54 => 9, 49 => 8, 47 => 7, 43 => 6, 40 => 5, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/row_stats_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/row_stats_table.twig"); } } db/login/tmp/twig/c0/c0dff9d7ddec2f60cacb20dd9e0aaea53ead459023d9ab6c33a9239d8efd5bcd.php000064400000005016151502156020022773 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "arrow_"; echo twig_escape_filter($this->env, ($context["text_dir"] ?? null), "html", null, true); echo ".png\" width=\"38\" height=\"22\" alt=\""; // line 2 echo _gettext("With selected:"); echo "\" /> env, ($context["form_name"] ?? null), "html", null, true); echo "_checkall\" class=\"checkall_box\" title=\""; // line 4 echo _gettext("Check all"); echo "\" /> "; // line 6 echo _gettext("With selected:"); echo " "; } public function getTemplateName() { return "select_all.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 6, 49 => 5, 45 => 4, 41 => 3, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "select_all.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/select_all.twig"); } } db/login/tmp/twig/a0/a0731b217422f1f42c64d7ad515a4cc61294e95eca50f4fbca9bca8ae909018b.php000064400000005615151502156020022024 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["initial_sliders_state"] ?? null) == "disabled")) { // line 2 echo " env, ($context["id"] ?? null), "html", null, true); echo "\""; } echo "> "; } else { // line 4 echo " "; // line 12 echo " env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 13 echo " "; if ((($context["initial_sliders_state"] ?? null) == "closed")) { // line 14 echo "style=\"display: none; overflow:auto;\""; } echo " class=\"pma_auto_slider\""; // line 15 if ((isset($context["message"]) || array_key_exists("message", $context))) { echo " title=\""; echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true); echo "\""; } echo "> "; } } public function getTemplateName() { return "div_for_slider_effect.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 15, 54 => 14, 51 => 13, 44 => 12, 42 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "div_for_slider_effect.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/div_for_slider_effect.twig"); } } db/login/tmp/twig/a0/a0c00a54b1bb321f799a5f4507a676b317067ae03b1d45bd13363a544ec066b7.php000064400000003623151502156020021422 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "javascript/display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "javascript/display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/javascript/display.twig"); } } db/login/tmp/twig/a0/a006a0d1ef0146ae776a351e25bffb2a1aece98e5a8ef40fcbd61f9e44da5431.php000064400000005625151502156020022324 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["export_method"] ?? null) != "custom-no-form")) { // line 2 echo "

        "; // line 3 echo _gettext("Export method:"); echo "

        "; } } public function getTemplateName() { return "display/export/method.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 61 => 18, 59 => 17, 54 => 15, 48 => 10, 46 => 9, 41 => 7, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/method.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/method.twig"); } } db/login/tmp/twig/ab/ab4ed08e20f79a8ebf0ef260a91a3550b79c55304b7a281489a7f3574b994f73.php000064400000003366151502156020021652 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/browse_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/browse_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/browse_table.twig"); } } db/login/tmp/twig/ab/ab536984d6a6314944391205209dc61dad196fe6d8f0a5984dc9d1daf89a892e.php000064400000005231151502156020021661 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

        "; // line 3 echo PhpMyAdmin\Util::getImage("b_export", _gettext("Export")); echo " "; // line 4 if ((($context["export_type"] ?? null) == "server")) { // line 5 echo " "; echo _gettext("Exporting databases from the current server"); // line 6 echo " "; } elseif ((($context["export_type"] ?? null) == "database")) { // line 7 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Exporting tables from \"%s\" database"), ($context["db"] ?? null)), "html", null, true); echo " "; } else { // line 9 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Exporting rows from \"%s\" table"), ($context["table"] ?? null)), "html", null, true); echo " "; } // line 11 echo "

        "; } public function getTemplateName() { return "display/export/option_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 11, 52 => 9, 46 => 7, 43 => 6, 40 => 5, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/option_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/option_header.twig"); } } db/login/tmp/twig/51/51d20faa09391f5c9e11f07707ef375fba6b167142169b2450f904e6494a53a3.php000064400000004454151502156020021250 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo twig_escape_filter($this->env, ($context["type"] ?? null), "html", null, true); echo " "; // line 3 echo twig_escape_filter($this->env, ($context["name"] ?? null), "html", null, true); echo " env, ($context["field"] ?? null), "html", null, true); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["value"] ?? null), "html", null, true); echo "\" type=\"text\" /> "; } public function getTemplateName() { return "export/alias_item.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 50 => 8, 42 => 5, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "export/alias_item.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/export/alias_item.twig"); } } db/login/tmp/twig/51/51b6b33895f12e46590a9048c50d4fe133a38af6755f16a88584403441bac839.php000064400000003623151502156020021126 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "javascript/display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "javascript/display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/javascript/display.twig"); } } db/login/tmp/twig/d6/d66c84e71db338af3aae5892c3b61f8d85d8bb63e2040876d5bbb84af484fb41.php000064400000003677151502156020022105 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["title"] ?? null), "html", null, true); echo "\"> "; // line 2 echo twig_escape_filter($this->env, ($context["truename"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "database/structure/browse_table_label.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/browse_table_label.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/browse_table_label.twig"); } } db/login/tmp/twig/bd/bdb6d873e4a0dd273980f51c747f1a1b9cb4c5327f360d659451c40b2adfe777.php000064400000004556151502156020022005 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 if ((($context["export_type"] ?? null) == "server")) { // line 3 echo "

        "; echo _gettext("Databases:"); echo "

        "; } elseif (( // line 4 ($context["export_type"] ?? null) == "database")) { // line 5 echo "

        "; echo _gettext("Tables:"); echo "

        "; } // line 7 echo " "; if ( !twig_test_empty(($context["multi_values"] ?? null))) { // line 8 echo " "; echo ($context["multi_values"] ?? null); echo " "; } // line 10 echo "
        "; } public function getTemplateName() { return "display/export/selection.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 57 => 10, 51 => 8, 48 => 7, 42 => 5, 40 => 4, 35 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/selection.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/selection.twig"); } } db/login/tmp/twig/ff/ff02c2923be6d1616f4ba232c4d152a6d8fda3ab04811c437c8ddd5f69b01cfb.php000064400000006661151502156020022255 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 $this->loadTemplate("table/search/table_header.twig", "table/search/fields_table.twig", 2)->display(twig_to_array(["geom_column_flag" => // line 3 ($context["geom_column_flag"] ?? null)])); // line 5 echo " "; // line 6 if ((($context["search_type"] ?? null) == "zoom")) { // line 7 echo " "; $this->loadTemplate("table/search/rows_zoom.twig", "table/search/fields_table.twig", 7)->display(twig_to_array(["self" => // line 8 ($context["self"] ?? null), "column_names" => // line 9 ($context["column_names"] ?? null), "criteria_column_names" => // line 10 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 11 ($context["criteria_column_types"] ?? null)])); // line 13 echo " "; } else { // line 14 echo " "; $this->loadTemplate("table/search/rows_normal.twig", "table/search/fields_table.twig", 14)->display(twig_to_array(["self" => // line 15 ($context["self"] ?? null), "geom_column_flag" => // line 16 ($context["geom_column_flag"] ?? null), "column_names" => // line 17 ($context["column_names"] ?? null), "column_types" => // line 18 ($context["column_types"] ?? null), "column_collations" => // line 19 ($context["column_collations"] ?? null)])); // line 21 echo " "; } // line 22 echo "
        "; } public function getTemplateName() { return "table/search/fields_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 64 => 22, 61 => 21, 59 => 19, 58 => 18, 57 => 17, 56 => 16, 55 => 15, 53 => 14, 50 => 13, 48 => 11, 47 => 10, 46 => 9, 45 => 8, 43 => 7, 41 => 6, 38 => 5, 36 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/fields_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/fields_table.twig"); } } db/login/tmp/twig/8b/8b3d6e41c7dc114088cc4febcf99864574a28c46ce39fd02d9577bec9ce900de.php000064400000004002151502156020022166 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 echo _gettext("Filters"); echo "
        env, ($context["filter_value"] ?? null), "html", null, true); echo "\" />
        "; } public function getTemplateName() { return "filter.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 6, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "filter.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/filter.twig"); } } db/login/tmp/twig/62/624b9b3bda57aa85285f3d2b04486d364febc01f55dcb011a2629c0da9d8da41.php000064400000006775151502156020021762 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["export_type"] ?? null) == "server")) { // line 2 echo " "; echo PhpMyAdmin\Url::getHiddenInputs("", "", 1); echo " "; } elseif (( // line 3 ($context["export_type"] ?? null) == "database")) { // line 4 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), "", 1); echo " "; } else { // line 6 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 8 echo " "; // line 10 if ( !twig_test_empty(($context["single_table"] ?? null))) { // line 11 echo " "; } // line 13 echo " env, ($context["export_type"] ?? null), "html", null, true); echo "\"> "; // line 17 echo "env, ($context["export_method"] ?? null), "html", null, true); echo "\"> "; // line 19 if ( !twig_test_empty(($context["sql_query"] ?? null))) { // line 20 echo " env, ($context["sql_query"] ?? null), "html", null, true); echo "\"> "; } // line 22 echo " env, ($context["template_id"] ?? null), "html", null, true); echo "\"> "; } public function getTemplateName() { return "display/export/hidden_inputs.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 85 => 23, 82 => 22, 76 => 20, 74 => 19, 68 => 17, 63 => 14, 60 => 13, 56 => 11, 54 => 10, 51 => 8, 45 => 6, 39 => 4, 37 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/hidden_inputs.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/hidden_inputs.twig"); } } db/login/tmp/twig/9c/9cefc052b5afc0adc8b31fc3e5be414056cd8bb0917c2a1066578592b2fe03b6.php000064400000013234151502156020022114 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 $this->loadTemplate("select_all.twig", "table/structure/check_all_table_column.twig", 2)->display(twig_to_array(["pma_theme_image" => // line 3 ($context["pma_theme_image"] ?? null), "text_dir" => // line 4 ($context["text_dir"] ?? null), "form_name" => "fieldsForm"])); // line 7 echo " "; // line 8 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Browse"), "b_browse", "browse"); // line 14 echo " "; // line 16 if (( !($context["tbl_is_view"] ?? null) && !($context["db_is_system_schema"] ?? null))) { // line 17 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit change_columns_anchor ajax", _gettext("Change"), "b_edit", "change"); // line 23 echo " "; // line 24 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Drop"), "b_drop", "drop"); // line 30 echo " "; // line 32 if ((($context["tbl_storage_engine"] ?? null) != "ARCHIVE")) { // line 33 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Primary"), "b_primary", "primary"); // line 39 echo " "; // line 40 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Unique"), "b_unique", "unique"); // line 46 echo " "; // line 47 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Index"), "b_index", "index"); // line 53 echo " "; // line 54 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Fulltext"), "b_ftext", "ftext"); // line 60 echo " "; // line 62 if (( !twig_test_empty(($context["tbl_storage_engine"] ?? null)) && ((( // line 63 ($context["tbl_storage_engine"] ?? null) == "MYISAM") || ( // line 64 ($context["tbl_storage_engine"] ?? null) == "ARIA")) || ( // line 65 ($context["tbl_storage_engine"] ?? null) == "MARIA")))) { // line 66 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Fulltext"), "b_ftext", "ftext"); // line 72 echo " "; } // line 74 echo " "; // line 75 if (($context["central_columns_work"] ?? null)) { // line 76 echo " "; echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Add to central columns"), "centralColumns_add", "add_to_central_columns"); // line 82 echo " "; // line 83 echo PhpMyAdmin\Util::getButtonOrImage("submit_mult", "mult_submit", _gettext("Remove from central columns"), "centralColumns_delete", "remove_from_central_columns"); // line 89 echo " "; } // line 91 echo " "; } // line 92 echo " "; } // line 93 echo "
        "; } public function getTemplateName() { return "table/structure/check_all_table_column.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 119 => 93, 116 => 92, 113 => 91, 109 => 89, 107 => 83, 104 => 82, 101 => 76, 99 => 75, 96 => 74, 92 => 72, 89 => 66, 87 => 65, 86 => 64, 85 => 63, 84 => 62, 80 => 60, 78 => 54, 75 => 53, 73 => 47, 70 => 46, 68 => 40, 65 => 39, 62 => 33, 60 => 32, 56 => 30, 54 => 24, 51 => 23, 48 => 17, 46 => 16, 42 => 14, 40 => 8, 37 => 7, 35 => 4, 34 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/check_all_table_column.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/check_all_table_column.twig"); } } db/login/tmp/twig/c7/c7e8fc8e83845f91e522d5b888468d4615cf13269009adc21b7f4bc6599960c7.php000064400000021515151502156020021475 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["search_type"] ?? null) == "zoom")) { // line 2 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 2)->display(twig_to_array(["script_name" => "tbl_zoom_select.php", "form_id" => "zoom_search_form", "db" => // line 5 ($context["db"] ?? null), "table" => // line 6 ($context["table"] ?? null), "goto" => // line 7 ($context["goto"] ?? null)])); // line 9 echo "
        "; // line 12 echo _gettext("Do a \"query by example\" (wildcard: \"%\") for two different columns"); // line 13 echo " "; // line 14 $this->loadTemplate("table/search/fields_table.twig", "table/search/selection_form.twig", 14)->display(twig_to_array(["self" => // line 15 ($context["self"] ?? null), "search_type" => // line 16 ($context["search_type"] ?? null), "geom_column_flag" => // line 17 ($context["geom_column_flag"] ?? null), "column_names" => // line 18 ($context["column_names"] ?? null), "column_types" => // line 19 ($context["column_types"] ?? null), "column_collations" => // line 20 ($context["column_collations"] ?? null), "criteria_column_names" => // line 21 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 22 ($context["criteria_column_types"] ?? null)])); // line 24 echo " "; $this->loadTemplate("table/search/options_zoom.twig", "table/search/selection_form.twig", 24)->display(twig_to_array(["data_label" => // line 25 ($context["data_label"] ?? null), "column_names" => // line 26 ($context["column_names"] ?? null), "max_plot_limit" => // line 27 ($context["max_plot_limit"] ?? null)])); // line 29 echo "
        "; } elseif (( // line 31 ($context["search_type"] ?? null) == "normal")) { // line 32 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 32)->display(twig_to_array(["script_name" => "tbl_select.php", "form_id" => "tbl_search_form", "db" => // line 35 ($context["db"] ?? null), "table" => // line 36 ($context["table"] ?? null), "goto" => // line 37 ($context["goto"] ?? null)])); // line 39 echo "
        "; // line 42 echo _gettext("Do a \"query by example\" (wildcard: \"%\")"); // line 43 echo "
        "; // line 45 $this->loadTemplate("table/search/fields_table.twig", "table/search/selection_form.twig", 45)->display(twig_to_array(["self" => // line 46 ($context["self"] ?? null), "search_type" => // line 47 ($context["search_type"] ?? null), "geom_column_flag" => // line 48 ($context["geom_column_flag"] ?? null), "column_names" => // line 49 ($context["column_names"] ?? null), "column_types" => // line 50 ($context["column_types"] ?? null), "column_collations" => // line 51 ($context["column_collations"] ?? null), "criteria_column_names" => // line 52 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 53 ($context["criteria_column_types"] ?? null)])); // line 55 echo "
        "; // line 59 $this->loadTemplate("table/search/options.twig", "table/search/selection_form.twig", 59)->display(twig_to_array(["column_names" => // line 60 ($context["column_names"] ?? null), "max_rows" => // line 61 ($context["max_rows"] ?? null)])); // line 63 echo "
        "; } elseif (( // line 64 ($context["search_type"] ?? null) == "replace")) { // line 65 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 65)->display(twig_to_array(["script_name" => "tbl_find_replace.php", "form_id" => "find_replace_form", "db" => // line 68 ($context["db"] ?? null), "table" => // line 69 ($context["table"] ?? null), "goto" => // line 70 ($context["goto"] ?? null)])); // line 72 echo "
        "; // line 75 echo _gettext("Find and replace"); // line 76 echo " "; // line 77 $this->loadTemplate("table/search/search_and_replace.twig", "table/search/selection_form.twig", 77)->display(twig_to_array(["column_names" => // line 78 ($context["column_names"] ?? null), "column_types" => // line 79 ($context["column_types"] ?? null), "sql_types" => // line 80 ($context["sql_types"] ?? null)])); // line 82 echo "
        "; } else { // line 85 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 85)->display(twig_to_array(["script_name" => "", "form_id" => "", "db" => // line 88 ($context["db"] ?? null), "table" => // line 89 ($context["table"] ?? null), "goto" => // line 90 ($context["goto"] ?? null)])); } // line 93 echo " "; // line 95 echo "
        "; } public function getTemplateName() { return "table/search/selection_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 160 => 99, 156 => 98, 152 => 97, 148 => 95, 145 => 93, 142 => 90, 141 => 89, 140 => 88, 138 => 85, 133 => 82, 131 => 80, 130 => 79, 129 => 78, 128 => 77, 125 => 76, 123 => 75, 118 => 72, 116 => 70, 115 => 69, 114 => 68, 112 => 65, 110 => 64, 107 => 63, 105 => 61, 104 => 60, 103 => 59, 97 => 55, 95 => 53, 94 => 52, 93 => 51, 92 => 50, 91 => 49, 90 => 48, 89 => 47, 88 => 46, 87 => 45, 83 => 43, 81 => 42, 76 => 39, 74 => 37, 73 => 36, 72 => 35, 70 => 32, 68 => 31, 64 => 29, 62 => 27, 61 => 26, 60 => 25, 58 => 24, 56 => 22, 55 => 21, 54 => 20, 53 => 19, 52 => 18, 51 => 17, 50 => 16, 49 => 15, 48 => 14, 45 => 13, 43 => 12, 38 => 9, 36 => 7, 35 => 6, 34 => 5, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/selection_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/selection_form.twig"); } } db/login/tmp/twig/c7/c70df99bff2eea2f20aba19bbb7b8d5de327cecaedb5dc3d383203f7d3d02ad2.php000064400000007406151502156020022714 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array", true, true) && $this->getAttribute($this->getAttribute( // line 2 ($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array", false, true), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array", true, true))) { // line 3 echo " env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), "html", null, true); echo "\"> "; // line 4 if ((twig_length_filter($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array")) > ($context["limit_chars"] ?? null))) { // line 5 echo " "; echo twig_escape_filter($this->env, twig_slice($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), 0, ($context["limit_chars"] ?? null)), "html", null, true); echo "… "; } else { // line 7 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), "html", null, true); echo " "; } // line 9 echo " "; } } public function getTemplateName() { return "display/results/comment_for_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 52 => 9, 46 => 7, 40 => 5, 38 => 4, 33 => 3, 31 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/comment_for_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/comment_for_row.twig"); } } db/login/tmp/twig/7d/7d8087d41c482579730682151ac3393f13b0506f63d25d3b07db85fcba5cdbeb.php000064400000004254151502156020021554 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

        "; // line 3 echo PhpMyAdmin\Util::getIcon("b_print", _gettext("Print"), true); echo " env, ($context["url_query"] ?? null), "html", null, true); echo "\" target=\"print_view\"> "; // line 6 echo PhpMyAdmin\Util::getIcon("b_tblanalyse", _gettext("Data dictionary"), true); echo "

        "; } public function getTemplateName() { return "database/structure/print_view_data_dictionary_link.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 6, 39 => 5, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/print_view_data_dictionary_link.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/print_view_data_dictionary_link.twig"); } } db/login/tmp/twig/13/13b692d00397499491e9ef2438681e6d6a9c7b8961077818acf7a7a6fe836c57.php000064400000005231151502156020021254 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

        "; // line 3 echo PhpMyAdmin\Util::getImage("b_export", _gettext("Export")); echo " "; // line 4 if ((($context["export_type"] ?? null) == "server")) { // line 5 echo " "; echo _gettext("Exporting databases from the current server"); // line 6 echo " "; } elseif ((($context["export_type"] ?? null) == "database")) { // line 7 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Exporting tables from \"%s\" database"), ($context["db"] ?? null)), "html", null, true); echo " "; } else { // line 9 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Exporting rows from \"%s\" table"), ($context["table"] ?? null)), "html", null, true); echo " "; } // line 11 echo "

        "; } public function getTemplateName() { return "display/export/option_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 11, 52 => 9, 46 => 7, 43 => 6, 40 => 5, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/option_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/option_header.twig"); } } db/login/tmp/twig/13/13f0f0f3790011957bbf2070b4a5304113ac70692fcd005a7f44bf844dd20fd9.php000064400000013645151502156020021360 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
        "; // line 5 echo _gettext("Search in database"); echo "

        env, ($context["criteria_search_string"] ?? null), "html", null, true); echo "\">

        "; // line 15 echo _gettext("Find:"); echo " "; // line 17 echo " "; // line 19 echo " "; echo PhpMyAdmin\Util::getRadioFields("criteriaSearchType", // line 21 ($context["choices"] ?? null), // line 22 ($context["criteria_search_type"] ?? null), true, false); // line 25 echo "
        "; // line 29 echo _gettext("Inside tables:"); echo "

        "; // line 32 echo _gettext("Select all"); // line 33 echo " / "; // line 35 echo _gettext("Unselect all"); // line 36 echo "

        "; // line 50 echo " env, ($context["criteria_column_name"] ?? null), "html", null, true))) : (print (""))); echo "\">

        "; } public function getTemplateName() { return "database/search/selection_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 135 => 58, 128 => 54, 125 => 52, 123 => 51, 120 => 50, 114 => 45, 105 => 42, 101 => 41, 97 => 40, 93 => 39, 88 => 36, 86 => 35, 82 => 33, 80 => 32, 74 => 29, 68 => 25, 66 => 22, 65 => 21, 63 => 19, 61 => 17, 57 => 15, 50 => 11, 47 => 9, 45 => 8, 39 => 5, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/search/selection_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/search/selection_form.twig"); } } db/login/tmp/twig/13/134c8eb60e11597263c927495da625090d92e6a16b74ec895611ef780f12655f.php000064400000007644151502156020021145 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo _gettext("Find:"); // line 2 echo " "; // line 3 echo _gettext("Replace with:"); // line 4 echo " "; // line 6 echo _gettext("Column:"); // line 7 echo " "; // line 19 $this->loadTemplate("checkbox.twig", "table/search/search_and_replace.twig", 19)->display(twig_to_array(["html_field_id" => "useRegex", "html_field_name" => "useRegex", "label" => _gettext("Use regular expression"), "checked" => false, "onclick" => false])); } public function getTemplateName() { return "table/search/search_and_replace.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 19, 76 => 17, 70 => 16, 64 => 13, 59 => 12, 56 => 11, 53 => 10, 50 => 9, 46 => 8, 43 => 7, 41 => 6, 37 => 4, 35 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/search_and_replace.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/search_and_replace.twig"); } } db/login/tmp/twig/d2/d219f92a31cd381c43eb11f73caa2a3a0bed2e046546356aef3cce47e2569f26.php000064400000007141151502156020022027 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["is_zip"] ?? null) || ($context["is_gzip"] ?? null))) { // line 2 echo "
      • "; } else { // line 23 echo " env, ($context["selected_compression"] ?? null), "html", null, true); echo "\"> "; } } public function getTemplateName() { return "display/export/options_output_compression.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 80 => 23, 75 => 20, 71 => 18, 69 => 17, 65 => 16, 63 => 15, 60 => 14, 56 => 12, 54 => 11, 50 => 10, 48 => 9, 46 => 8, 42 => 7, 38 => 5, 36 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_output_compression.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_output_compression.twig"); } } db/login/tmp/twig/d2/d2594f0810576d7496e9e14275ea3d31d90e1f14eb8f4176b85a08919fb68cab.php000064400000004254151502156020021524 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

        "; // line 3 echo PhpMyAdmin\Util::getIcon("b_print", _gettext("Print"), true); echo " env, ($context["url_query"] ?? null), "html", null, true); echo "\" target=\"print_view\"> "; // line 6 echo PhpMyAdmin\Util::getIcon("b_tblanalyse", _gettext("Data dictionary"), true); echo "

        "; } public function getTemplateName() { return "database/structure/print_view_data_dictionary_link.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 43 => 6, 39 => 5, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/print_view_data_dictionary_link.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/print_view_data_dictionary_link.twig"); } } db/login/tmp/twig/f5/f589c1ad0b7292d669068908a26101f0ae7b5db110ba174ebc5492c80bc08508.php000064400000003363151502156020021461 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 2 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/search_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/search_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/search_table.twig"); } } db/login/tmp/twig/f5/f59d62c74fc261f8658f2f3392284838b2a7c9d965d7fbd17202c4ef54ccfc5c.php000064400000006433151502156020021766 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> env, ($context["max_rows"] ?? null), "html", null, true)))); echo "\" /> env, ($context["goto"] ?? null), "html", null, true); echo "\" /> env, ($context["unique_id"] ?? null), "html", null, true); echo "\" class=\"showAllRows\""; // line 10 echo ((($context["showing_all"] ?? null)) ? (" checked=\"checked\"") : ("")); echo " value=\"all\" />
        "; } public function getTemplateName() { return "display/results/show_all_checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 62 => 11, 58 => 10, 55 => 9, 51 => 8, 47 => 7, 43 => 6, 38 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/show_all_checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/show_all_checkbox.twig"); } } db/login/tmp/twig/04/04b19139c0acf56eb902cba2232791e725284e59c4a9dac8db2ed2178097290c.php000064400000013473151502156020021470 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo PhpMyAdmin\Util::getDivForSliderEffect("searchoptions", _gettext("Options")); echo " "; // line 4 echo "
        "; // line 6 echo _gettext("Select columns (at least one):"); // line 7 echo "
        "; // line 23 echo "
        "; // line 25 echo _gettext("Or"); echo " "; // line 26 echo _gettext("Add search conditions (body of the \"where\" clause):"); // line 27 echo " "; // line 28 echo PhpMyAdmin\Util::showMySQLDocu("Functions"); echo "
        "; // line 33 echo "
        "; // line 34 echo _gettext("Number of rows per page"); echo " env, ($context["max_rows"] ?? null), "html", null, true); echo "\" class=\"textfield\" />
        "; // line 44 echo "
        "; // line 45 echo _gettext("Display order:"); echo " "; // line 54 echo PhpMyAdmin\Util::getRadioFields("order", ["ASC" => _gettext("Ascending"), "DESC" => _gettext("Descending")], "ASC", false, true, "formelement"); // line 64 echo "
        "; } public function getTemplateName() { return "table/search/options.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 146 => 64, 144 => 54, 140 => 52, 131 => 49, 126 => 48, 122 => 47, 117 => 45, 114 => 44, 107 => 39, 99 => 34, 96 => 33, 89 => 28, 86 => 27, 84 => 26, 80 => 25, 76 => 23, 69 => 17, 60 => 14, 54 => 12, 50 => 11, 45 => 9, 41 => 7, 39 => 6, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/options.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/options.twig"); } } db/login/tmp/twig/78/786fc5d49e751f699117fbb46b2e5920f5cdae9b5b3e7bb04e39d201b9048164.php000064400000004110151502156020021577 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/empty_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 40 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/empty_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/empty_table.twig"); } } db/login/tmp/twig/dd/dd1476242f68168118c7ae6fc7223306d6024d66a38b3461e11a72d128eee8c1.php000064400000015611151502156020021407 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(["db" => // line 3 ($context["db"] ?? null), "table" => // line 4 ($context["table"] ?? null), "sql_query" => // line 5 ($context["sql_query"] ?? null), "goto" => // line 6 ($context["goto"] ?? null), "display_options_form" => 1]); // line 8 echo " "; // line 10 echo PhpMyAdmin\Util::getDivForSliderEffect("", _gettext("Options")); echo "
        "; // line 14 echo " "; echo PhpMyAdmin\Util::getRadioFields("pftext", ["P" => _gettext("Partial texts"), "F" => _gettext("Full texts")], // line 20 ($context["pftext"] ?? null), true, true, "", ("pftext_" . // line 24 ($context["unique_id"] ?? null))); // line 25 echo "
        "; // line 28 if ((($context["relwork"] ?? null) && ($context["displaywork"] ?? null))) { // line 29 echo "
        "; // line 30 echo PhpMyAdmin\Util::getRadioFields("relational_display", ["K" => _gettext("Relational key"), "D" => _gettext("Display column for relationships")], // line 36 ($context["relational_display"] ?? null), true, true, "", ("relational_display_" . // line 40 ($context["unique_id"] ?? null))); // line 41 echo "
        "; } // line 44 echo "
        "; // line 46 $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 46)->display(twig_to_array(["html_field_name" => "display_binary", "label" => _gettext("Show binary contents"), "checked" => !twig_test_empty( // line 49 ($context["display_binary"] ?? null)), "onclick" => false, "html_field_id" => ("display_binary_" . // line 51 ($context["unique_id"] ?? null))])); // line 53 echo " "; $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 53)->display(twig_to_array(["html_field_name" => "display_blob", "label" => _gettext("Show BLOB contents"), "checked" => !twig_test_empty( // line 56 ($context["display_blob"] ?? null)), "onclick" => false, "html_field_id" => ("display_blob_" . // line 58 ($context["unique_id"] ?? null))])); // line 60 echo "
        "; // line 66 echo "
        "; // line 67 $this->loadTemplate("checkbox.twig", "display/results/options_block.twig", 67)->display(twig_to_array(["html_field_name" => "hide_transformation", "label" => _gettext("Hide browser transformation"), "checked" => !twig_test_empty( // line 70 ($context["hide_transformation"] ?? null)), "onclick" => false, "html_field_id" => ("hide_transformation_" . // line 72 ($context["unique_id"] ?? null))])); // line 74 echo "
        "; // line 77 if (($context["possible_as_geometry"] ?? null)) { // line 78 echo "
        "; // line 79 echo PhpMyAdmin\Util::getRadioFields("geoOption", ["GEOM" => _gettext("Geometry"), "WKT" => _gettext("Well Known Text"), "WKB" => _gettext("Well Known Binary")], // line 86 ($context["geo_option"] ?? null), true, true, "", ("geoOption_" . // line 90 ($context["unique_id"] ?? null))); // line 91 echo "
        "; } else { // line 94 echo "
        "; // line 95 echo twig_escape_filter($this->env, ($context["possible_as_geometry"] ?? null), "html", null, true); echo " "; // line 96 echo PhpMyAdmin\Util::getRadioFields("geoOption", ["WKT" => _gettext("Well Known Text"), "WKB" => _gettext("Well Known Binary")], // line 102 ($context["geo_option"] ?? null), true, true, "", ("geoOption_" . // line 106 ($context["unique_id"] ?? null))); // line 107 echo "
        "; } // line 110 echo "
        "; // line 117 echo " "; } public function getTemplateName() { return "display/results/options_block.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 143 => 117, 138 => 114, 132 => 110, 127 => 107, 125 => 106, 124 => 102, 123 => 96, 119 => 95, 116 => 94, 111 => 91, 109 => 90, 108 => 86, 107 => 79, 104 => 78, 102 => 77, 97 => 74, 95 => 72, 94 => 70, 93 => 67, 90 => 66, 86 => 60, 84 => 58, 83 => 56, 81 => 53, 79 => 51, 78 => 49, 77 => 46, 73 => 44, 68 => 41, 66 => 40, 65 => 36, 64 => 30, 61 => 29, 59 => 28, 54 => 25, 52 => 24, 51 => 20, 49 => 14, 43 => 10, 39 => 8, 37 => 6, 36 => 5, 35 => 4, 34 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/options_block.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/options_block.twig"); } } db/login/tmp/twig/dd/dd5f96dbeea99a411178aa9c838d2785d82eec5c66af7c73c3f62b200bb88c79.php000064400000004035151502156020022251 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["group"] ?? null), "html", null, true); echo "\"> env, ($context["colspan"] ?? null), "html", null, true); echo "\"> "; // line 3 echo twig_escape_filter($this->env, ($context["header_text"] ?? null), "html", null, true); echo " "; } public function getTemplateName() { return "config/form_display/group_header.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 39 => 3, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/group_header.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/group_header.twig"); } } db/login/tmp/twig/ae/ae25b735c0398c0c6a34895cf07f858207e235cf453cadf07a003940bfb9cd05.php000064400000005615151502156020021710 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["initial_sliders_state"] ?? null) == "disabled")) { // line 2 echo " env, ($context["id"] ?? null), "html", null, true); echo "\""; } echo "> "; } else { // line 4 echo " "; // line 12 echo " env, ($context["id"] ?? null), "html", null, true); echo "\""; } // line 13 echo " "; if ((($context["initial_sliders_state"] ?? null) == "closed")) { // line 14 echo "style=\"display: none; overflow:auto;\""; } echo " class=\"pma_auto_slider\""; // line 15 if ((isset($context["message"]) || array_key_exists("message", $context))) { echo " title=\""; echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true); echo "\""; } echo "> "; } } public function getTemplateName() { return "div_for_slider_effect.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 58 => 15, 54 => 14, 51 => 13, 44 => 12, 42 => 4, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "div_for_slider_effect.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/div_for_slider_effect.twig"); } } db/login/tmp/twig/02/02e248ed469d51848a84d1b14c50d71c3e1be5db01cc3d1b21fcd090f20648b0.php000064400000010347151502156020021566 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["goto"] ?? null), "html", null, true); echo "\"> env, ($context["err_url"] ?? null), "html", null, true); echo "\"> env, ($context["sql_query"] ?? null), "html", null, true); echo "\"> "; // line 7 if (($context["has_where_clause"] ?? null)) { // line 8 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["where_clause_array"] ?? null)); foreach ($context['_seq'] as $context["key_id"] => $context["where_clause"]) { // line 9 echo " env, $context["key_id"], "html", null, true); echo "]\" value=\""; // line 10 echo twig_escape_filter($this->env, twig_trim_filter($context["where_clause"]), "html", null, true); echo "\"> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['key_id'], $context['where_clause'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 12 echo " "; } // line 13 echo " "; // line 14 ob_start(function () { return ''; }); // line 15 echo " env, ($context["insert_rows_default"] ?? null), "html", null, true); echo "\" min=\"1\"> "; $context["insert_rows"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 18 echo " "; echo sprintf(_gettext("Continue insertion with %s rows"), ($context["insert_rows"] ?? null)); echo "
        "; } public function getTemplateName() { return "table/insert/continue_insertion_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 84 => 18, 79 => 16, 77 => 15, 75 => 14, 72 => 13, 69 => 12, 61 => 10, 57 => 9, 52 => 8, 50 => 7, 45 => 5, 41 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/insert/continue_insertion_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/insert/continue_insertion_form.twig"); } } db/login/tmp/twig/10/10908ac9b64e962d693e6f1435ea4f0fc46837d4fbc6897c48d7c6a16bb82166.php000064400000005332151502156020021524 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " env, ($context["goto"] ?? null), "html", null, true); echo "\" /> "; // line 4 echo "env, ($context["pos"] ?? null), "html", null, true); echo "\" /> env, ($context["is_browse_distinct"] ?? null), "html", null, true); echo "\" /> "; // line 6 echo _gettext("Number of rows:"); // line 7 echo PhpMyAdmin\Util::getDropdown("session_max_rows", // line 9 ($context["number_of_rows_choices"] ?? null), // line 10 ($context["max_rows"] ?? null), "", "autosubmit", // line 13 ($context["number_of_rows_placeholder"] ?? null)); // line 14 echo " "; } public function getTemplateName() { return "display/results/additional_fields.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 55 => 14, 53 => 13, 52 => 10, 51 => 9, 50 => 7, 48 => 6, 44 => 5, 39 => 4, 35 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/additional_fields.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/additional_fields.twig"); } } db/login/tmp/twig/10/10b5d9bca8402e35da6fcbedb4a0ba58f8b59ed4280ea704e4351abd18dfba51.php000064400000025712151502156020022316 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 4 if ($this->getAttribute(($context["showtable"] ?? null), "Row_format", [], "array", true, true)) { // line 5 echo " "; // line 7 if (($this->getAttribute(($context["showtable"] ?? null), "Row_format", [], "array") == "Fixed")) { // line 8 echo " "; } elseif (($this->getAttribute( // line 9 ($context["showtable"] ?? null), "Row_format", [], "array") == "Dynamic")) { // line 10 echo " "; } else { // line 12 echo " "; } // line 14 echo " "; } // line 16 echo " "; // line 17 if ( !twig_test_empty($this->getAttribute(($context["showtable"] ?? null), "Create_options", [], "array"))) { // line 18 echo " "; // line 20 if (($this->getAttribute(($context["showtable"] ?? null), "Create_options", [], "array") == "partitioned")) { // line 21 echo " "; } else { // line 23 echo " "; } // line 25 echo " "; } // line 27 echo " "; // line 28 if ( !twig_test_empty(($context["tbl_collation"] ?? null))) { // line 29 echo " "; } // line 38 echo " "; // line 39 if (( !($context["is_innodb"] ?? null) && $this->getAttribute(($context["showtable"] ?? null), "Rows", [], "array", true, true))) { // line 40 echo " "; } // line 45 echo " "; // line 46 if ((( !($context["is_innodb"] ?? null) && $this->getAttribute( // line 47 ($context["showtable"] ?? null), "Avg_row_length", [], "array", true, true)) && ($this->getAttribute( // line 48 ($context["showtable"] ?? null), "Avg_row_length", [], "array") > 0))) { // line 49 echo " "; // line 51 $context["avg_row_length"] = PhpMyAdmin\Util::formatByteDown($this->getAttribute(($context["showtable"] ?? null), "Avg_row_length", [], "array"), 6, 1); // line 52 echo " "; } // line 55 echo " "; // line 56 if ((((( !($context["is_innodb"] ?? null) && $this->getAttribute( // line 57 ($context["showtable"] ?? null), "Data_length", [], "array", true, true)) && $this->getAttribute( // line 58 ($context["showtable"] ?? null), "Rows", [], "array", true, true)) && ($this->getAttribute( // line 59 ($context["showtable"] ?? null), "Rows", [], "array") > 0)) && ( // line 60 ($context["mergetable"] ?? null) == false))) { // line 61 echo " "; } // line 66 echo " "; // line 67 if ($this->getAttribute(($context["showtable"] ?? null), "Auto_increment", [], "array", true, true)) { // line 68 echo " "; } // line 73 echo " "; // line 74 if ($this->getAttribute(($context["showtable"] ?? null), "Create_time", [], "array", true, true)) { // line 75 echo " "; } // line 80 echo " "; // line 81 if ($this->getAttribute(($context["showtable"] ?? null), "Update_time", [], "array", true, true)) { // line 82 echo " "; } // line 87 echo " "; // line 88 if ($this->getAttribute(($context["showtable"] ?? null), "Check_time", [], "array", true, true)) { // line 89 echo " "; } // line 94 echo "
        "; // line 2 echo _gettext("Row statistics"); echo "
        "; // line 6 echo _gettext("Format"); echo ""; echo _gettext("static"); echo ""; echo _gettext("dynamic"); echo ""; echo twig_escape_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Row_format", [], "array"), "html", null, true); echo "
        "; // line 19 echo _gettext("Options"); echo ""; echo _gettext("partitioned"); echo ""; echo twig_escape_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Create_options", [], "array"), "html", null, true); echo "
        "; // line 30 echo _gettext("Collation"); echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["tbl_collation"] ?? null)), "html", null, true); echo "\"> "; // line 33 echo twig_escape_filter($this->env, ($context["tbl_collation"] ?? null), "html", null, true); echo "
        "; // line 41 echo _gettext("Rows"); echo " "; // line 42 echo twig_escape_filter($this->env, PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["showtable"] ?? null), "Rows", [], "array"), 0), "html", null, true); echo "
        "; // line 50 echo _gettext("Row length"); echo ""; echo twig_escape_filter($this->env, $this->getAttribute(($context["avg_row_length"] ?? null), 0, [], "array"), "html", null, true); echo " "; echo twig_escape_filter($this->env, $this->getAttribute(($context["avg_row_length"] ?? null), 1, [], "array"), "html", null, true); echo "
        "; // line 62 echo _gettext("Row size"); echo " "; // line 63 echo twig_escape_filter($this->env, ($context["avg_size"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["avg_unit"] ?? null), "html", null, true); echo "
        "; // line 69 echo _gettext("Next autoindex"); echo " "; // line 70 echo twig_escape_filter($this->env, PhpMyAdmin\Util::formatNumber($this->getAttribute(($context["showtable"] ?? null), "Auto_increment", [], "array"), 0), "html", null, true); echo "
        "; // line 76 echo _gettext("Creation"); echo " "; // line 77 echo twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(twig_date_format_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Create_time", [], "array"), "U")), "html", null, true); echo "
        "; // line 83 echo _gettext("Last update"); echo " "; // line 84 echo twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(twig_date_format_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Update_time", [], "array"), "U")), "html", null, true); echo "
        "; // line 90 echo _gettext("Last check"); echo " "; // line 91 echo twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(twig_date_format_filter($this->env, $this->getAttribute(($context["showtable"] ?? null), "Check_time", [], "array"), "U")), "html", null, true); echo "
        "; } public function getTemplateName() { return "table/structure/row_stats_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 266 => 94, 260 => 91, 256 => 90, 253 => 89, 251 => 88, 248 => 87, 242 => 84, 238 => 83, 235 => 82, 233 => 81, 230 => 80, 224 => 77, 220 => 76, 217 => 75, 215 => 74, 212 => 73, 206 => 70, 202 => 69, 199 => 68, 197 => 67, 194 => 66, 186 => 63, 182 => 62, 179 => 61, 177 => 60, 176 => 59, 175 => 58, 174 => 57, 173 => 56, 170 => 55, 161 => 52, 159 => 51, 155 => 50, 152 => 49, 150 => 48, 149 => 47, 148 => 46, 145 => 45, 139 => 42, 135 => 41, 132 => 40, 130 => 39, 127 => 38, 119 => 33, 115 => 32, 110 => 30, 107 => 29, 105 => 28, 102 => 27, 98 => 25, 92 => 23, 86 => 21, 84 => 20, 80 => 19, 77 => 18, 75 => 17, 72 => 16, 68 => 14, 62 => 12, 56 => 10, 54 => 9, 49 => 8, 47 => 7, 43 => 6, 40 => 5, 38 => 4, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/structure/row_stats_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/structure/row_stats_table.twig"); } } db/login/tmp/twig/54/543123493df5a4c1d3f29c54ec3a6562715f119969d92e5080d31a13e801700d.php000064400000021515151502156020021106 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["search_type"] ?? null) == "zoom")) { // line 2 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 2)->display(twig_to_array(["script_name" => "tbl_zoom_select.php", "form_id" => "zoom_search_form", "db" => // line 5 ($context["db"] ?? null), "table" => // line 6 ($context["table"] ?? null), "goto" => // line 7 ($context["goto"] ?? null)])); // line 9 echo "
        "; // line 12 echo _gettext("Do a \"query by example\" (wildcard: \"%\") for two different columns"); // line 13 echo " "; // line 14 $this->loadTemplate("table/search/fields_table.twig", "table/search/selection_form.twig", 14)->display(twig_to_array(["self" => // line 15 ($context["self"] ?? null), "search_type" => // line 16 ($context["search_type"] ?? null), "geom_column_flag" => // line 17 ($context["geom_column_flag"] ?? null), "column_names" => // line 18 ($context["column_names"] ?? null), "column_types" => // line 19 ($context["column_types"] ?? null), "column_collations" => // line 20 ($context["column_collations"] ?? null), "criteria_column_names" => // line 21 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 22 ($context["criteria_column_types"] ?? null)])); // line 24 echo " "; $this->loadTemplate("table/search/options_zoom.twig", "table/search/selection_form.twig", 24)->display(twig_to_array(["data_label" => // line 25 ($context["data_label"] ?? null), "column_names" => // line 26 ($context["column_names"] ?? null), "max_plot_limit" => // line 27 ($context["max_plot_limit"] ?? null)])); // line 29 echo "
        "; } elseif (( // line 31 ($context["search_type"] ?? null) == "normal")) { // line 32 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 32)->display(twig_to_array(["script_name" => "tbl_select.php", "form_id" => "tbl_search_form", "db" => // line 35 ($context["db"] ?? null), "table" => // line 36 ($context["table"] ?? null), "goto" => // line 37 ($context["goto"] ?? null)])); // line 39 echo "
        "; // line 42 echo _gettext("Do a \"query by example\" (wildcard: \"%\")"); // line 43 echo "
        "; // line 45 $this->loadTemplate("table/search/fields_table.twig", "table/search/selection_form.twig", 45)->display(twig_to_array(["self" => // line 46 ($context["self"] ?? null), "search_type" => // line 47 ($context["search_type"] ?? null), "geom_column_flag" => // line 48 ($context["geom_column_flag"] ?? null), "column_names" => // line 49 ($context["column_names"] ?? null), "column_types" => // line 50 ($context["column_types"] ?? null), "column_collations" => // line 51 ($context["column_collations"] ?? null), "criteria_column_names" => // line 52 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 53 ($context["criteria_column_types"] ?? null)])); // line 55 echo "
        "; // line 59 $this->loadTemplate("table/search/options.twig", "table/search/selection_form.twig", 59)->display(twig_to_array(["column_names" => // line 60 ($context["column_names"] ?? null), "max_rows" => // line 61 ($context["max_rows"] ?? null)])); // line 63 echo "
        "; } elseif (( // line 64 ($context["search_type"] ?? null) == "replace")) { // line 65 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 65)->display(twig_to_array(["script_name" => "tbl_find_replace.php", "form_id" => "find_replace_form", "db" => // line 68 ($context["db"] ?? null), "table" => // line 69 ($context["table"] ?? null), "goto" => // line 70 ($context["goto"] ?? null)])); // line 72 echo "
        "; // line 75 echo _gettext("Find and replace"); // line 76 echo " "; // line 77 $this->loadTemplate("table/search/search_and_replace.twig", "table/search/selection_form.twig", 77)->display(twig_to_array(["column_names" => // line 78 ($context["column_names"] ?? null), "column_types" => // line 79 ($context["column_types"] ?? null), "sql_types" => // line 80 ($context["sql_types"] ?? null)])); // line 82 echo "
        "; } else { // line 85 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 85)->display(twig_to_array(["script_name" => "", "form_id" => "", "db" => // line 88 ($context["db"] ?? null), "table" => // line 89 ($context["table"] ?? null), "goto" => // line 90 ($context["goto"] ?? null)])); } // line 93 echo " "; // line 95 echo "
        "; } public function getTemplateName() { return "table/search/selection_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 160 => 99, 156 => 98, 152 => 97, 148 => 95, 145 => 93, 142 => 90, 141 => 89, 140 => 88, 138 => 85, 133 => 82, 131 => 80, 130 => 79, 129 => 78, 128 => 77, 125 => 76, 123 => 75, 118 => 72, 116 => 70, 115 => 69, 114 => 68, 112 => 65, 110 => 64, 107 => 63, 105 => 61, 104 => 60, 103 => 59, 97 => 55, 95 => 53, 94 => 52, 93 => 51, 92 => 50, 91 => 49, 90 => 48, 89 => 47, 88 => 46, 87 => 45, 83 => 43, 81 => 42, 76 => 39, 74 => 37, 73 => 36, 72 => 35, 70 => 32, 68 => 31, 64 => 29, 62 => 27, 61 => 26, 60 => 25, 58 => 24, 56 => 22, 55 => 21, 54 => 20, 53 => 19, 52 => 18, 51 => 17, 50 => 16, 49 => 15, 48 => 14, 45 => 13, 43 => 12, 38 => 9, 36 => 7, 35 => 6, 34 => 5, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/selection_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/selection_form.twig"); } } db/login/tmp/twig/bf/bfb101ebc0ae3bd60ebed29d03f3c5b834fc6b1abed381e6394c2e9c383520f6.php000064400000005104151502156020022402 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["table_name_hash"] ?? null), "html", null, true); echo "_favorite_anchor\" class=\"ajax favorite_table_anchor\" href=\"db_structure.php"; // line 3 echo PhpMyAdmin\Url::getCommon(($context["fav_params"] ?? null)); echo "\" title=\""; // line 4 echo twig_escape_filter($this->env, ((($context["already_favorite"] ?? null)) ? (_gettext("Remove from Favorites")) : (_gettext("Add to Favorites"))), "html", null, true); echo "\" data-favtargets=\""; // line 5 echo twig_escape_filter($this->env, ($context["db_table_name_hash"] ?? null), "html", null, true); echo "\" > "; // line 6 echo ((($context["already_favorite"] ?? null)) ? ($this->getAttribute(($context["titles"] ?? null), "Favorite", [], "array")) : ($this->getAttribute(($context["titles"] ?? null), "NoFavorite", [], "array"))); echo " "; } public function getTemplateName() { return "database/structure/favorite_anchor.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 48 => 6, 44 => 5, 40 => 4, 36 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/favorite_anchor.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/favorite_anchor.twig"); } } db/login/tmp/twig/cc/ccb726244b12924b146fd2ecb99d5c0d41d0dce15d84681f00c0aab5af9d43a6.php000064400000026514151502156020022165 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 5 ob_start(function () { return ''; }); // line 6 echo _ngettext("%s table", "%s tables", abs(($context["num_tables"] ?? null))); $context["num_tables_trans"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 8 echo " "; echo twig_escape_filter($this->env, sprintf(($context["num_tables_trans"] ?? null), PhpMyAdmin\Util::formatNumber(($context["num_tables"] ?? null), 0)), "html", null, true); echo " "; // line 10 if (($context["server_slave_status"] ?? null)) { // line 11 echo " "; echo _gettext("Replication"); echo " "; } // line 13 echo " "; $context["sum_colspan"] = ((($context["db_is_system_schema"] ?? null)) ? (4) : (7)); // line 14 echo " "; if ((($context["num_favorite_tables"] ?? null) == 0)) { // line 15 echo " "; $context["sum_colspan"] = (($context["sum_colspan"] ?? null) - 1); // line 16 echo " "; } // line 17 echo " env, ($context["sum_colspan"] ?? null), "html", null, true); echo "\" class=\"print_ignore\">"; echo _gettext("Sum"); echo " "; // line 18 $context["row_count_sum"] = PhpMyAdmin\Util::formatNumber(($context["sum_entries"] ?? null), 0); // line 19 echo " "; // line 20 echo " "; $context["row_sum_url"] = []; // line 21 echo " "; if ((isset($context["approx_rows"]) || array_key_exists("approx_rows", $context))) { // line 22 echo " "; $context["row_sum_url"] = ["ajax_request" => true, "db" => // line 24 ($context["db"] ?? null), "real_row_count" => "true", "real_row_count_all" => "true"]; // line 28 echo " "; } // line 29 echo " "; if (($context["approx_rows"] ?? null)) { // line 30 echo " "; ob_start(function () { return ''; }); // line 31 echo "~"; // line 33 echo twig_escape_filter($this->env, ($context["row_count_sum"] ?? null), "html", null, true); // line 34 echo ""; $context["cell_text"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 36 echo " "; } else { // line 37 echo " "; $context["cell_text"] = ($context["row_count_sum"] ?? null); // line 38 echo " "; } // line 39 echo " "; echo twig_escape_filter($this->env, ($context["cell_text"] ?? null), "html", null, true); echo " "; // line 40 if ( !(($context["properties_num_columns"] ?? null) > 1)) { // line 41 echo " "; // line 42 echo " "; $context["default_engine"] = $this->getAttribute(($context["dbi"] ?? null), "fetchValue", [0 => "SELECT @@storage_engine;"], "method"); // line 43 echo " "; if (twig_test_empty(($context["default_engine"] ?? null))) { // line 44 echo " "; // line 45 echo " "; $context["default_engine"] = $this->getAttribute(($context["dbi"] ?? null), "fetchValue", [0 => "SELECT @@default_storage_engine;"], "method"); // line 46 echo " "; } // line 47 echo " env, sprintf(_gettext("%s is the default storage engine on this MySQL server."), ($context["default_engine"] ?? null)), "html", null, true); echo "\"> "; // line 49 echo twig_escape_filter($this->env, ($context["default_engine"] ?? null), "html", null, true); echo " "; // line 53 if ( !twig_test_empty(($context["db_collation"] ?? null))) { // line 54 echo " env, PhpMyAdmin\Charsets::getCollationDescr(($context["db_collation"] ?? null)), "html", null, true); echo " ("; echo _gettext("Default"); echo ")\"> "; // line 55 echo twig_escape_filter($this->env, ($context["db_collation"] ?? null), "html", null, true); echo " "; } // line 58 echo " "; } // line 60 echo " "; // line 61 if (($context["is_show_stats"] ?? null)) { // line 62 echo " "; $context["sum"] = PhpMyAdmin\Util::formatByteDown(($context["sum_size"] ?? null), 3, 1); // line 63 echo " "; $context["sum_formatted"] = $this->getAttribute(($context["sum"] ?? null), 0, [], "array"); // line 64 echo " "; $context["sum_unit"] = $this->getAttribute(($context["sum"] ?? null), 1, [], "array"); // line 65 echo " "; echo twig_escape_filter($this->env, ($context["sum_formatted"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["sum_unit"] ?? null), "html", null, true); echo " "; // line 67 $context["overhead"] = PhpMyAdmin\Util::formatByteDown(($context["overhead_size"] ?? null), 3, 1); // line 68 echo " "; $context["overhead_formatted"] = $this->getAttribute(($context["overhead"] ?? null), 0, [], "array"); // line 69 echo " "; $context["overhead_unit"] = $this->getAttribute(($context["overhead"] ?? null), 1, [], "array"); // line 70 echo " "; echo twig_escape_filter($this->env, ($context["overhead_formatted"] ?? null), "html", null, true); echo " "; echo twig_escape_filter($this->env, ($context["overhead_unit"] ?? null), "html", null, true); echo " "; } // line 72 echo " "; // line 73 if (($context["show_charset"] ?? null)) { // line 74 echo " "; echo twig_escape_filter($this->env, ($context["db_charset"] ?? null), "html", null, true); echo " "; } // line 76 echo " "; if (($context["show_comment"] ?? null)) { // line 77 echo " "; } // line 79 echo " "; if (($context["show_creation"] ?? null)) { // line 80 echo " "; // line 81 ((($context["create_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["create_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 84 echo " "; if (($context["show_last_update"] ?? null)) { // line 85 echo " "; // line 86 ((($context["update_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["update_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 89 echo " "; if (($context["show_last_check"] ?? null)) { // line 90 echo " "; // line 91 ((($context["check_time_all"] ?? null)) ? (print (twig_escape_filter($this->env, PhpMyAdmin\Util::localisedDate(strtotime(($context["check_time_all"] ?? null))), "html", null, true))) : (print ("-"))); echo " "; } // line 94 echo " "; } public function getTemplateName() { return "database/structure/body_for_table_summary.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 264 => 94, 258 => 91, 255 => 90, 252 => 89, 246 => 86, 243 => 85, 240 => 84, 234 => 81, 231 => 80, 228 => 79, 224 => 77, 221 => 76, 215 => 74, 213 => 73, 210 => 72, 202 => 70, 199 => 69, 196 => 68, 194 => 67, 186 => 65, 183 => 64, 180 => 63, 177 => 62, 175 => 61, 172 => 60, 168 => 58, 162 => 55, 155 => 54, 153 => 53, 146 => 49, 142 => 48, 139 => 47, 136 => 46, 133 => 45, 131 => 44, 128 => 43, 125 => 42, 123 => 41, 121 => 40, 116 => 39, 113 => 38, 110 => 37, 107 => 36, 104 => 34, 102 => 33, 99 => 32, 97 => 31, 94 => 30, 91 => 29, 88 => 28, 86 => 24, 84 => 22, 81 => 21, 78 => 20, 76 => 19, 74 => 18, 67 => 17, 64 => 16, 61 => 15, 58 => 14, 55 => 13, 49 => 11, 47 => 10, 41 => 8, 38 => 6, 36 => 5, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/body_for_table_summary.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/body_for_table_summary.twig"); } } db/login/tmp/twig/c6/c6e41d077beefd841b650ffbbe5829457ef9d0cabcc84cec87795d4942badf8d.php000064400000004110151502156020022465 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; // line 3 echo ($context["title"] ?? null); echo " "; } public function getTemplateName() { return "database/structure/empty_table.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 40 => 3, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/structure/empty_table.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/structure/empty_table.twig"); } } db/login/tmp/twig/0c/0ceb1d0d1aefee640e6a176898d6ec6f028ef9f947596f32f54461ebacc89443.php000064400000013645151502156020022113 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
        "; // line 5 echo _gettext("Search in database"); echo "

        env, ($context["criteria_search_string"] ?? null), "html", null, true); echo "\">

        "; // line 15 echo _gettext("Find:"); echo " "; // line 17 echo " "; // line 19 echo " "; echo PhpMyAdmin\Util::getRadioFields("criteriaSearchType", // line 21 ($context["choices"] ?? null), // line 22 ($context["criteria_search_type"] ?? null), true, false); // line 25 echo "
        "; // line 29 echo _gettext("Inside tables:"); echo "

        "; // line 32 echo _gettext("Select all"); // line 33 echo " / "; // line 35 echo _gettext("Unselect all"); // line 36 echo "

        "; // line 50 echo " env, ($context["criteria_column_name"] ?? null), "html", null, true))) : (print (""))); echo "\">

        "; } public function getTemplateName() { return "database/search/selection_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 135 => 58, 128 => 54, 125 => 52, 123 => 51, 120 => 50, 114 => 45, 105 => 42, 101 => 41, 97 => 40, 93 => 39, 88 => 36, 86 => 35, 82 => 33, 80 => 32, 74 => 29, 68 => 25, 66 => 22, 65 => 21, 63 => 19, 61 => 17, 57 => 15, 50 => 11, 47 => 9, 45 => 8, 39 => 5, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/search/selection_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/search/selection_form.twig"); } } db/login/tmp/twig/cd/cda6759ce0d8ead5439144642a12cd88b1c83cbd1238cd25d3e74faa51c720b8.php000064400000007406151502156020022124 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if (($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array", true, true) && $this->getAttribute($this->getAttribute( // line 2 ($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array", false, true), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array", true, true))) { // line 3 echo " env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), "html", null, true); echo "\"> "; // line 4 if ((twig_length_filter($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array")) > ($context["limit_chars"] ?? null))) { // line 5 echo " "; echo twig_escape_filter($this->env, twig_slice($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), 0, ($context["limit_chars"] ?? null)), "html", null, true); echo "… "; } else { // line 7 echo " "; echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["comments_map"] ?? null), $this->getAttribute(($context["fields_meta"] ?? null), "table", []), [], "array"), $this->getAttribute(($context["fields_meta"] ?? null), "name", []), [], "array"), "html", null, true); echo " "; } // line 9 echo " "; } } public function getTemplateName() { return "display/results/comment_for_row.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 52 => 9, 46 => 7, 40 => 5, 38 => 4, 33 => 3, 31 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/results/comment_for_row.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/results/comment_for_row.twig"); } } db/login/tmp/twig/5c/5cf13d5a4ba7434d92bc44defee51a93cfbafa0d7984fcb8cbea606d97fe3e1a.php000064400000043153151502156020022660 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" class=\"hide\" />
        env, ($context["id_key"] ?? null), "html", null, true); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["upload_id"] ?? null), "html", null, true); echo "\" /> "; // line 27 if ((($context["import_type"] ?? null) == "server")) { // line 28 echo " "; echo PhpMyAdmin\Url::getHiddenInputs("", "", 1); echo " "; } elseif (( // line 29 ($context["import_type"] ?? null) == "database")) { // line 30 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), "", 1); echo " "; } else { // line 32 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 34 echo " env, ($context["import_type"] ?? null), "html", null, true); echo "\" />

        "; // line 38 echo PhpMyAdmin\Util::getImage("b_import", _gettext("Import")); echo " "; // line 39 if ((($context["import_type"] ?? null) == "server")) { // line 40 echo " "; echo _gettext("Importing into the current server"); // line 41 echo " "; } elseif ((($context["import_type"] ?? null) == "database")) { // line 42 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Importing into the database \"%s\""), ($context["db"] ?? null)), "html", null, true); echo " "; } else { // line 44 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Importing into the table \"%s\""), ($context["table"] ?? null)), "html", null, true); echo " "; } // line 46 echo "

        "; // line 50 echo _gettext("File to import:"); echo "

        "; // line 53 echo " "; if ( !twig_test_empty(($context["compressions"] ?? null))) { // line 54 echo "

        "; // line 56 echo twig_escape_filter($this->env, sprintf(_gettext("File may be compressed (%s) or uncompressed."), twig_join_filter(($context["compressions"] ?? null), ", ")), "html", null, true); echo "
        "; // line 58 echo _gettext("A compressed file's name must end in .[format].[compression]. Example: .sql.zip"); // line 59 echo "

        "; } // line 62 echo "
        "; // line 64 if ((($context["is_upload"] ?? null) && !twig_test_empty(($context["upload_dir"] ?? null)))) { // line 65 echo "
        • "; // line 68 echo PhpMyAdmin\Util::getBrowseUploadFileBlock(($context["max_upload_size"] ?? null)); echo " "; // line 69 echo _gettext("You may also drag and drop a file on any page."); // line 70 echo "
        • "; // line 76 echo PhpMyAdmin\Util::getSelectUploadFileBlock( // line 77 ($context["import_list"] ?? null), // line 78 ($context["upload_dir"] ?? null)); // line 79 echo "
        "; } elseif ( // line 82 ($context["is_upload"] ?? null)) { // line 83 echo " "; echo PhpMyAdmin\Util::getBrowseUploadFileBlock(($context["max_upload_size"] ?? null)); echo "

        "; // line 84 echo _gettext("You may also drag and drop a file on any page."); echo "

        "; } elseif ( ! // line 85 ($context["is_upload"] ?? null)) { // line 86 echo " "; echo call_user_func_array($this->env->getFunction('Message_notice')->getCallable(), [_gettext("File uploads are not allowed on this server.")]); echo " "; } elseif ( !twig_test_empty( // line 87 ($context["upload_dir"] ?? null))) { // line 88 echo " "; echo PhpMyAdmin\Util::getSelectUploadFileBlock( // line 89 ($context["import_list"] ?? null), // line 90 ($context["upload_dir"] ?? null)); // line 91 echo " "; } // line 93 echo "
        "; // line 97 echo " "; // line 98 if (($context["is_encoding_supported"] ?? null)) { // line 99 echo " "; } else { // line 111 echo " "; echo PhpMyAdmin\Charsets::getCharsetDropdownBox( // line 112 ($context["dbi"] ?? null), // line 113 ($context["disable_is"] ?? null), "charset_of_file", "charset_of_file", "utf8", false); // line 118 echo " "; } // line 120 echo "

        "; // line 124 echo _gettext("Partial import:"); echo "

        "; // line 126 if (((isset($context["timeout_passed"]) || array_key_exists("timeout_passed", $context)) && ($context["timeout_passed"] ?? null))) { // line 127 echo "
        env, ($context["offset"] ?? null), "html", null, true); echo "\" /> "; // line 129 echo twig_escape_filter($this->env, sprintf(_gettext("Previous import timed out, after resubmitting will continue from position %d."), ($context["offset"] ?? null)), "html", null, true); echo "
        "; } // line 132 echo "
        "; // line 141 if ( !((isset($context["timeout_passed"]) || array_key_exists("timeout_passed", $context)) && ($context["timeout_passed"] ?? null))) { // line 142 echo "
        "; } else { // line 151 echo " "; // line 154 echo " "; } // line 158 echo "

        "; // line 161 echo _gettext("Other options:"); echo "

        "; // line 163 echo PhpMyAdmin\Util::getFKCheckbox(); echo "

        "; // line 168 echo _gettext("Format:"); echo "

        "; // line 169 echo PhpMyAdmin\Plugins::getChoice("Import", "format", ($context["import_list"] ?? null)); echo "

        "; // line 174 echo _gettext("Format-specific options:"); echo "

        "; // line 176 echo _gettext("Scroll down to fill in the options for the selected format and ignore the options for other formats."); // line 177 echo "

        "; // line 178 echo PhpMyAdmin\Plugins::getOptions("Import", ($context["import_list"] ?? null)); echo "
        "; // line 183 echo " "; if (($context["can_convert_kanji"] ?? null)) { // line 184 echo "

        "; // line 185 echo _gettext("Encoding Conversion:"); echo "

        "; // line 186 $this->loadTemplate("encoding/kanji_encoding_form.twig", "display/import/import.twig", 186)->display($context); // line 187 echo "
        "; } // line 189 echo "
        "; } public function getTemplateName() { return "display/import/import.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 416 => 191, 412 => 189, 408 => 187, 406 => 186, 402 => 185, 399 => 184, 396 => 183, 389 => 178, 386 => 177, 384 => 176, 379 => 174, 371 => 169, 367 => 168, 359 => 163, 354 => 161, 349 => 158, 345 => 156, 343 => 155, 341 => 154, 339 => 151, 334 => 148, 332 => 147, 329 => 145, 327 => 144, 323 => 142, 321 => 141, 316 => 138, 314 => 137, 309 => 135, 304 => 132, 298 => 129, 294 => 128, 291 => 127, 289 => 126, 284 => 124, 278 => 120, 274 => 118, 272 => 113, 271 => 112, 269 => 111, 265 => 109, 256 => 106, 253 => 105, 249 => 104, 247 => 103, 246 => 102, 241 => 101, 237 => 100, 234 => 99, 232 => 98, 227 => 97, 222 => 93, 218 => 91, 216 => 90, 215 => 89, 213 => 88, 211 => 87, 206 => 86, 204 => 85, 200 => 84, 195 => 83, 193 => 82, 188 => 79, 186 => 78, 185 => 77, 184 => 76, 181 => 75, 178 => 74, 176 => 73, 172 => 70, 170 => 69, 166 => 68, 161 => 65, 159 => 64, 155 => 62, 150 => 59, 148 => 58, 143 => 56, 139 => 54, 136 => 53, 131 => 50, 125 => 46, 119 => 44, 113 => 42, 110 => 41, 107 => 40, 105 => 39, 101 => 38, 93 => 34, 87 => 32, 81 => 30, 79 => 29, 74 => 28, 72 => 27, 66 => 26, 62 => 24, 59 => 23, 57 => 22, 47 => 13, 45 => 11, 44 => 10, 43 => 9, 42 => 8, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/import/import.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/import/import.twig"); } } db/login/tmp/twig/60/600452636002dad55c7d7f477ade6f809764dad8e8247b3fd73b565bae8dbecf.php000064400000013473151502156020022021 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo PhpMyAdmin\Util::getDivForSliderEffect("searchoptions", _gettext("Options")); echo " "; // line 4 echo "
        "; // line 6 echo _gettext("Select columns (at least one):"); // line 7 echo "
        "; // line 23 echo "
        "; // line 25 echo _gettext("Or"); echo " "; // line 26 echo _gettext("Add search conditions (body of the \"where\" clause):"); // line 27 echo " "; // line 28 echo PhpMyAdmin\Util::showMySQLDocu("Functions"); echo "
        "; // line 33 echo "
        "; // line 34 echo _gettext("Number of rows per page"); echo " env, ($context["max_rows"] ?? null), "html", null, true); echo "\" class=\"textfield\" />
        "; // line 44 echo "
        "; // line 45 echo _gettext("Display order:"); echo " "; // line 54 echo PhpMyAdmin\Util::getRadioFields("order", ["ASC" => _gettext("Ascending"), "DESC" => _gettext("Descending")], "ASC", false, true, "formelement"); // line 64 echo "
        "; } public function getTemplateName() { return "table/search/options.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 146 => 64, 144 => 54, 140 => 52, 131 => 49, 126 => 48, 122 => 47, 117 => 45, 114 => 44, 107 => 39, 99 => 34, 96 => 33, 89 => 28, 86 => 27, 84 => 26, 80 => 25, 76 => 23, 69 => 17, 60 => 14, 54 => 12, 50 => 11, 45 => 9, 41 => 7, 39 => 6, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/options.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/options.twig"); } } db/login/tmp/twig/3c/3c1ce12790d85be1843a8b9bf6dd915d26d6aff8907d396a03e0249b21080b80.php000064400000005147151502156020021557 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "columns_definitions/column_type.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 50 => 7, 47 => 6, 44 => 5, 42 => 4, 37 => 3, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_type.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_type.twig"); } } db/login/tmp/twig/3c/3cec2af879cf172e04adaf23ba657c564aedaa458c8106d1fd639e74fd54831e.php000064400000011613151502156020022216 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "

        "; // line 2 echo _gettext("Rows:"); echo "

          • env, ($context["limit_to"] ?? null), "html", null, true); echo " "; } elseif (( !twig_test_empty( // line 15 ($context["unlim_num_rows"] ?? null)) && (($context["unlim_num_rows"] ?? null) != 0))) { // line 16 echo " "; echo twig_escape_filter($this->env, ($context["unlim_num_rows"] ?? null), "html", null, true); echo " "; } else { // line 18 echo " "; echo twig_escape_filter($this->env, ($context["number_of_rows"] ?? null), "html", null, true); echo " "; } // line 20 echo " "; $___internal_141ad1a69e8c2b55d7c930a93cdd34a27ce71e28f9589266ce0f78a7c9aad9c9_ = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 12 echo twig_spaceless($___internal_141ad1a69e8c2b55d7c930a93cdd34a27ce71e28f9589266ce0f78a7c9aad9c9_); // line 20 echo "\" onfocus=\"this.select()\">
          • env, ($context["limit_from"] ?? null), "html", null, true))) : (print (0))); echo "\" onfocus=\"this.select()\">
        "; } public function getTemplateName() { return "display/export/options_rows.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 103 => 32, 99 => 31, 91 => 25, 87 => 23, 82 => 20, 80 => 12, 77 => 20, 71 => 18, 65 => 16, 63 => 15, 58 => 14, 55 => 13, 53 => 12, 49 => 10, 43 => 7, 39 => 6, 33 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/export/options_rows.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/export/options_rows.twig"); } } db/login/tmp/twig/39/391c1d26d4f9cdc04f008344dfe5c258dc2750796471f31b9bdf8d30083aa219.php000064400000011775151502156020021507 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        • "; // line 3 if (($context["is_create_db_priv"] ?? null)) { // line 4 echo "

          "; // line 10 echo PhpMyAdmin\Util::showMySQLDocu("CREATE_DATABASE"); echo "

          "; // line 13 echo PhpMyAdmin\Url::getHiddenInputs("", "", 5); echo " "; // line 15 if ( !twig_test_empty(($context["dbstats"] ?? null))) { // line 16 echo " "; } // line 18 echo " env, ($context["db_to_create"] ?? null), "html", null, true); echo "\" maxlength=\"64\" class=\"textfield\" id=\"text_create_db\" required placeholder=\""; // line 21 echo _gettext("Database name"); echo "\" /> "; // line 22 echo PhpMyAdmin\Charsets::getCollationDropdownBox( // line 23 ($context["dbi"] ?? null), // line 24 ($context["disable_is"] ?? null), "db_collation", null, // line 27 ($context["server_collation"] ?? null), true); // line 29 echo "
          "; } else { // line 33 echo " "; // line 34 echo "

          "; // line 35 echo PhpMyAdmin\Util::getImage("b_newdb"); echo " "; // line 36 echo _gettext("Create database"); // line 37 echo " "; echo PhpMyAdmin\Util::showMySQLDocu("CREATE_DATABASE"); echo "

          "; // line 41 echo PhpMyAdmin\Util::getImage("s_error", "", ["hspace" => 2, "border" => 0, "align" => "middle"]); // line 45 echo " "; // line 46 echo _gettext("No Privileges"); // line 47 echo " "; } // line 49 echo "
        "; } public function getTemplateName() { return "server/databases/create.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 123 => 49, 119 => 47, 117 => 46, 114 => 45, 112 => 41, 104 => 37, 102 => 36, 98 => 35, 95 => 34, 93 => 33, 87 => 30, 84 => 29, 82 => 27, 81 => 24, 80 => 23, 79 => 22, 75 => 21, 70 => 19, 67 => 18, 63 => 16, 61 => 15, 56 => 13, 50 => 10, 47 => 9, 45 => 8, 41 => 7, 36 => 4, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "server/databases/create.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/server/databases/create.twig"); } } db/login/tmp/twig/55/557650a157224143a5825b9dcd146d4a840c27b83635f5214fb330b3da56f06c.php000064400000003623151502156020021155 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "javascript/display.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "javascript/display.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/javascript/display.twig"); } } db/login/tmp/twig/55/555f71d48ba2bc7613850ef91714a96f5e54a6af584a80b67aa183f55a28d4fd.php000064400000013645151502156020021603 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        "; // line 3 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null)); echo "
        "; // line 5 echo _gettext("Search in database"); echo "

        env, ($context["criteria_search_string"] ?? null), "html", null, true); echo "\">

        "; // line 15 echo _gettext("Find:"); echo " "; // line 17 echo " "; // line 19 echo " "; echo PhpMyAdmin\Util::getRadioFields("criteriaSearchType", // line 21 ($context["choices"] ?? null), // line 22 ($context["criteria_search_type"] ?? null), true, false); // line 25 echo "
        "; // line 29 echo _gettext("Inside tables:"); echo "

        "; // line 32 echo _gettext("Select all"); // line 33 echo " / "; // line 35 echo _gettext("Unselect all"); // line 36 echo "

        "; // line 50 echo " env, ($context["criteria_column_name"] ?? null), "html", null, true))) : (print (""))); echo "\">

        "; } public function getTemplateName() { return "database/search/selection_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 135 => 58, 128 => 54, 125 => 52, 123 => 51, 120 => 50, 114 => 45, 105 => 42, 101 => 41, 97 => 40, 93 => 39, 88 => 36, 86 => 35, 82 => 33, 80 => 32, 74 => 29, 68 => 25, 66 => 22, 65 => 21, 63 => 19, 61 => 17, 57 => 15, 50 => 11, 47 => 9, 45 => 8, 39 => 5, 34 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "database/search/selection_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/database/search/selection_form.twig"); } } db/login/tmp/twig/55/55e9bd1b34717b755da8f2c9cf4d2661c8a157e1638b85efd89ca7bdd78cd697.php000064400000007532151502156020022053 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "columns_definitions/move_column.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 74 => 15, 65 => 12, 61 => 11, 57 => 10, 53 => 9, 50 => 8, 48 => 7, 44 => 6, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/move_column.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/move_column.twig"); } } db/login/tmp/twig/1e/1e0626e14ab43afa5aee9c3e4fb6d8167462e6cc28e117ca41a7fa0c76809fc0.php000064400000043153151502156020022122 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "
        env, ($context["pma_theme_image"] ?? null), "html", null, true); echo "ajax_clock_small.gif\" width=\"16\" height=\"16\" alt=\"ajax clock\" class=\"hide\" />
        env, ($context["id_key"] ?? null), "html", null, true); echo "\" value=\""; echo twig_escape_filter($this->env, ($context["upload_id"] ?? null), "html", null, true); echo "\" /> "; // line 27 if ((($context["import_type"] ?? null) == "server")) { // line 28 echo " "; echo PhpMyAdmin\Url::getHiddenInputs("", "", 1); echo " "; } elseif (( // line 29 ($context["import_type"] ?? null) == "database")) { // line 30 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), "", 1); echo " "; } else { // line 32 echo " "; echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null), 1); echo " "; } // line 34 echo " env, ($context["import_type"] ?? null), "html", null, true); echo "\" />

        "; // line 38 echo PhpMyAdmin\Util::getImage("b_import", _gettext("Import")); echo " "; // line 39 if ((($context["import_type"] ?? null) == "server")) { // line 40 echo " "; echo _gettext("Importing into the current server"); // line 41 echo " "; } elseif ((($context["import_type"] ?? null) == "database")) { // line 42 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Importing into the database \"%s\""), ($context["db"] ?? null)), "html", null, true); echo " "; } else { // line 44 echo " "; echo twig_escape_filter($this->env, sprintf(_gettext("Importing into the table \"%s\""), ($context["table"] ?? null)), "html", null, true); echo " "; } // line 46 echo "

        "; // line 50 echo _gettext("File to import:"); echo "

        "; // line 53 echo " "; if ( !twig_test_empty(($context["compressions"] ?? null))) { // line 54 echo "

        "; // line 56 echo twig_escape_filter($this->env, sprintf(_gettext("File may be compressed (%s) or uncompressed."), twig_join_filter(($context["compressions"] ?? null), ", ")), "html", null, true); echo "
        "; // line 58 echo _gettext("A compressed file's name must end in .[format].[compression]. Example: .sql.zip"); // line 59 echo "

        "; } // line 62 echo "
        "; // line 64 if ((($context["is_upload"] ?? null) && !twig_test_empty(($context["upload_dir"] ?? null)))) { // line 65 echo "
        • "; // line 68 echo PhpMyAdmin\Util::getBrowseUploadFileBlock(($context["max_upload_size"] ?? null)); echo " "; // line 69 echo _gettext("You may also drag and drop a file on any page."); // line 70 echo "
        • "; // line 76 echo PhpMyAdmin\Util::getSelectUploadFileBlock( // line 77 ($context["import_list"] ?? null), // line 78 ($context["upload_dir"] ?? null)); // line 79 echo "
        "; } elseif ( // line 82 ($context["is_upload"] ?? null)) { // line 83 echo " "; echo PhpMyAdmin\Util::getBrowseUploadFileBlock(($context["max_upload_size"] ?? null)); echo "

        "; // line 84 echo _gettext("You may also drag and drop a file on any page."); echo "

        "; } elseif ( ! // line 85 ($context["is_upload"] ?? null)) { // line 86 echo " "; echo call_user_func_array($this->env->getFunction('Message_notice')->getCallable(), [_gettext("File uploads are not allowed on this server.")]); echo " "; } elseif ( !twig_test_empty( // line 87 ($context["upload_dir"] ?? null))) { // line 88 echo " "; echo PhpMyAdmin\Util::getSelectUploadFileBlock( // line 89 ($context["import_list"] ?? null), // line 90 ($context["upload_dir"] ?? null)); // line 91 echo " "; } // line 93 echo "
        "; // line 97 echo " "; // line 98 if (($context["is_encoding_supported"] ?? null)) { // line 99 echo " "; } else { // line 111 echo " "; echo PhpMyAdmin\Charsets::getCharsetDropdownBox( // line 112 ($context["dbi"] ?? null), // line 113 ($context["disable_is"] ?? null), "charset_of_file", "charset_of_file", "utf8", false); // line 118 echo " "; } // line 120 echo "

        "; // line 124 echo _gettext("Partial import:"); echo "

        "; // line 126 if (((isset($context["timeout_passed"]) || array_key_exists("timeout_passed", $context)) && ($context["timeout_passed"] ?? null))) { // line 127 echo "
        env, ($context["offset"] ?? null), "html", null, true); echo "\" /> "; // line 129 echo twig_escape_filter($this->env, sprintf(_gettext("Previous import timed out, after resubmitting will continue from position %d."), ($context["offset"] ?? null)), "html", null, true); echo "
        "; } // line 132 echo "
        "; // line 141 if ( !((isset($context["timeout_passed"]) || array_key_exists("timeout_passed", $context)) && ($context["timeout_passed"] ?? null))) { // line 142 echo "
        "; } else { // line 151 echo " "; // line 154 echo " "; } // line 158 echo "

        "; // line 161 echo _gettext("Other options:"); echo "

        "; // line 163 echo PhpMyAdmin\Util::getFKCheckbox(); echo "

        "; // line 168 echo _gettext("Format:"); echo "

        "; // line 169 echo PhpMyAdmin\Plugins::getChoice("Import", "format", ($context["import_list"] ?? null)); echo "

        "; // line 174 echo _gettext("Format-specific options:"); echo "

        "; // line 176 echo _gettext("Scroll down to fill in the options for the selected format and ignore the options for other formats."); // line 177 echo "

        "; // line 178 echo PhpMyAdmin\Plugins::getOptions("Import", ($context["import_list"] ?? null)); echo "
        "; // line 183 echo " "; if (($context["can_convert_kanji"] ?? null)) { // line 184 echo "

        "; // line 185 echo _gettext("Encoding Conversion:"); echo "

        "; // line 186 $this->loadTemplate("encoding/kanji_encoding_form.twig", "display/import/import.twig", 186)->display($context); // line 187 echo "
        "; } // line 189 echo "
        "; } public function getTemplateName() { return "display/import/import.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 416 => 191, 412 => 189, 408 => 187, 406 => 186, 402 => 185, 399 => 184, 396 => 183, 389 => 178, 386 => 177, 384 => 176, 379 => 174, 371 => 169, 367 => 168, 359 => 163, 354 => 161, 349 => 158, 345 => 156, 343 => 155, 341 => 154, 339 => 151, 334 => 148, 332 => 147, 329 => 145, 327 => 144, 323 => 142, 321 => 141, 316 => 138, 314 => 137, 309 => 135, 304 => 132, 298 => 129, 294 => 128, 291 => 127, 289 => 126, 284 => 124, 278 => 120, 274 => 118, 272 => 113, 271 => 112, 269 => 111, 265 => 109, 256 => 106, 253 => 105, 249 => 104, 247 => 103, 246 => 102, 241 => 101, 237 => 100, 234 => 99, 232 => 98, 227 => 97, 222 => 93, 218 => 91, 216 => 90, 215 => 89, 213 => 88, 211 => 87, 206 => 86, 204 => 85, 200 => 84, 195 => 83, 193 => 82, 188 => 79, 186 => 78, 185 => 77, 184 => 76, 181 => 75, 178 => 74, 176 => 73, 172 => 70, 170 => 69, 166 => 68, 161 => 65, 159 => 64, 155 => 62, 150 => 59, 148 => 58, 143 => 56, 139 => 54, 136 => 53, 131 => 50, 125 => 46, 119 => 44, 113 => 42, 110 => 41, 107 => 40, 105 => 39, 101 => 38, 93 => 34, 87 => 32, 81 => 30, 79 => 29, 74 => 28, 72 => 27, 66 => 26, 62 => 24, 59 => 23, 57 => 22, 47 => 13, 45 => 11, 44 => 10, 43 => 9, 42 => 8, 35 => 4, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "display/import/import.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/display/import/import.twig"); } } db/login/tmp/twig/9d/9d254bc0e43f46a8844b012d501626d3acdd42c4a2d2da29c2a5f973f04a04e8.php000064400000007555151502156020021700 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " $context["value"]) { // line 3 echo " "; echo twig_escape_filter($this->env, $context["key"], "html", null, true); echo "=\""; echo twig_escape_filter($this->env, $context["value"], "html", null, true); echo "\""; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['key'], $context['value'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 4 echo "> "; // line 5 echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true); echo " "; // line 6 if ( !twig_test_empty(($context["description"] ?? null))) { // line 7 echo "

        "; echo ($context["description"] ?? null); echo "

        "; } // line 10 if ((twig_test_iterable(($context["errors"] ?? null)) && (twig_length_filter($this->env, ($context["errors"] ?? null)) > 0))) { // line 11 echo "
        "; // line 12 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(($context["errors"] ?? null)); foreach ($context['_seq'] as $context["_key"] => $context["error"]) { // line 13 echo "
        "; echo twig_escape_filter($this->env, $context["error"], "html", null, true); echo "
        "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 15 echo "
        "; } // line 17 echo " "; } public function getTemplateName() { return "config/form_display/fieldset_top.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 83 => 17, 79 => 15, 70 => 13, 66 => 12, 63 => 11, 61 => 10, 55 => 7, 53 => 6, 49 => 5, 46 => 4, 36 => 3, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/fieldset_top.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/fieldset_top.twig"); } } db/login/tmp/twig/9d/9d6c5c59ee895a239eeb5956af299ac0e5eb1a69f8db50be742ff0c61b618944.php000064400000003532151502156020022125 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "fk_checkbox.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 37 => 4, 33 => 3, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "fk_checkbox.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/fk_checkbox.twig"); } } db/login/tmp/twig/5b/5bc8798ed34ce6de7032a6beb0a99b6d7f58320d8bd3d3f153ae1e270221a22e.php000064400000004551151502156020022045 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo "env, ($context["script_name"] ?? null), "html", null, true); echo "\" name=\"insertForm\" id=\""; echo twig_escape_filter($this->env, ($context["form_id"] ?? null), "html", null, true); echo "\" class=\"ajax lock-page\"> "; // line 2 echo PhpMyAdmin\Url::getHiddenInputs(($context["db"] ?? null), ($context["table"] ?? null)); echo " env, ($context["goto"] ?? null), "html", null, true); echo "\" /> env, ($context["script_name"] ?? null), "html", null, true); echo "\" /> "; } public function getTemplateName() { return "table/search/form_tag.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 45 => 4, 41 => 3, 37 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/form_tag.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/form_tag.twig"); } } db/login/tmp/twig/5b/5b918a16eb48b7a6e7131fd1c055356bbd73124875e80cf9ca6636a219f30fcc.php000064400000002766151502156020021643 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "config/form_display/form_bottom.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/form_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/form_bottom.twig"); } } db/login/tmp/twig/24/2418e375382edcf54c86a57c12de18ba984ddd95fc6d6a7843bccf6f65bf6732.php000064400000021515151502156020022033 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 if ((($context["search_type"] ?? null) == "zoom")) { // line 2 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 2)->display(twig_to_array(["script_name" => "tbl_zoom_select.php", "form_id" => "zoom_search_form", "db" => // line 5 ($context["db"] ?? null), "table" => // line 6 ($context["table"] ?? null), "goto" => // line 7 ($context["goto"] ?? null)])); // line 9 echo "
        "; // line 12 echo _gettext("Do a \"query by example\" (wildcard: \"%\") for two different columns"); // line 13 echo " "; // line 14 $this->loadTemplate("table/search/fields_table.twig", "table/search/selection_form.twig", 14)->display(twig_to_array(["self" => // line 15 ($context["self"] ?? null), "search_type" => // line 16 ($context["search_type"] ?? null), "geom_column_flag" => // line 17 ($context["geom_column_flag"] ?? null), "column_names" => // line 18 ($context["column_names"] ?? null), "column_types" => // line 19 ($context["column_types"] ?? null), "column_collations" => // line 20 ($context["column_collations"] ?? null), "criteria_column_names" => // line 21 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 22 ($context["criteria_column_types"] ?? null)])); // line 24 echo " "; $this->loadTemplate("table/search/options_zoom.twig", "table/search/selection_form.twig", 24)->display(twig_to_array(["data_label" => // line 25 ($context["data_label"] ?? null), "column_names" => // line 26 ($context["column_names"] ?? null), "max_plot_limit" => // line 27 ($context["max_plot_limit"] ?? null)])); // line 29 echo "
        "; } elseif (( // line 31 ($context["search_type"] ?? null) == "normal")) { // line 32 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 32)->display(twig_to_array(["script_name" => "tbl_select.php", "form_id" => "tbl_search_form", "db" => // line 35 ($context["db"] ?? null), "table" => // line 36 ($context["table"] ?? null), "goto" => // line 37 ($context["goto"] ?? null)])); // line 39 echo "
        "; // line 42 echo _gettext("Do a \"query by example\" (wildcard: \"%\")"); // line 43 echo "
        "; // line 45 $this->loadTemplate("table/search/fields_table.twig", "table/search/selection_form.twig", 45)->display(twig_to_array(["self" => // line 46 ($context["self"] ?? null), "search_type" => // line 47 ($context["search_type"] ?? null), "geom_column_flag" => // line 48 ($context["geom_column_flag"] ?? null), "column_names" => // line 49 ($context["column_names"] ?? null), "column_types" => // line 50 ($context["column_types"] ?? null), "column_collations" => // line 51 ($context["column_collations"] ?? null), "criteria_column_names" => // line 52 ($context["criteria_column_names"] ?? null), "criteria_column_types" => // line 53 ($context["criteria_column_types"] ?? null)])); // line 55 echo "
        "; // line 59 $this->loadTemplate("table/search/options.twig", "table/search/selection_form.twig", 59)->display(twig_to_array(["column_names" => // line 60 ($context["column_names"] ?? null), "max_rows" => // line 61 ($context["max_rows"] ?? null)])); // line 63 echo "
        "; } elseif (( // line 64 ($context["search_type"] ?? null) == "replace")) { // line 65 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 65)->display(twig_to_array(["script_name" => "tbl_find_replace.php", "form_id" => "find_replace_form", "db" => // line 68 ($context["db"] ?? null), "table" => // line 69 ($context["table"] ?? null), "goto" => // line 70 ($context["goto"] ?? null)])); // line 72 echo "
        "; // line 75 echo _gettext("Find and replace"); // line 76 echo " "; // line 77 $this->loadTemplate("table/search/search_and_replace.twig", "table/search/selection_form.twig", 77)->display(twig_to_array(["column_names" => // line 78 ($context["column_names"] ?? null), "column_types" => // line 79 ($context["column_types"] ?? null), "sql_types" => // line 80 ($context["sql_types"] ?? null)])); // line 82 echo "
        "; } else { // line 85 echo " "; $this->loadTemplate("table/search/form_tag.twig", "table/search/selection_form.twig", 85)->display(twig_to_array(["script_name" => "", "form_id" => "", "db" => // line 88 ($context["db"] ?? null), "table" => // line 89 ($context["table"] ?? null), "goto" => // line 90 ($context["goto"] ?? null)])); } // line 93 echo " "; // line 95 echo "
        "; } public function getTemplateName() { return "table/search/selection_form.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 160 => 99, 156 => 98, 152 => 97, 148 => 95, 145 => 93, 142 => 90, 141 => 89, 140 => 88, 138 => 85, 133 => 82, 131 => 80, 130 => 79, 129 => 78, 128 => 77, 125 => 76, 123 => 75, 118 => 72, 116 => 70, 115 => 69, 114 => 68, 112 => 65, 110 => 64, 107 => 63, 105 => 61, 104 => 60, 103 => 59, 97 => 55, 95 => 53, 94 => 52, 93 => 51, 92 => 50, 91 => 49, 90 => 48, 89 => 47, 88 => 46, 87 => 45, 83 => 43, 81 => 42, 76 => 39, 74 => 37, 73 => 36, 72 => 35, 70 => 32, 68 => 31, 64 => 29, 62 => 27, 61 => 26, 60 => 25, 58 => 24, 56 => 22, 55 => 21, 54 => 20, 53 => 19, 52 => 18, 51 => 17, 50 => 16, 49 => 15, 48 => 14, 45 => 13, 43 => 12, 38 => 9, 36 => 7, 35 => 6, 34 => 5, 32 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/selection_form.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/selection_form.twig"); } } db/login/tmp/twig/e8/e8184cd61a18c248ecc7e06a3f33b057e814c3c99a4dd56b7a7da715e1bc2af8.php000064400000002765151502156020022150 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 echo " "; } public function getTemplateName() { return "config/form_display/tabs_bottom.twig"; } public function getDebugInfo() { return array ( 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "config/form_display/tabs_bottom.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/config/form_display/tabs_bottom.twig"); } } db/login/tmp/twig/e8/e8bfd7f019dddd57cb966ee8854314806c2010b7b9d2f060a8b7727be8309781.php000064400000013627151502156020021615 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 1 $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, (twig_length_filter($this->env, ($context["column_names"] ?? null)) - 1))); foreach ($context['_seq'] as $context["_key"] => $context["column_index"]) { // line 2 echo " "; // line 4 echo " "; if (($context["geom_column_flag"] ?? null)) { // line 5 echo " "; $this->loadTemplate("table/search/geom_func.twig", "table/search/rows_normal.twig", 5)->display(twig_to_array(["column_index" => // line 6 $context["column_index"], "column_types" => // line 7 ($context["column_types"] ?? null)])); // line 9 echo " "; } // line 10 echo " "; // line 11 echo " "; // line 14 $context["properties"] = $this->getAttribute(($context["self"] ?? null), "getColumnProperties", [0 => $context["column_index"], 1 => $context["column_index"]], "method"); // line 15 echo " "; // line 25 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['column_index'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; } public function getTemplateName() { return "table/search/rows_normal.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 114 => 36, 110 => 35, 105 => 33, 101 => 32, 96 => 30, 92 => 29, 89 => 28, 85 => 26, 80 => 25, 75 => 22, 69 => 19, 63 => 16, 60 => 15, 58 => 14, 53 => 12, 50 => 11, 48 => 10, 45 => 9, 43 => 7, 42 => 6, 40 => 5, 37 => 4, 34 => 2, 30 => 1,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "table/search/rows_normal.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/table/search/rows_normal.twig"); } } db/login/tmp/twig/20/2049bed753d83b89a1e081fdd44e43a5925b0d47c00d374a1d058053ad338e51.php000064400000051273151502156020021373 0ustar00parent = false; $this->blocks = [ ]; } protected function doDisplay(array $context, array $blocks = []) { // line 2 $context["ci"] = 0; // line 3 echo " "; // line 6 $context["ci_offset"] = -1; // line 7 echo " "; // line 89 if (((isset($context["change_column"]) || array_key_exists("change_column", $context)) && !twig_test_empty(($context["change_column"] ?? null)))) { // line 90 echo " "; // line 91 echo " "; } // line 101 if ( !($context["is_backup"] ?? null)) { // line 102 echo " "; // line 103 echo " "; } // line 113 echo " "; // line 138 if (($context["is_virtual_columns_supported"] ?? null)) { // line 139 echo " "; } // line 153 if ((isset($context["fields_meta"]) || array_key_exists("fields_meta", $context))) { // line 154 echo " "; $context["current_index"] = 0; // line 155 echo " "; $context["cols"] = (twig_length_filter($this->env, ($context["move_columns"] ?? null)) - 1); // line 156 echo " "; $context["break"] = false; // line 157 echo " "; $context['_parent'] = $context; $context['_seq'] = twig_ensure_traversable(range(0, ($context["cols"] ?? null))); foreach ($context['_seq'] as $context["_key"] => $context["mi"]) { // line 158 echo " "; if ((($this->getAttribute($this->getAttribute(($context["move_columns"] ?? null), $context["mi"], [], "array"), "name", []) == $this->getAttribute(($context["column_meta"] ?? null), "Field", [], "array")) && !($context["break"] ?? null))) { // line 159 echo " "; $context["current_index"] = $context["mi"]; // line 160 echo " "; $context["break"] = true; // line 161 echo " "; } // line 162 echo " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_iterated'], $context['_key'], $context['mi'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 163 echo " "; } // line 176 echo " "; // line 177 if ((($this->getAttribute(($context["cfg_relation"] ?? null), "mimework", [], "array") && ($context["browse_mime"] ?? null)) && $this->getAttribute(($context["cfg_relation"] ?? null), "commwork", [], "array"))) { // line 178 echo " "; } } public function getTemplateName() { return "columns_definitions/column_attributes.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 380 => 239, 377 => 238, 375 => 235, 374 => 234, 373 => 233, 372 => 232, 371 => 231, 369 => 230, 365 => 227, 362 => 226, 360 => 223, 359 => 222, 358 => 221, 357 => 220, 356 => 219, 355 => 218, 353 => 217, 349 => 214, 346 => 213, 344 => 210, 343 => 209, 342 => 208, 341 => 207, 340 => 206, 338 => 205, 334 => 202, 331 => 201, 329 => 198, 328 => 197, 327 => 196, 326 => 195, 325 => 194, 324 => 193, 322 => 192, 318 => 189, 315 => 188, 313 => 186, 312 => 185, 311 => 184, 310 => 183, 309 => 182, 308 => 181, 306 => 180, 303 => 178, 301 => 177, 298 => 176, 294 => 174, 291 => 173, 289 => 171, 288 => 170, 287 => 169, 286 => 168, 285 => 167, 284 => 166, 283 => 165, 279 => 163, 273 => 162, 270 => 161, 267 => 160, 264 => 159, 261 => 158, 256 => 157, 253 => 156, 250 => 155, 247 => 154, 245 => 153, 241 => 150, 238 => 149, 236 => 147, 235 => 146, 234 => 145, 233 => 144, 232 => 143, 231 => 142, 230 => 141, 229 => 140, 226 => 139, 224 => 138, 221 => 136, 218 => 135, 216 => 133, 215 => 132, 214 => 131, 213 => 130, 212 => 129, 211 => 128, 210 => 127, 209 => 126, 207 => 125, 203 => 122, 200 => 121, 198 => 119, 197 => 118, 196 => 117, 195 => 116, 193 => 115, 190 => 113, 186 => 111, 183 => 110, 181 => 108, 180 => 107, 179 => 106, 178 => 105, 177 => 104, 174 => 103, 172 => 102, 170 => 101, 166 => 99, 163 => 98, 161 => 96, 160 => 95, 159 => 94, 158 => 93, 157 => 92, 154 => 91, 152 => 90, 150 => 89, 147 => 88, 144 => 87, 142 => 85, 141 => 84, 140 => 83, 139 => 82, 137 => 81, 133 => 78, 130 => 77, 128 => 75, 127 => 74, 126 => 73, 125 => 72, 124 => 71, 123 => 70, 122 => 69, 120 => 68, 116 => 65, 114 => 64, 111 => 63, 109 => 61, 108 => 60, 107 => 59, 106 => 58, 105 => 57, 103 => 56, 99 => 53, 96 => 52, 94 => 50, 93 => 49, 92 => 48, 91 => 47, 90 => 46, 89 => 45, 87 => 44, 83 => 41, 80 => 40, 78 => 38, 77 => 37, 76 => 36, 75 => 35, 74 => 34, 72 => 33, 68 => 30, 65 => 29, 63 => 27, 62 => 26, 61 => 25, 60 => 24, 59 => 23, 57 => 22, 53 => 19, 50 => 18, 48 => 16, 47 => 15, 46 => 14, 45 => 13, 44 => 12, 43 => 11, 41 => 10, 37 => 7, 35 => 6, 32 => 3, 30 => 2,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("", "columns_definitions/column_attributes.twig", "/home/dkgm7688/public_html/hrmcworld01/db/login/templates/columns_definitions/column_attributes.twig"); } } db/login/error_report.php000064400000011000151502156020011463 0ustar00= 3 && ($_SESSION['prev_error_subm_time']-time()) <= 3000 ) { $_SESSION['error_subm_count'] = 0; $_SESSION['prev_errors'] = ''; $response->addJSON('_stopErrorReportLoop', '1'); } else { $_SESSION['prev_error_subm_time'] = time(); $_SESSION['error_subm_count'] = ( (isset($_SESSION['error_subm_count'])) ? ($_SESSION['error_subm_count']+1) : (0) ); } } $reportData = $errorReport->getData($_POST['exception_type']); // report if and only if there were 'actual' errors. if (count($reportData) > 0) { $server_response = $errorReport->send($reportData); if (! is_string($server_response)) { $success = false; } else { $decoded_response = json_decode($server_response, true); $success = !empty($decoded_response) ? $decoded_response["success"] : false; } /* Message to show to the user */ if ($success) { if ((isset($_POST['automatic']) && $_POST['automatic'] === "true") || $GLOBALS['cfg']['SendErrorReports'] == 'always' ) { $msg = __( 'An error has been detected and an error report has been ' . 'automatically submitted based on your settings.' ); } else { $msg = __('Thank you for submitting this report.'); } } else { $msg = __( 'An error has been detected and an error report has been ' . 'generated but failed to be sent.' ) . ' ' . __( 'If you experience any ' . 'problems please submit a bug report manually.' ); } $msg .= ' ' . __('You may want to refresh the page.'); /* Create message object */ if ($success) { $msg = Message::notice($msg); } else { $msg = Message::error($msg); } /* Add message to response */ if ($response->isAjax()) { if ($_POST['exception_type'] == 'js') { $response->addJSON('message', $msg); } else { $response->addJSON('_errSubmitMsg', $msg); } } elseif ($_POST['exception_type'] == 'php') { $jsCode = 'PMA_ajaxShowMessage("
        ' . $msg . '
        ", false);'; $response->getFooter()->getScripts()->addCode($jsCode); } if ($_POST['exception_type'] == 'php') { // clear previous errors & save new ones. $GLOBALS['error_handler']->savePreviousErrors(); } /* Persist always send settings */ if (isset($_POST['always_send']) && $_POST['always_send'] === "true" ) { $userPreferences = new UserPreferences(); $userPreferences->persistOption("SendErrorReports", "always", "ask"); } } } elseif (! empty($_POST['get_settings'])) { $response->addJSON('report_setting', $GLOBALS['cfg']['SendErrorReports']); } else { if ($_POST['exception_type'] == 'js') { $response->addHTML($errorReport->getForm()); } else { // clear previous errors & save new ones. $GLOBALS['error_handler']->savePreviousErrors(); } } db/login/tbl_indexes.php000064400000002571151502156020011254 0ustar00factory('PhpMyAdmin\Controllers\Table\TableIndexesController'); $container->alias( 'TableIndexesController', 'PhpMyAdmin\Controllers\Table\TableIndexesController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /* Define dependencies for the concerned controller */ $db = $container->get('db'); $table = $container->get('table'); $dbi = $container->get('dbi'); if (!isset($_POST['create_edit_table'])) { include_once 'libraries/tbl_common.inc.php'; } if (isset($_POST['index'])) { if (is_array($_POST['index'])) { // coming already from form $index = new Index($_POST['index']); } else { $index = $dbi->getTable($db, $table)->getIndex($_POST['index']); } } else { $index = new Index; } $dependency_definitions = array( "index" => $index ); /** @var TableIndexesController $controller */ $controller = $container->get('TableIndexesController', $dependency_definitions); $controller->indexAction(); db/login/gis_data_editor.php000064400000037160151502156020012077 0ustar00generateParams($_POST['value']) ); } // Generate Well Known Text $srid = (isset($gis_data['srid']) && $gis_data['srid'] != '') ? htmlspecialchars($gis_data['srid']) : 0; $wkt = $gis_obj->generateWkt($gis_data, 0); $wkt_with_zero = $gis_obj->generateWkt($gis_data, 0, '0'); $result = "'" . $wkt . "'," . $srid; // Generate SVG based visualization $visualizationSettings = array( 'width' => 450, 'height' => 300, 'spatialColumn' => 'wkt', 'mysqlVersion' => $GLOBALS['dbi']->getVersion() ); $data = array(array('wkt' => $wkt_with_zero, 'srid' => $srid)); $visualization = GisVisualization::getByData($data, $visualizationSettings) ->toImage('svg'); $open_layers = GisVisualization::getByData($data, $visualizationSettings) ->asOl(); // If the call is to update the WKT and visualization make an AJAX response if (isset($_POST['generate']) && $_POST['generate'] == true) { $extra_data = array( 'result' => $result, 'visualization' => $visualization, 'openLayers' => $open_layers, ); $response = Response::getInstance(); $response->addJSON($extra_data); exit; } ob_start(); echo ''; echo ''; echo '
        '; echo '

        '; printf( __('Value for the column "%s"'), htmlspecialchars($_POST['field']) ); echo '

        '; echo ''; // The input field to which the final result should be added // and corresponding null checkbox if (isset($_POST['input_name'])) { echo ''; } echo Url::getHiddenInputs(); echo ''; echo '
        '; echo $visualization; echo '
        '; // No not remove inline style or it will cause "Cannot read property 'w' of null" on GIS editor map init echo '
        '; echo '
        '; echo '
        '; echo ''; echo ''; echo '
        '; echo ''; echo ''; echo ''; echo '
        '; echo ''; echo '    '; /* l10n: Spatial Reference System Identifier */ echo ''; echo ''; echo '
        '; echo ''; echo ''; echo '
        '; $geom_count = 1; if ($geom_type == 'GEOMETRYCOLLECTION') { $geom_count = (isset($gis_data[$geom_type]['geom_count'])) ? intval($gis_data[$geom_type]['geom_count']) : 1; if (isset($gis_data[$geom_type]['add_geom'])) { $geom_count++; } echo ''; } for ($a = 0; $a < $geom_count; $a++) { if (! isset($gis_data[$a])) { continue; } if ($geom_type == 'GEOMETRYCOLLECTION') { echo '

        '; printf(__('Geometry %d:'), $a + 1); echo '
        '; if (isset($gis_data[$a]['gis_type'])) { $type = htmlspecialchars($gis_data[$a]['gis_type']); } else { $type = $gis_types[0]; } echo ''; } else { $type = $geom_type; } if ($type == 'POINT') { echo '
        '; echo __('Point:'); echo ''; echo ''; echo ''; echo ''; } elseif ($type == 'MULTIPOINT' || $type == 'LINESTRING') { $no_of_points = isset($gis_data[$a][$type]['no_of_points']) ? intval($gis_data[$a][$type]['no_of_points']) : 1; if ($type == 'LINESTRING' && $no_of_points < 2) { $no_of_points = 2; } if ($type == 'MULTIPOINT' && $no_of_points < 1) { $no_of_points = 1; } if (isset($gis_data[$a][$type]['add_point'])) { $no_of_points++; } echo ''; for ($i = 0; $i < $no_of_points; $i++) { echo '
        '; printf(__('Point %d'), $i + 1); echo ': '; echo ''; echo ''; echo ''; echo ''; } echo ''; } elseif ($type == 'MULTILINESTRING' || $type == 'POLYGON') { $no_of_lines = isset($gis_data[$a][$type]['no_of_lines']) ? intval($gis_data[$a][$type]['no_of_lines']) : 1; if ($no_of_lines < 1) { $no_of_lines = 1; } if (isset($gis_data[$a][$type]['add_line'])) { $no_of_lines++; } echo ''; for ($i = 0; $i < $no_of_lines; $i++) { echo '
        '; if ($type == 'MULTILINESTRING') { printf(__('Linestring %d:'), $i + 1); } else { if ($i == 0) { echo __('Outer ring:'); } else { printf(__('Inner ring %d:'), $i); } } $no_of_points = isset($gis_data[$a][$type][$i]['no_of_points']) ? intval($gis_data[$a][$type][$i]['no_of_points']) : 2; if ($type == 'MULTILINESTRING' && $no_of_points < 2) { $no_of_points = 2; } if ($type == 'POLYGON' && $no_of_points < 4) { $no_of_points = 4; } if (isset($gis_data[$a][$type][$i]['add_point'])) { $no_of_points++; } echo ''; for ($j = 0; $j < $no_of_points; $j++) { echo('
        '); printf(__('Point %d'), $j + 1); echo ': '; echo ''; echo ''; echo ''; echo ''; } echo ''; } $caption = ($type == 'MULTILINESTRING') ? __('Add a linestring') : __('Add an inner ring'); echo '
        '; echo ''; } elseif ($type == 'MULTIPOLYGON') { $no_of_polygons = isset($gis_data[$a][$type]['no_of_polygons']) ? intval($gis_data[$a][$type]['no_of_polygons']) : 1; if ($no_of_polygons < 1) { $no_of_polygons = 1; } if (isset($gis_data[$a][$type]['add_polygon'])) { $no_of_polygons++; } echo ''; for ($k = 0; $k < $no_of_polygons; $k++) { echo '
        '; printf(__('Polygon %d:'), $k + 1); $no_of_lines = isset($gis_data[$a][$type][$k]['no_of_lines']) ? intval($gis_data[$a][$type][$k]['no_of_lines']) : 1; if ($no_of_lines < 1) { $no_of_lines = 1; } if (isset($gis_data[$a][$type][$k]['add_line'])) { $no_of_lines++; } echo ''; for ($i = 0; $i < $no_of_lines; $i++) { echo '

        '; if ($i == 0) { echo __('Outer ring:'); } else { printf(__('Inner ring %d:'), $i); } $no_of_points = isset($gis_data[$a][$type][$k][$i]['no_of_points']) ? intval($gis_data[$a][$type][$k][$i]['no_of_points']) : 4; if ($no_of_points < 4) { $no_of_points = 4; } if (isset($gis_data[$a][$type][$k][$i]['add_point'])) { $no_of_points++; } echo ''; for ($j = 0; $j < $no_of_points; $j++) { echo '
        '; printf(__('Point %d'), $j + 1); echo ': '; echo ''; echo ''; echo ''; echo ''; } echo ''; } echo '
        '; echo ''; echo '
        '; } echo '
        '; echo ''; } } if ($geom_type == 'GEOMETRYCOLLECTION') { echo '

        '; echo ''; } echo '
        '; echo ''; echo '
        '; echo ''; echo '
        '; echo '

        ' , __('Output') , '

        '; echo '

        '; echo __( 'Choose "ST_GeomFromText" from the "Function" column and paste the' . ' string below into the "Value" field.' ); echo '

        '; echo ''; echo '
        '; echo '
        '; echo ''; Response::getInstance()->addJSON('gis_editor', ob_get_contents()); ob_end_clean(); db/login/tbl_find_replace.php000064400000001747151502156020012234 0ustar00factory('PhpMyAdmin\Controllers\Table\TableSearchController'); $container->alias( 'TableSearchController', 'PhpMyAdmin\Controllers\Table\TableSearchController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); $dependency_definitions = array( 'searchType' => 'replace', 'url_query' => &$url_query ); /** @var PhpMyAdmin\Controllers\Table\TableSearchController $controller */ $controller = $container->get('TableSearchController', $dependency_definitions); $controller->indexAction(); db/login/server_databases.php000064400000001436151502156020012270 0ustar00factory( 'PhpMyAdmin\Controllers\Server\ServerDatabasesController' ); $container->alias( 'ServerDatabasesController', 'PhpMyAdmin\Controllers\Server\ServerDatabasesController' ); $container->set('PhpMyAdmin\Response', Response::getInstance()); $container->alias('response', 'PhpMyAdmin\Response'); /** @var ServerDatabasesController $controller */ $controller = $container->get( 'ServerDatabasesController', array() ); $controller->indexAction(); db/login/tbl_addfield.php000064400000007252151502156020011352 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('tbl_structure.js'); // Check parameters Util::checkParameters(array('db', 'table')); /** * Defines the url to return to in case of error in a sql statement */ $err_url = 'tbl_sql.php' . Url::getCommon( array( 'db' => $db, 'table' => $table ) ); /** * The form used to define the field to add has been submitted */ $abort = false; // check number of fields to be created if (isset($_POST['submit_num_fields'])) { if (isset($_POST['orig_after_field'])) { $_POST['after_field'] = $_POST['orig_after_field']; } if (isset($_POST['orig_field_where'])) { $_POST['field_where'] = $_POST['orig_field_where']; } $num_fields = min( intval($_POST['orig_num_fields']) + intval($_POST['added_fields']), 4096 ); $regenerate = true; } elseif (isset($_POST['num_fields']) && intval($_POST['num_fields']) > 0) { $num_fields = min(4096, intval($_POST['num_fields'])); } else { $num_fields = 1; } if (isset($_POST['do_save_data'])) { //avoid an incorrect calling of PMA_updateColumns() via //tbl_structure.php below unset($_POST['do_save_data']); $createAddField = new CreateAddField($GLOBALS['dbi']); list($result, $sql_query) = $createAddField->tryColumnCreationQuery($db, $table, $err_url); if ($result === true) { // Update comment table for mime types [MIME] if (isset($_POST['field_mimetype']) && is_array($_POST['field_mimetype']) && $cfg['BrowseMIME'] ) { foreach ($_POST['field_mimetype'] as $fieldindex => $mimetype) { if (isset($_POST['field_name'][$fieldindex]) && strlen($_POST['field_name'][$fieldindex]) > 0 ) { Transformations::setMIME( $db, $table, $_POST['field_name'][$fieldindex], $mimetype, $_POST['field_transformation'][$fieldindex], $_POST['field_transformation_options'][$fieldindex], $_POST['field_input_transformation'][$fieldindex], $_POST['field_input_transformation_options'][$fieldindex] ); } } } // Go back to the structure sub-page $message = Message::success( __('Table %1$s has been altered successfully.') ); $message->addParam($table); $response->addJSON( 'message', Util::getMessage($message, $sql_query, 'success') ); exit; } else { $error_message_html = Util::mysqlDie( '', '', false, $err_url, false ); $response->addHTML($error_message_html); $response->setRequestStatus(false); exit; } } // end do alter table /** * Displays the form used to define the new field */ if ($abort == false) { /** * Gets tables information */ include_once 'libraries/tbl_common.inc.php'; $active_page = 'tbl_structure.php'; /** * Display the form */ $action = 'tbl_addfield.php'; include_once 'libraries/tbl_columns_definition_form.inc.php'; } db/login/favicon.ico000064400000053726151502156020010374 0ustar0000f h00 %  B hnS(0` t\,,D̼|\T$dd<@ll T4ttlHDxx̼|d88`80d`tPPx22222222222222222222222222*222 %2'222!'2*!''!2$!!22!22!!2!2222&2!2'0!2 !222!222! &0000!22 222!22!!2%!2!!!!22!!!!!&22! !0!22*!2!0!2!%!'!&22!22!' '!2!!!! 2!2!&22!&222!&!02!&!22!0 2+.! 2!!2!!22!!2!&!2!!!2 !22!2!2 000!/(&#/  2.!!$ !!!"!!-,1!!0 ,2!!! &!! +$%   +,,%  2 #   2,  2222    ,   ,,,,   ,,,,,   ,,    , ,,,,   , ,,,  ,,,,,  ,,,  , ,,,,   , ,,,    , ,     ,               @~@@``08@8@< 08?? ??( @tT$$DtLP$dh@<ld \44T|\\4tttĴ|lLHh84xx/ // /// // // // /! ! !/   /  &/////$/ !/./$&, & #/& $! / & /$ & /  $ , !/.//& /&  !&(../$ & / & //! $! )) % //, # &  , *  ! /- ++ '"" /  +""   +""   ++"""  ++""   ++"  +   + +   ++           ǀpÀ@ 0?080a0000000$?,?<( @mkhcZXa\QL]TIB?}zwSJA;3xspRB:2*%qiOKC"jbI" c[GC!]TN2+* v^z9q` j|avzd]sndfSMmo{zNBcaoDAuOOɻĵqJJμrLLfelEDiiss}[\kDDmmwwyywxkkssd::uPP``eevRRǸggʼ^^xyz{|}~jklmnopqrstuvwx[\]^_`abcdefghiKLMNOPQRTUVWX?@ABCDEFG4I568"9:;<=./0!$1234&)*#$+, !"#$ 98ADAACgoO(0` %_OEBpbDiଖyyyzwwyyMxy}}vvuu|}:±xxzz[00b88h@@n[//a88jCCh@@b98\00c::b88]32~}[[_54^33ccXôc::kDDc::ĵR3hAAjCCd;;̿G-Dggf==g??}Z[b98kDDd;;ƷtPPiAAc::!lEEjBBc99`X@ {XXh@@b99b99jCCjBB?ggd<>h@@yVV}~c::e==jjvRR_44]22e<>`77oomh@@jCCd;:˽c99kDDlEEe==qKKwwd<>kDD`66ss{XXh@@c99b88lEExUU`77ssd<>f>>__E؋llf==jCCg?@~c::g??ccccd;;wSSȺd;;h@@__lEEkDDb99ea88iAApKKxxd<>(S°°Ƶd10cı® 2ʻZy:ô _~~s{B .>:7Zkjh\0$#HW2:2MZZZZ+_FXTQOLJC:<@=:2-*(&)(%!UP }Jvu%a`][XUSPKC@>:8530-+(&gM }vJv{zvb`][XURQ"DC@=;8530-+(vK 0t}||eAc`]ZXUT/EyC@=:8520-+O s~Afec`]ZXV>F EC@=:8530-"M  < heb`]ZYGH]EC@=;8530%S# pn j2hec`][^IHEC@=;853(a&#  hlkhec`^mJRHEC@=:85*o(%#  m|khec`~KJHEC@=:88-+(%#  4o)mkhfcMUKHEC@=:90.+(&# pmkhfOMJHEC@== 30-+(%" rupmkhOWNKHEC@>7630-*(&# \t&rpmkQ PNJHFCA 98530-*(%" urpmlSrPMJHED-=3;85#30-+(%" ,wcvspoTSPMJHF9?X>;X8530-+(&yxvrq USPNJIJC@>98630-*) {xutW5USPMKVHFDD<#;8530.J}^{xwXUSPNgKGG?(>;853}{y*ZXXUSPsB8@>;86!}|6\ZXUSELC@=;rY~E][XUHpEC@?c`?^ZXKHED@\``]ZNMKHb`^QPMLe=b`_UISPdfeba XUhedZY?kFhf![lki6mwl)@ 00   ??( @ yl7 rKe~йdɻ&ĺhA@W++ER%%mnekEDW**mGGW++{QX[00`66nll^33z{;(ʼ`77vRR򧿮rs^33uv˽b99lEEjjf==tPP3`76sNNnGGe<>tOP`77ޞ\11vv^sNNa77قaa^44~\\ᩓ]22ssppnHHe==qrzWW`66$ȹ`77qLLvv\019tro^33yyR$Ƹb88d;;c;;nGGiAA`aζ_55mFFd;;rsgt~\11rr_``55lb65vRRȻƸiic:;k@=sKIhAAb99?qnc::h@@vRRvPNd;:62/"R Oi3fb^[IFB>:62&" ljgc_JsGC>;74*'# "n{kfcMJGB>;8.+'#|q*ojgNwJGC?< 2/+'#trojiPNJFB?9 62.+&"EvpromRNJFC>':7P3.*&"y"wsq U'SOKG$Bg?: 73/*({vuVSOK7FtC%=;73/l~gzx ZMWRPLA*?:65~|0\ ZVT\E<7M^[WnJ`GCB1a6^[NJHdb_TROgfcY/WVjJg\ZmkknmVmpp000000x||~?~?~(  @ב؍"ˠV4ɟš4܉ׁ֓``BeepvRRǸggʼ^^ӆkDDmmwwӚϕyywxkkssd::uPPWuOOɻĵqJJμrLLfelEDii-ʑss}[\ɏa@vzd]sndfSMmo{zNBt\caoDAk^zÖq9q` ;j|h.]TN?2+*  vh3c[G(C:3!mjbIB;3 *" cqkiO(KC;"2*"x0spRJBV:2*%1}zw XGSJDA ;3j3]ZT3I*B? a\HQZLbhBcXZ4Xmk,1@@?db/login/db_sql_autocomplete.php000064400000001352151502156020012775 0ustar00getTables($db); foreach ($tableNames as $tableName) { $sql_autocomplete[$tableName] = $GLOBALS['dbi']->getColumns( $db, $tableName ); } } } else { $sql_autocomplete = true; } $response = Response::getInstance(); $response->addJSON("tables", json_encode($sql_autocomplete)); db/login/server_replication.php000064400000004600151502156020012646 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('server_privileges.js'); $scripts->addFile('replication.js'); $scripts->addFile('vendor/zxcvbn.js'); /** * Checks if the user is allowed to do what he tries to... */ if (! $GLOBALS['dbi']->isSuperuser()) { $html = Template::get('server/sub_page_header')->render([ 'type' => 'replication', ]); $html .= PhpMyAdmin\Message::error(__('No Privileges'))->getDisplay(); $response->addHTML($html); exit; } // change $GLOBALS['url_params'] with $_POST['url_params'] // only if it is an array if (isset($_POST['url_params']) && is_array($_POST['url_params'])) { $GLOBALS['url_params'] = $_POST['url_params']; } /** * Handling control requests */ ReplicationGui::handleControlRequest(); /** * start output */ $response->addHTML('
        '); $response->addHTML(Template::get('server/sub_page_header')->render([ 'type' => 'replication', ])); // Display error messages $response->addHTML(ReplicationGui::getHtmlForErrorMessage()); if ($GLOBALS['replication_info']['master']['status']) { $response->addHTML(ReplicationGui::getHtmlForMasterReplication()); } elseif (! isset($_POST['mr_configure']) && ! isset($_POST['repl_clear_scr']) ) { $response->addHTML(ReplicationGui::getHtmlForNotServerReplication()); } if (isset($_POST['mr_configure'])) { // Render the 'Master configuration' section $response->addHTML(ReplicationGui::getHtmlForMasterConfiguration()); exit; } $response->addHTML('
        '); if (! isset($_POST['repl_clear_scr'])) { // Render the 'Slave configuration' section $response->addHTML( ReplicationGui::getHtmlForSlaveConfiguration( $GLOBALS['replication_info']['slave']['status'], $server_slave_replication ) ); } if (isset($_POST['sl_configure'])) { $response->addHTML(ReplicationGui::getHtmlForReplicationChangeMaster("slave_changemaster")); } db/login/db_sql.php000064400000001670151502156020010217 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('makegrid.js'); $scripts->addFile('vendor/jquery/jquery.uitablefilter.js'); $scripts->addFile('sql.js'); require 'libraries/db_common.inc.php'; // After a syntax error, we return to this script // with the typed query in the textarea. $goto = 'db_sql.php'; $back = 'db_sql.php'; /** * Query box, bookmark, insert data from textfile */ $response->addHTML( SqlQueryForm::getHtml( true, false, isset($_POST['delimiter']) ? htmlspecialchars($_POST['delimiter']) : ';' ) ); db/login/composer.json000064400000006343151502156020010766 0ustar00{ "name": "phpmyadmin/phpmyadmin", "type": "project", "description": "MySQL web administration tool", "keywords": ["phpmyadmin","mysql","web"], "homepage": "https://www.phpmyadmin.net/", "support": { "forum": "https://www.phpmyadmin.net/support/", "issues": "https://github.com/phpmyadmin/phpmyadmin/issues", "wiki": "https://wiki.phpmyadmin.net/", "docs": "https://docs.phpmyadmin.net/", "source": "https://github.com/phpmyadmin/phpmyadmin" }, "license": "GPL-2.0-only", "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "non-feature-branches": ["RELEASE_.*"], "autoload": { "psr-4": { "PhpMyAdmin\\": "libraries/classes", "PhpMyAdmin\\Setup\\": "setup/lib" } }, "autoload-dev": { "psr-4": { "PhpMyAdmin\\Tests\\": "test/classes", "PhpMyAdmin\\Tests\\Selenium\\": "test/selenium/" } }, "repositories": [ { "type": "composer", "url": "https://www.phpmyadmin.net" } ], "require": { "php": ">=5.5.0", "ext-mysqli": "*", "ext-xml": "*", "ext-pcre": "*", "ext-json": "*", "ext-ctype": "*", "ext-hash": "*", "phpmyadmin/sql-parser": "^4.3.2", "phpmyadmin/motranslator": "^4.0", "phpmyadmin/shapefile": "^2.0", "phpseclib/phpseclib": "^2.0", "google/recaptcha": "^1.1", "psr/container": "^1.0", "twig/twig": "^1.34 || ^2.0", "twig/extensions": "~1.5.1", "symfony/expression-language": "^3.2 || ^2.8", "symfony/polyfill-mbstring": "^1.3" }, "conflict": { "phpseclib/phpseclib": "2.0.8", "tecnickcom/tcpdf": "<6.2", "pragmarx/google2fa": "<3.0.1", "bacon/bacon-qr-code": "<1.0", "samyoul/u2f-php-server": "<1.1" }, "suggest": { "ext-openssl": "Cookie encryption", "ext-curl": "Updates checking", "ext-opcache": "Better performance", "ext-zlib": "For gz import and export", "ext-bz2": "For bzip2 import and export", "ext-zip": "For zip import and export", "ext-gd2": "For image transformations", "ext-mbstring": "For best performance", "tecnickcom/tcpdf": "For PDF support", "pragmarx/google2fa": "For 2FA authentication", "bacon/bacon-qr-code": "For 2FA authentication", "samyoul/u2f-php-server": "For FIDO U2F authentication" }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^5.7", "codacy/coverage": "^1.3.0", "phpunit/phpunit-selenium": "~1.2 || ^3.0", "squizlabs/php_codesniffer": "^3.0", "tecnickcom/tcpdf": "^6.3", "pragmarx/google2fa": "^3.0", "bacon/bacon-qr-code": "^1.0", "samyoul/u2f-php-server": "^1.1", "phpmyadmin/coding-standard": "^0.3" }, "extra": { "branch-alias": { "dev-master": "4.9.x-dev" } }, "scripts": { "test": [ "phpcs", "phpunit --color=always" ] } } db/login/view_operations.php000064400000007432151502156020012172 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('tbl_operations.js'); /** * Runs common work */ require './libraries/tbl_common.inc.php'; $url_query .= '&goto=view_operations.php&back=view_operations.php'; $url_params['goto'] = $url_params['back'] = 'view_operations.php'; $operations = new Operations(); /** * Updates if required */ $_message = new Message; $_type = 'success'; if (isset($_POST['submitoptions'])) { if (isset($_POST['new_name'])) { if ($pma_table->rename($_POST['new_name'])) { $_message->addText($pma_table->getLastMessage()); $result = true; $GLOBALS['table'] = $pma_table->getName(); /* Force reread after rename */ $pma_table->getStatusInfo(null, true); $reload = true; } else { $_message->addText($pma_table->getLastError()); $result = false; } } $warning_messages = $operations->getWarningMessagesArray(); } if (isset($result)) { // set to success by default, because result set could be empty // (for example, a table rename) if (empty($_message->getString())) { if ($result) { $_message->addText( __('Your SQL query has been executed successfully.') ); } else { $_message->addText(__('Error')); } // $result should exist, regardless of $_message $_type = $result ? 'success' : 'error'; } if (! empty($warning_messages)) { $_message->addMessagesString($warning_messages); $_message->isError(true); unset($warning_messages); } echo Util::getMessage( $_message, $sql_query, $_type ); } unset($_message, $_type); $url_params['goto'] = 'view_operations.php'; $url_params['back'] = 'view_operations.php'; /** * Displays the page */ ?>
        "; // line 12 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_names"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo " "; // line 16 echo twig_escape_filter($this->env, $this->getAttribute(($context["properties"] ?? null), "type", [], "array"), "html", null, true); echo " "; // line 19 echo twig_escape_filter($this->env, $this->getAttribute(($context["properties"] ?? null), "collation", [], "array"), "html", null, true); echo " "; // line 22 echo $this->getAttribute(($context["properties"] ?? null), "func", [], "array"); echo " env, $this->getAttribute(($context["properties"] ?? null), "type", [], "array"), "html", null, true); echo "\"> "; // line 26 echo $this->getAttribute(($context["properties"] ?? null), "value", [], "array"); echo " "; // line 28 echo " env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 30 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_names"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 33 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_types"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" /> env, $context["column_index"], "html", null, true); echo "]\" value=\""; // line 36 echo twig_escape_filter($this->env, $this->getAttribute(($context["column_collations"] ?? null), $context["column_index"], [], "array"), "html", null, true); echo "\" />
        "; // line 10 echo " "; $this->loadTemplate("columns_definitions/column_name.twig", "columns_definitions/column_attributes.twig", 10)->display(twig_to_array(["column_number" => // line 11 ($context["column_number"] ?? null), "ci" => // line 12 ($context["ci"] ?? null), "ci_offset" => // line 13 ($context["ci_offset"] ?? null), "column_meta" => // line 14 ($context["column_meta"] ?? null), "cfg_relation" => // line 15 ($context["cfg_relation"] ?? null), "max_rows" => // line 16 ($context["max_rows"] ?? null)])); // line 18 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 19 echo " "; // line 22 echo " "; $this->loadTemplate("columns_definitions/column_type.twig", "columns_definitions/column_attributes.twig", 22)->display(twig_to_array(["column_number" => // line 23 ($context["column_number"] ?? null), "ci" => // line 24 ($context["ci"] ?? null), "ci_offset" => // line 25 ($context["ci_offset"] ?? null), "column_meta" => // line 26 ($context["column_meta"] ?? null), "type_upper" => // line 27 ($context["type_upper"] ?? null)])); // line 29 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 30 echo " "; // line 33 echo " "; $this->loadTemplate("columns_definitions/column_length.twig", "columns_definitions/column_attributes.twig", 33)->display(twig_to_array(["column_number" => // line 34 ($context["column_number"] ?? null), "ci" => // line 35 ($context["ci"] ?? null), "ci_offset" => // line 36 ($context["ci_offset"] ?? null), "length_values_input_size" => // line 37 ($context["length_values_input_size"] ?? null), "length_to_display" => // line 38 ($context["length"] ?? null)])); // line 40 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 41 echo " "; // line 44 echo " "; $this->loadTemplate("columns_definitions/column_default.twig", "columns_definitions/column_attributes.twig", 44)->display(twig_to_array(["column_number" => // line 45 ($context["column_number"] ?? null), "ci" => // line 46 ($context["ci"] ?? null), "ci_offset" => // line 47 ($context["ci_offset"] ?? null), "column_meta" => // line 48 ($context["column_meta"] ?? null), "type_upper" => // line 49 ($context["type_upper"] ?? null), "char_editing" => // line 50 ($context["char_editing"] ?? null)])); // line 52 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 53 echo " "; // line 56 echo " "; echo PhpMyAdmin\Charsets::getCollationDropdownBox( // line 57 ($context["dbi"] ?? null), // line 58 ($context["disable_is"] ?? null), (("field_collation[" . // line 59 ($context["column_number"] ?? null)) . "]"), ((("field_" . // line 60 ($context["column_number"] ?? null)) . "_") . (($context["ci"] ?? null) - ($context["ci_offset"] ?? null))), (( !twig_test_empty($this->getAttribute( // line 61 ($context["column_meta"] ?? null), "Collation", [], "array"))) ? ($this->getAttribute(($context["column_meta"] ?? null), "Collation", [], "array")) : (null)), false); // line 63 echo " "; // line 64 $context["ci"] = (($context["ci"] ?? null) + 1); // line 65 echo " "; // line 68 echo " "; $this->loadTemplate("columns_definitions/column_attribute.twig", "columns_definitions/column_attributes.twig", 68)->display(twig_to_array(["column_number" => // line 69 ($context["column_number"] ?? null), "ci" => // line 70 ($context["ci"] ?? null), "ci_offset" => // line 71 ($context["ci_offset"] ?? null), "column_meta" => // line 72 ($context["column_meta"] ?? null), "extracted_columnspec" => // line 73 ($context["extracted_columnspec"] ?? null), "submit_attribute" => // line 74 ($context["submit_attribute"] ?? null), "attribute_types" => // line 75 ($context["attribute_types"] ?? null)])); // line 77 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 78 echo " "; // line 81 echo " "; $this->loadTemplate("columns_definitions/column_null.twig", "columns_definitions/column_attributes.twig", 81)->display(twig_to_array(["column_number" => // line 82 ($context["column_number"] ?? null), "ci" => // line 83 ($context["ci"] ?? null), "ci_offset" => // line 84 ($context["ci_offset"] ?? null), "column_meta" => // line 85 ($context["column_meta"] ?? null)])); // line 87 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 88 echo " "; // line 92 $this->loadTemplate("columns_definitions/column_adjust_privileges.twig", "columns_definitions/column_attributes.twig", 92)->display(twig_to_array(["column_number" => // line 93 ($context["column_number"] ?? null), "ci" => // line 94 ($context["ci"] ?? null), "ci_offset" => // line 95 ($context["ci_offset"] ?? null), "privs_available" => // line 96 ($context["privs_available"] ?? null)])); // line 98 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 99 echo " "; // line 104 $this->loadTemplate("columns_definitions/column_indexes.twig", "columns_definitions/column_attributes.twig", 104)->display(twig_to_array(["column_number" => // line 105 ($context["column_number"] ?? null), "ci" => // line 106 ($context["ci"] ?? null), "ci_offset" => // line 107 ($context["ci_offset"] ?? null), "column_meta" => // line 108 ($context["column_meta"] ?? null)])); // line 110 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 111 echo " "; // line 115 echo " "; $this->loadTemplate("columns_definitions/column_auto_increment.twig", "columns_definitions/column_attributes.twig", 115)->display(twig_to_array(["column_number" => // line 116 ($context["column_number"] ?? null), "ci" => // line 117 ($context["ci"] ?? null), "ci_offset" => // line 118 ($context["ci_offset"] ?? null), "column_meta" => // line 119 ($context["column_meta"] ?? null)])); // line 121 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 122 echo " "; // line 125 echo " "; $this->loadTemplate("columns_definitions/column_comment.twig", "columns_definitions/column_attributes.twig", 125)->display(twig_to_array(["column_number" => // line 126 ($context["column_number"] ?? null), "ci" => // line 127 ($context["ci"] ?? null), "ci_offset" => // line 128 ($context["ci_offset"] ?? null), "max_length" => // line 129 ($context["max_length"] ?? null), "value" => (((($this->getAttribute( // line 130 ($context["column_meta"] ?? null), "Field", [], "array", true, true) && twig_test_iterable( // line 131 ($context["comments_map"] ?? null))) && $this->getAttribute( // line 132 ($context["comments_map"] ?? null), $this->getAttribute(($context["column_meta"] ?? null), "Field", [], "array"), [], "array", true, true))) ? (twig_escape_filter($this->env, $this->getAttribute( // line 133 ($context["comments_map"] ?? null), $this->getAttribute(($context["column_meta"] ?? null), "Field", [], "array"), [], "array"))) : (""))])); // line 135 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 136 echo " "; // line 140 $this->loadTemplate("columns_definitions/column_virtuality.twig", "columns_definitions/column_attributes.twig", 140)->display(twig_to_array(["column_number" => // line 141 ($context["column_number"] ?? null), "ci" => // line 142 ($context["ci"] ?? null), "ci_offset" => // line 143 ($context["ci_offset"] ?? null), "column_meta" => // line 144 ($context["column_meta"] ?? null), "char_editing" => // line 145 ($context["char_editing"] ?? null), "expression" => (($this->getAttribute( // line 146 ($context["column_meta"] ?? null), "Expression", [], "array", true, true)) ? ($this->getAttribute(($context["column_meta"] ?? null), "Expression", [], "array")) : ("")), "options" => // line 147 ($context["options"] ?? null)])); // line 149 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 150 echo " "; // line 165 $this->loadTemplate("columns_definitions/move_column.twig", "columns_definitions/column_attributes.twig", 165)->display(twig_to_array(["column_number" => // line 166 ($context["column_number"] ?? null), "ci" => // line 167 ($context["ci"] ?? null), "ci_offset" => // line 168 ($context["ci_offset"] ?? null), "column_meta" => // line 169 ($context["column_meta"] ?? null), "move_columns" => // line 170 ($context["move_columns"] ?? null), "current_index" => // line 171 ($context["current_index"] ?? null)])); // line 173 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 174 echo " "; // line 180 echo " "; $this->loadTemplate("columns_definitions/mime_type.twig", "columns_definitions/column_attributes.twig", 180)->display(twig_to_array(["column_number" => // line 181 ($context["column_number"] ?? null), "ci" => // line 182 ($context["ci"] ?? null), "ci_offset" => // line 183 ($context["ci_offset"] ?? null), "column_meta" => // line 184 ($context["column_meta"] ?? null), "available_mime" => // line 185 ($context["available_mime"] ?? null), "mime_map" => // line 186 ($context["mime_map"] ?? null)])); // line 188 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 189 echo " "; // line 192 echo " "; $this->loadTemplate("columns_definitions/transformation.twig", "columns_definitions/column_attributes.twig", 192)->display(twig_to_array(["column_number" => // line 193 ($context["column_number"] ?? null), "ci" => // line 194 ($context["ci"] ?? null), "ci_offset" => // line 195 ($context["ci_offset"] ?? null), "column_meta" => // line 196 ($context["column_meta"] ?? null), "available_mime" => // line 197 ($context["available_mime"] ?? null), "mime_map" => // line 198 ($context["mime_map"] ?? null), "type" => "transformation"])); // line 201 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 202 echo " "; // line 205 echo " "; $this->loadTemplate("columns_definitions/transformation_option.twig", "columns_definitions/column_attributes.twig", 205)->display(twig_to_array(["column_number" => // line 206 ($context["column_number"] ?? null), "ci" => // line 207 ($context["ci"] ?? null), "ci_offset" => // line 208 ($context["ci_offset"] ?? null), "column_meta" => // line 209 ($context["column_meta"] ?? null), "mime_map" => // line 210 ($context["mime_map"] ?? null), "type_prefix" => ""])); // line 213 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 214 echo " "; // line 217 echo " "; $this->loadTemplate("columns_definitions/transformation.twig", "columns_definitions/column_attributes.twig", 217)->display(twig_to_array(["column_number" => // line 218 ($context["column_number"] ?? null), "ci" => // line 219 ($context["ci"] ?? null), "ci_offset" => // line 220 ($context["ci_offset"] ?? null), "column_meta" => // line 221 ($context["column_meta"] ?? null), "available_mime" => // line 222 ($context["available_mime"] ?? null), "mime_map" => // line 223 ($context["mime_map"] ?? null), "type" => "input_transformation"])); // line 226 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 227 echo " "; // line 230 echo " "; $this->loadTemplate("columns_definitions/transformation_option.twig", "columns_definitions/column_attributes.twig", 230)->display(twig_to_array(["column_number" => // line 231 ($context["column_number"] ?? null), "ci" => // line 232 ($context["ci"] ?? null), "ci_offset" => // line 233 ($context["ci_offset"] ?? null), "column_meta" => // line 234 ($context["column_meta"] ?? null), "mime_map" => // line 235 ($context["mime_map"] ?? null), "type_prefix" => "input_"])); // line 238 echo " "; $context["ci"] = (($context["ci"] ?? null) + 1); // line 239 echo "
        'DROP VIEW ' . Util::backquote( $GLOBALS['table'] ), 'goto' => 'tbl_structure.php', 'reload' => '1', 'purge' => '1', 'message_to_show' => sprintf( __('View %s has been dropped.'), htmlspecialchars($GLOBALS['table']) ), 'table' => $GLOBALS['table'] ) ); echo '
        '; echo '
        '; echo '' , __('Delete data or table') , ''; echo '
          '; echo $operations->getDeleteDataOrTablelink( $drop_view_url_params, 'DROP VIEW', __('Delete the view (DROP)'), 'drop_view_anchor' ); echo '
        '; echo '
        '; echo '
        '; db/login/templates/login/header.twig000064400000001330151502156020013465 0ustar00

        {{ 'Welcome to %s'|trans|format('phpMyAdmin')|raw }}

        {{ Message_error("There is mismatch between HTTPS indicated on the server and client. This can lead to non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly."|trans) }}
        db/login/templates/login/twofactor/key.twig000064400000000464151502156020015044 0ustar00{% include 'login/twofactor/key-https-warning.twig' %}

        {% trans "Please connect your FIDO U2F device into your computer's USB port. Then confirm login on the device." %}

        db/login/templates/login/twofactor/application.twig000064400000000372151502156020016555 0ustar00

        {% trans "Open the two-factor authentication app on your device to view your authentication code and verify your identity." %}

        db/login/templates/login/twofactor/invalid.twig000064400000000211151502156020015670 0ustar00
        {% trans "The configured two factor authentication is not available, please install missing dependencies." %}
        db/login/templates/login/twofactor/application_configure.twig000064400000001246151502156020020617 0ustar00{{ Url_getHiddenInputs() }} {% if image is defined %}

        {% trans "Please scan following QR code into the two-factor authentication app on your device and enter authentication code it generates." %}

        {% else %}

        {% trans "Please enter following secret/key into the two-factor authentication app on your device and enter authentication code it generates." %}

        {% trans "OTP url:" %} {{ url }}

        {% endif %}

        {% trans "Secret/key:" %} {{ secret }}

        db/login/templates/login/twofactor/key_configure.twig000064400000000532151502156020017101 0ustar00{% include 'login/twofactor/key-https-warning.twig' %}

        {% trans "Please connect your FIDO U2F device into your computer's USB port. Then confirm registration on the device." %}

        db/login/templates/login/twofactor/key-https-warning.twig000064400000000300151502156020017634 0ustar00{% if not is_https %}
        {% trans "You are not using https to access phpMyAdmin, therefore FIDO U2F device will most likely refuse to authenticate you." %}
        {% endif %} db/login/templates/login/twofactor/simple.twig000064400000000065151502156020015542 0ustar00 db/login/templates/login/twofactor.twig000064400000000262151502156020014250 0ustar00
        {{ Url_getHiddenInputs() }} {{ form|raw }} {% if show_submit %} {% endif %}
        db/login/templates/login/footer.twig000064400000000007151502156020013533 0ustar00
        db/login/templates/select_lang.twig000064400000001552151502156020013413 0ustar00
        {{ Url_getHiddenInputs(_form_params) }} {% if use_fieldset %}
        {{ language_title|raw }} {% else %} {% endif %} {% if use_fieldset %}
        {% endif %}
        db/login/templates/div_for_slider_effect.twig000064400000001266151502156020015443 0ustar00{% if initial_sliders_state == 'disabled' %} {% else %} {# Bad hack on the next line. document.write() conflicts with jQuery, hence, opening the
        with PHP itself instead of JavaScript. @todo find a better solution that uses $.append(), the recommended method maybe by using an additional param, the id of the div to append to #}
        db/login/templates/prefs_twofactor_configure.twig000064400000000560151502156020016401 0ustar00

        {% trans "Configure two-factor authentication" %}

        {{ Url_getHiddenInputs() }} {{ form|raw }}
        db/login/templates/start_and_number_of_rows_panel.twig000064400000001432151502156020017374 0ustar00
        0 -%} max="{{ unlim_num_rows - 1 }}" {%- endif %} value="{{ pos }}" />
        db/login/templates/select_all.twig000064400000000605151502156020013240 0ustar00{% trans 'With selected:' %} {% trans 'With selected:' %} db/login/templates/header_location.twig000064400000001244151502156020014251 0ustar00{# Manage HTML redirection #} - - - db/login/templates/console/bookmark_content.twig000064400000001774151502156020016142 0ustar00
        {{ welcome_message }}
        {% for bookmark in bookmarks %} {% endfor %} db/login/templates/console/display.twig000064400000022573151502156020014250 0ustar00
        {# Console toolbar #} {% include 'console/toolbar.twig' with { 'parent_div_classes': 'collapsed', 'content_array': [ {0: 'switch_button console_switch', 1: 'Console'|trans, 'image': image}, ['button clear', 'Clear'|trans], ['button history', 'History'|trans], ['button options', 'Options'|trans], cfg_bookmark is defined ? ['button bookmarks', 'Bookmarks'|trans] : null, ['button debug hide', 'Debug SQL'|trans] ] } only %} {# Console messages #}
        {% trans 'Press Ctrl+Enter to execute query' %} {% trans 'Press Enter to execute query' %}
        {% if sql_history is not empty %} {% for record in sql_history|reverse %} {% endfor %} {% endif %}
        {# Drak the console with other cards over it #}
        {# Debug SQL card #}
        {% include 'console/toolbar.twig' with { 'parent_div_classes': '', 'content_array': [ ['button order order_asc', 'ascending'|trans], ['button order order_desc', 'descending'|trans], ['text', 'Order:'|trans], ['switch_button', 'Debug SQL'|trans], ['button order_by sort_count', 'Count'|trans], ['button order_by sort_exec', 'Execution order'|trans], ['button order_by sort_time', 'Time taken'|trans], ['text', 'Order by:'|trans], ['button group_queries', 'Group queries'|trans], ['button ungroup_queries', 'Ungroup queries'|trans] ] } only %}
        {% include 'console/query_action.twig' with { 'parent_div_classes': 'debug_query action_content', 'content_array': [ ['action collapse', 'Collapse'|trans], ['action expand', 'Expand'|trans], ['action dbg_show_trace', 'Show trace'|trans], ['action dbg_hide_trace', 'Hide trace'|trans], ['text count hide', 'Count'|trans], ['text time', 'Time taken'|trans] ] } only %}
        {% if cfg_bookmark %}
        {% include 'console/toolbar.twig' with { 'parent_div_classes': '', 'content_array': [ ['switch_button', 'Bookmarks'|trans], ['button refresh', 'Refresh'|trans], ['button add', 'Add'|trans] ] } only %}
        {{ bookmark_content|raw }}
        {% include 'console/toolbar.twig' with { 'parent_div_classes': '', 'content_array': [ ['switch_button', 'Add bookmark'|trans] ] } only %}
        {% endif %} {# Options card #}
        {% include 'console/toolbar.twig' with { 'parent_div_classes': '', 'content_array': [ ['switch_button', 'Options'|trans], ['button default', 'Set default'|trans] ] } only %}





        {# Templates for console message actions #} {% include 'console/query_action.twig' with { 'parent_div_classes': 'query_actions', 'content_array': [ ['action collapse', 'Collapse'|trans], ['action expand', 'Expand'|trans], ['action requery', 'Requery'|trans], ['action edit', 'Edit'|trans], ['action explain', 'Explain'|trans], ['action profiling', 'Profiling'|trans], cfg_bookmark is defined ? ['action bookmark', 'Bookmark'|trans] : null, ['text failed', 'Query failed'|trans], {0: 'text targetdb', 1: 'Database'|trans, 'extraSpan': ''}, {0: 'text query_time', 1: 'Queried time'|trans, 'extraSpan': ''} ] } only %}
        db/login/templates/console/query_action.twig000064400000000572151502156020015300 0ustar00
        {% for content in content_array %} {% if content is defined %} {{ content[1] }} {% if content['extraSpan'] is defined %} : {{ content['extraSpan'] }} {% endif %} {% endif %} {% endfor %}
        db/login/templates/console/toolbar.twig000064400000000513151502156020014233 0ustar00
        {% for content in content_array %} {% if content is defined %}
        {{ content['image'] is defined ? content['image']|raw }} {{ content[1] }}
        {% endif %} {% endfor %}
        db/login/templates/prefs_twofactor.twig000064400000003526151502156020014345 0ustar00

        {% trans "Two-factor authentication status" %} {{ Util_showDocu('two_factor') }}

        {% if enabled %} {% if num_backends == 0 %}

        {% trans "Two-factor authentication is not available, please install optional dependencies to enable authentication backends." %}

        {% trans "Following composer packages are missing:" %}

          {% for item in missing %}
        • {{ item.dep }} ({{ item.class }})
        • {% endfor %}
        {% else %} {% if backend_id %}

        {% trans "Two-factor authentication is available and configured for this account." %}

        {% else %}

        {% trans "Two-factor authentication is available, but not configured for this account." %}

        {% endif %} {% endif %} {% else %}

        {% trans "Two-factor authentication is not available, enable phpMyAdmin configuration storage to use it." %}

        {% endif %}
        {% if backend_id %}

        {{ backend_name }}

        {% trans "You have enabled two factor authentication." %}

        {{ backend_description }}

        {{ Url_getHiddenInputs() }}
        {% elseif num_backends > 0 %}

        {% trans "Configure two-factor authentication" %}

        {{ Url_getHiddenInputs() }} {% for backend in backends %} {% endfor %}
        {% endif %} db/login/templates/database/designer/table_list.twig000064400000002671151502156020016624 0ustar00
        {# end id_scroll_tab #}
        {% trans 'Number of tables:' %} 0
        {# end layer_menu #} db/login/templates/database/designer/edit_delete_pages.twig000064400000001071151502156020020121 0ustar00
        {{ Url_getHiddenInputs(db) }}
        {% include 'database/designer/page_selector.twig' with { 'pdfwork': pdfwork, 'pages': pages } only %}
        db/login/templates/database/designer/new_relation_panel.twig000064400000010713151502156020020343 0ustar00
        {% trans 'Create relationship' %}
        FOREIGN KEY
        on delete
        on update
        db/login/templates/database/designer/schema_export.twig000064400000000667151502156020017346 0ustar00
        {{ Url_getHiddenInputs(db) }} {{ Plugins_getChoice('Schema', 'export_type', export_list, 'format') }} {{ Plugins_getOptions('Schema', export_list) }}
        db/login/templates/database/designer/js_fields.twig000064400000000270151502156020016435 0ustar00{# Invisible characters will make javascript crash #} {% apply spaceless %} {% endapply %} db/login/templates/database/designer/canvas.twig000064400000000146151502156020015750 0ustar00
        db/login/templates/database/designer/where_query_panel.twig000064400000010246151502156020020215 0ustar00
        WHERE
        {% trans 'Operator' %}
        {% trans 'Value' %}
        {% trans 'subquery' %}
        db/login/templates/database/designer/rename_to_panel.twig000064400000004430151502156020017625 0ustar00
        {% trans 'Rename to' %}
        {% trans 'New name' %}
        db/login/templates/database/designer/query_details.twig000064400000000713151502156020017347 0ustar00
        {% trans 'Active options' %}
        {{ Url_getHiddenInputs(db) }}
        db/login/templates/database/designer/database_tables.twig000064400000020252151502156020017573 0ustar00{% for designerTable in tables %} {% set i = loop.index0 %} {% set t_n_url = designerTable.getDbTableString()|escape('url') %} {% set db = designerTable.getDatabaseName() %} {% set db_url = db|escape('url') %} {% set t_n = designerTable.getDbTableString() %} {% set table_name = designerTable.getTableName()|escape('html') %} {% if has_query %} {% endif %} {% if has_query %} {% endif %} {% set display_field = designerTable.getDisplayField() %} {% for j in 0..tab_column[t_n]['COLUMN_ID']|length - 1 %} {% set col_name = tab_column[t_n]['COLUMN_NAME'][j] %} {% set tmp_column = t_n ~ '.' ~ tab_column[t_n]['COLUMN_NAME'][j] %} {% set click_field_param = [ designerTable.getTableName()|escape('url'), tab_column[t_n]['COLUMN_NAME'][j]|url_encode ] %} {% if not designerTable.supportsForeignkeys() %} {% set click_field_param = click_field_param|merge([tables_pk_or_unique_keys[tmp_column] is defined ? 1 : 0]) %} {% else %} {# if foreign keys are supported, it's not necessary that the index is a primary key #} {% set click_field_param = click_field_param|merge([tables_all_keys[tmp_column] is defined ? 1 : 0]) %} {% endif %} {% set click_field_param = click_field_param|merge([db]) %} {% if has_query %} {% endif %} {% if has_query %} {% endif %} {% endfor %}
        {{ tab_pos[t_n] is not defined or tab_pos[t_n]['V'] is not empty ? 'v' : '>' }} {{ designerTable.getDatabaseName() }} {{ designerTable.getTableName() }}
        {% endfor %} db/login/templates/database/designer/having_query_panel.twig000064400000013525151502156020020362 0ustar00
        HAVING
        {% trans 'Operator' %}
        {% trans 'Operator' %}
        {% trans 'Value' %}
        {% trans 'subquery' %}
        db/login/templates/database/designer/page_selector.twig000064400000000457151502156020017316 0ustar00 db/login/templates/database/designer/side_menu.twig000064400000017446151502156020016460 0ustar00{% if not visual_builder %}
        {{ selected_page == null ? 'Untitled'|trans : selected_page }} {{ selected_page == null ? '*' : '' }}
        {% endif %} db/login/templates/database/designer/options_panel.twig000064400000030245151502156020017352 0ustar00
        WHERE
        {% trans 'Relationship operator' %}
        {% trans 'Value' %}
        {% trans 'subquery' %}
        {% trans 'Rename to' %}
        {% trans 'New name' %}
        {% trans 'Aggregate' %}
        {% trans 'Operator' %}
        GROUP BY
        ORDER BY
        HAVING
        {% trans 'Operator' %}
        {% trans 'Relationship operator' %}
        {% trans 'Value' %}
        {% trans 'subquery' %}
        db/login/templates/database/designer/page_save_as.twig000064400000002605151502156020017114 0ustar00
        {{ Url_getHiddenInputs(db) }}
        {% include 'database/designer/page_selector.twig' with { 'pdfwork': pdfwork, 'pages': pages } only %}
        {{ Util_getRadioFields( 'save_page', { 'same': 'Save to selected page'|trans, 'new': 'Create a page and save to it'|trans }, 'same', true ) }}
        db/login/templates/database/designer/aggregate_query_panel.twig000064400000006302151502156020021027 0ustar00
        {% trans 'Aggregate' %}
        {% trans 'Operator' %}
        db/login/templates/database/designer/delete_relation_panel.twig000064400000003175151502156020021020 0ustar00
        {% trans 'Delete relationship' %}
        db/login/templates/database/tracking/untracked_tables.twig000064400000003352151502156020020013 0ustar00

        {% trans 'Untracked tables' %}

        {{ Url_getHiddenInputs(db) }} {% for table_name in untracked_tables %} {% if Tracker_getVersion(db, table_name) == -1 %} {% endif %} {% endfor %}
        {% trans 'Table' %} {% trans 'Action' %}
        {{ Util_getIcon('eye', 'Track table'|trans) }}
        {% include 'select_all.twig' with { 'pma_theme_image': pma_theme_image, 'text_dir': text_dir, 'form_name': 'untrackedForm' } only %} {{ Util_getButtonOrImage( 'submit_mult', 'mult_submit', 'Track table'|trans, 'eye', 'track' ) }}
        db/login/templates/database/tracking/tracked_tables.twig000064400000011346151502156020017452 0ustar00

        {% trans 'Tracked tables' %}

        {{ Url_getHiddenInputs(db) }} {% for version in versions %} {% endfor %}
        {% trans 'Table' %} {% trans 'Last version' %} {% trans 'Created' %} {% trans 'Updated' %} {% trans 'Status' %} {% trans 'Action' %} {% trans 'Show' %}
        {{ version.version }} {{ version.date_created }} {{ version.date_updated }} {{ version.status_button|raw }} {{ Util_getIcon('b_drop', 'Delete tracking'|trans) }} {{ Util_getIcon('b_versions', 'Versions'|trans) }} {{ Util_getIcon('b_report', 'Tracking report'|trans) }} {{ Util_getIcon('b_props', 'Structure snapshot'|trans) }}
        {% include 'select_all.twig' with { 'pma_theme_image': pma_theme_image, 'text_dir': text_dir, 'form_name': 'trackedForm' } only %} {{ Util_getButtonOrImage( 'submit_mult', 'mult_submit', 'Delete tracking'|trans, 'b_drop', 'delete_tracking' ) }}
        db/login/templates/database/qbe/footer_options.twig000064400000001070151502156020016512 0ustar00
        {% if type == 'row' %} {% trans 'Add/Delete criteria rows' %}: {% else %} {% trans 'Add/Delete columns' %}: {% endif %}
        db/login/templates/database/qbe/sort_select_cell.twig000064400000000650151502156020016771 0ustar00 db/login/templates/database/qbe/column_select_cell.twig000064400000000635151502156020017302 0ustar00 db/login/templates/database/qbe/sort_order_select_cell.twig000064400000000523151502156020020163 0ustar00 db/login/templates/database/create_table.twig000064400000001542151502156020015310 0ustar00
        {% if Util_showIcons('ActionLinksMode') -%} {{ Util_getImage('b_table_add') }} {%- endif %} {% trans "Create table" %} {{ Url_getHiddenInputs(db) }}
        {% trans "Name" %}:
        {% trans "Number of columns" %}:
        db/login/templates/database/structure/browse_table.twig000064400000000115151502156020017401 0ustar00 {{ title|raw }} db/login/templates/database/structure/show_create_row.twig000064400000001065151502156020020130 0ustar00
        {{ title }} {% for object in db_objects %} {% endfor %}
        {{ raw_title }} {{ 'Create %s'|trans|format(raw_title) }}
        {{ Core_mimeDefaultFunction(object) }} {{ Core_mimeDefaultFunction(dbi.getTable(db, object).showCreate()) }}
        db/login/templates/database/structure/browse_table_label.twig000064400000000140151502156020020536 0ustar00 {{ truename }} db/login/templates/database/structure/search_table.twig000064400000000112151502156020017342 0ustar00 {{ title|raw }} db/login/templates/database/structure/print_view_data_dictionary_link.twig000064400000000427151502156020023360 0ustar00 db/login/templates/database/structure/structure_table_row.twig000064400000017203151502156020021035 0ustar00 {{ browse_table_label|raw }} {{ tracking_icon|raw }} {% if server_slave_status %} {{ ignored ? Util_getImage('s_cancel', 'Not replicated'|trans) }} {{ do ? Util_getImage('s_success', 'Replicated'|trans) }} {% endif %} {# Favorite table anchor #} {% if num_favorite_tables > 0 %} {# Check if current table is already in favorite list #} {% set fav_params = { 'db': db, 'ajax_request': true, 'favorite_table': current_table['TABLE_NAME'], ((already_favorite ? 'remove' : 'add') ~ '_favorite'): true } %} {% include 'database/structure/favorite_anchor.twig' with { 'table_name_hash': md5(current_table['TABLE_NAME']), 'db_table_name_hash': md5(db ~ '.' ~ current_table['TABLE_NAME']), 'fav_params': fav_params, 'already_favorite': already_favorite, 'titles': titles } only %} {% endif %} {{ browse_table|raw }} {{ titles['Structure']|raw }} {{ search_table|raw }} {% if not db_is_system_schema %} {{ titles['Insert']|raw }} {{ empty_table|raw }} {{ titles['Drop']|raw }} {% endif %} {% if current_table['TABLE_ROWS'] is defined and (current_table['ENGINE'] != null or table_is_view) %} {# Get the row count #} {% set row_count = Util_formatNumber(current_table['TABLE_ROWS'], 0) %} {# Content to be appended into 'tbl_rows' cell. If row count is approximate, display it as an anchor to get real count. #} {% if approx_rows %} ~{{ row_count }} {% else %} {{ row_count }} {% endif %} {{ show_superscript|raw }} {% if not (properties_num_columns > 1) %} {% if current_table['ENGINE'] is not empty %} {{ current_table['ENGINE'] }} {% elseif table_is_view %} {% trans 'View' %} {% endif %} {% if collation|length > 0 %} {{ collation|raw }} {% endif %} {% endif %} {% if is_show_stats %} {{ formatted_size }} {{ unit }} {{ overhead|raw }} {% endif %} {% if not (show_charset > 1) %} {% if charset|length > 0 %} {{ charset|raw }} {% endif %} {% endif %} {% if show_comment %} {% set comment = current_table['Comment'] %} {% if comment|length > limit_chars %} {{ comment|slice(0, limit_chars) }} ... {% else %} {{ comment }} {% endif %} {% endif %} {% if show_creation %} {{ create_time ? Util_localisedDate(strtotime(create_time)) : '-' }} {% endif %} {% if show_last_update %} {{ update_time ? Util_localisedDate(strtotime(update_time)) : '-'}} {% endif %} {% if show_last_check %} {{ check_time ? Util_localisedDate(strtotime(check_time)) : '-' }} {% endif %} {% elseif table_is_view %} - {% trans 'View' %} --- {% if is_show_stats %} - - {% endif %} {% if show_charset %} {% endif %} {% if show_comment %} {% endif %} {% if show_creation %} - {% endif %} {% if show_last_update %} - {% endif %} {% if show_last_check %} - {% endif %} {% else %} {% set count = 0 %} {% if properties_num_columns %} {% set count = count + 2 %} {% endif %} {% if is_show_stats %} {% set count = count + 2 %} {% endif %} {% if show_charset %} {% set count = count + 1 %} {% endif %} {% if show_comment %} {% set count = count + 1 %} {% endif %} {% if show_creation %} {% set count = count + 1 %} {% endif %} {% if show_last_update %} {% set count = count + 1 %} {% endif %} {% if show_last_check %} {% set count = count + 1 %} {% endif %} {% if db_is_system_schema %} {% set action_colspan = 3 %} {% else %} {% set action_colspan = 6 %} {% endif %} {% if num_favorite_tables > 0 %} {% set action_colspan = action_colspan + 1 %} {% endif %} {% set colspan_for_structure = action_colspan + 3 %} {% trans 'in use' %} {% endif %} db/login/templates/database/structure/empty_table.twig000064400000000275151502156020017245 0ustar00 {{ title|raw }} db/login/templates/database/structure/body_for_table_summary.twig000064400000006655151502156020021477 0ustar00 {% set num_tables_trans -%} {% trans %}%s table{% plural num_tables %}%s tables{% endtrans %} {%- endset %} {{ num_tables_trans|format(Util_formatNumber(num_tables, 0)) }} {% if server_slave_status %} {% trans 'Replication' %} {% endif %} {% set sum_colspan = db_is_system_schema ? 4 : 7 %} {% if num_favorite_tables == 0 %} {% set sum_colspan = sum_colspan - 1 %} {% endif %} {% trans 'Sum' %} {% set row_count_sum = Util_formatNumber(sum_entries, 0) %} {# If a table shows approximate rows count, display update-all-real-count anchor. #} {% set row_sum_url = [] %} {% if approx_rows is defined %} {% set row_sum_url = { 'ajax_request': true, 'db': db, 'real_row_count': 'true', 'real_row_count_all': 'true' } %} {% endif %} {% if approx_rows %} {% set cell_text -%} ~ {{- row_count_sum -}} {%- endset %} {% else %} {% set cell_text = row_count_sum %} {% endif %} {{ cell_text }} {% if not (properties_num_columns > 1) %} {# MySQL <= 5.5.2 #} {% set default_engine = dbi.fetchValue('SELECT @@storage_engine;') %} {% if default_engine is empty %} {# MySQL >= 5.5.3 #} {% set default_engine = dbi.fetchValue('SELECT @@default_storage_engine;') %} {% endif %} {{ default_engine }} {% if db_collation is not empty %} {{ db_collation }} {% endif %} {% endif %} {% if is_show_stats %} {% set sum = Util_formatByteDown(sum_size, 3, 1) %} {% set sum_formatted = sum[0] %} {% set sum_unit = sum[1] %} {{ sum_formatted }} {{ sum_unit }} {% set overhead = Util_formatByteDown(overhead_size, 3, 1) %} {% set overhead_formatted = overhead[0] %} {% set overhead_unit = overhead[1] %} {{ overhead_formatted }} {{ overhead_unit }} {% endif %} {% if show_charset %} {{ db_charset }} {% endif %} {% if show_comment %} {% endif %} {% if show_creation %} {{ create_time_all ? Util_localisedDate(strtotime(create_time_all)) : '-' }} {% endif %} {% if show_last_update %} {{ update_time_all ? Util_localisedDate(strtotime(update_time_all)) : '-' }} {% endif %} {% if show_last_check %} {{ check_time_all ? Util_localisedDate(strtotime(check_time_all)) : '-' }} {% endif %} db/login/templates/database/structure/table_header.twig000064400000006623151502156020017342 0ustar00
        {{ Url_getHiddenInputs(db) }}
        {% if replication %} {% endif %} {% if db_is_system_schema %} {% set action_colspan = 3 %} {% else %} {% set action_colspan = 6 %} {% endif %} {% if num_favorite_tables > 0 %} {% set action_colspan = action_colspan + 1 %} {% endif %} {# larger values are more interesting so default sort order is DESC #} {% if not (properties_num_columns > 1) %} {% endif %} {% if is_show_stats %} {# larger values are more interesting so default sort order is DESC #} {# larger values are more interesting so default sort order is DESC #} {% endif %} {% if show_charset %} {% endif %} {% if show_comment %} {% endif %} {% if show_creation %} {# newer values are more interesting so default sort order is DESC #} {% endif %} {% if show_last_update %} {# newer values are more interesting so default sort order is DESC #} {% endif %} {% if show_last_check %} {# newer values are more interesting so default sort order is DESC #} {% endif %} {% for structure_table_row in structure_table_rows %} {% include 'database/structure/structure_table_row.twig' with structure_table_row only %} {% endfor %} {% if body_for_table_summary %} {% include 'database/structure/body_for_table_summary.twig' with body_for_table_summary only %} {% endif %}
        {{ Util_sortableTableHeader('Table'|trans, 'table') }}{% trans 'Replication' %} {% trans 'Action' %} {{ Util_sortableTableHeader('Rows'|trans, 'records', 'DESC') }} {{ Util_showHint(Sanitize_sanitize( 'May be approximate. Click on the number to get the exact count. See [doc@faq3-11]FAQ 3.11[/doc].'|trans )) }} {{ Util_sortableTableHeader('Type'|trans, 'type') }} {{ Util_sortableTableHeader('Collation'|trans, 'collation') }}{{ Util_sortableTableHeader('Size'|trans, 'size', 'DESC') }}{{ Util_sortableTableHeader('Overhead'|trans, 'overhead', 'DESC') }}{{ Util_sortableTableHeader('Charset'|trans, 'charset') }}{{ Util_sortableTableHeader('Comment'|trans, 'comment') }}{{ Util_sortableTableHeader('Creation'|trans, 'creation', 'DESC') }}{{ Util_sortableTableHeader('Last update'|trans, 'last_update', 'DESC') }}{{ Util_sortableTableHeader('Last check'|trans, 'last_check', 'DESC') }}
        {% if check_all_tables %} {% include 'database/structure/check_all_tables.twig' with check_all_tables only %} {% endif %}
        db/login/templates/database/structure/favorite_anchor.twig000064400000000563151502156020020111 0ustar00 {{ already_favorite ? titles['Favorite']|raw : titles['NoFavorite']|raw }} db/login/templates/database/structure/show_create.twig000064400000001675151502156020017250 0ustar00

        {% trans 'Showing create queries' %}

        {% set views = [] %} {% set tables = [] %} {% for object in db_objects %} {% if dbi.getTable(db, object).isView() %} {% set views = views|merge([object]) %} {% else %} {% set tables = tables|merge([object]) %} {% endif %} {% endfor %} {% if tables is not empty %} {% include 'database/structure/show_create_row.twig' with { 'db': db, 'title': 'Tables'|trans, 'raw_title': 'Table', 'db_objects': tables, 'dbi': dbi } only %} {% endif %} {% if views is not empty %} {% include 'database/structure/show_create_row.twig' with { 'db': db, 'title': 'Views'|trans, 'raw_title': 'View', 'db_objects': views, 'dbi': dbi } only %} {% endif %}
        db/login/templates/database/structure/tracking_icon.twig000064400000000424151502156020017546 0ustar00 {% if is_tracked -%} {{ Util_getImage('eye', 'Tracking is active.'|trans) }} {%- else -%} {{ Util_getImage('eye_grey', 'Tracking is not active.'|trans) }} {%- endif %} db/login/templates/database/structure/check_all_tables.twig000064400000005175151502156020020203 0ustar00 db/login/templates/database/search/results.twig000064400000004254151502156020015647 0ustar00 {% for row in rows %} {% if row.result_count > 0 %} {% set url_params = { 'db': db, 'table': row.table, 'goto': 'db_sql.php', 'pos': 0, 'is_js_confirmed': 0 } %} {% else %} {% endif %} {% endfor %}
        {{ 'Search results for "%s" %s:'|format( criteria_search_string, search_type_description )|raw }}
        {% set result_message %} {% trans %} %1$s match in %2$s {% plural row.result_count %} %1$s matches in %2$s {% endtrans %} {% endset %} {{ result_message|format(row.result_count, row.table)|raw }} {% trans 'Browse' %} {% trans 'Delete' %}
        {% if criteria_tables|length > 1 %}

        {% trans %} Total: {{ count }} match {% plural result_total %} Total: {{ count }} matches {% endtrans %}

        {% endif %} db/login/templates/database/search/selection_form.twig000064400000004777151502156020017170 0ustar00
        {{ Url_getHiddenInputs(db) }}
        {% trans 'Search in database' %}

        {% trans 'Find:' %} {# 4th parameter set to true to add line breaks #} {# 5th parameter set to false to avoid htmlspecialchars() escaping in the label since we have some HTML in some labels #} {{ Util_getRadioFields( 'criteriaSearchType', choices, criteria_search_type, true, false ) }}
        {% trans 'Inside tables:' %}

        {% trans 'Select all' %} / {% trans 'Unselect all' %}

        {# Inputbox for column name entry #}

        db/login/templates/database/search/result_divs.twig000064400000001006151502156020016501 0ustar00{# These two table-image and table-link elements display the table name in browse search results #}
        {# Div for browsing results #}
        {# This browse-results div is used to load the browse and delete results in the db search #}
        {# This sqlqueryform div is used to load the delete form in the db search #}
        {# Toggle query box link #} db/login/templates/database/central_columns/table_navigation.twig000064400000003422151502156020021373 0ustar00 {% if pos - max_rows >= 0 %} {% endif %} {% if nb_total_page > 1 %} {% endif %} {% if pos + max_rows < total_rows %} {% endif %} db/login/templates/database/central_columns/add_column.twig000064400000001630151502156020020171 0ustar00
        {{ icon|raw }}
        {{ Url_getHiddenInputs(db)}} {{ table_drop_down|raw }}
        db/login/templates/database/central_columns/edit_table_header.twig000064400000000410151502156020021463 0ustar00 {% for header in headers %} {% endfor %} db/login/templates/database/multi_table_query/form.twig000064400000020104151502156020017362 0ustar00{% include 'secondary_tabs.twig' with { 'url_params': { 'db': db }, 'sub_tabs': [ { 'link': 'db_multi_table_query.php', 'text': 'Multi-table query'|trans }, { 'link': 'db_qbe.php', 'text': 'Query by example'|trans } ] } only %} {{ Util_getDivForSliderEffect('query_div', 'Query window'|trans, 'open') }}
        {% for table in tables %} {% endfor %} {% for id in 0..default_no_of_columns %} {% if id == 0 %}
        {% trans 'Structure' %}
        {{ header }}
        {% trans 'Sort' %} {% trans 'Ascending' %} {% trans 'Descending' %}
        Op
        X {% if id == 0 %}{% endif %} {% endfor %}
        {% apply spaceless %} {% endapply %}
        {# Slider div #}
        db/login/templates/dropdown.twig000064400000000766151502156020012775 0ustar00 db/login/templates/export/alias_item.twig000064400000000413151502156020014556 0ustar00 {{ type }} {{ name }} db/login/templates/export/alias_add.twig000064400000003101151502156020014345 0ustar00
        {% trans 'Define new aliases' %}
        db/login/templates/display/export/hidden_inputs.twig000064400000001436151502156020016757 0ustar00{% if export_type == 'server' %} {{ Url_getHiddenInputs('', '', 1) }} {% elseif export_type == 'database' %} {{ Url_getHiddenInputs(db, '', 1) }} {% else %} {{ Url_getHiddenInputs(db, table, 1) }} {% endif %} {# Just to keep this value for possible next display of this form after saving on server #} {% if single_table is not empty %} {% endif %} {# The export method (quick, custom or custom-no-form) #} {% if sql_query is not empty %} {% endif %} db/login/templates/display/export/options_output_radio.twig000064400000000401151502156020020402 0ustar00
      • db/login/templates/display/export/select_options.twig000064400000001150151502156020017145 0ustar00

        {% trans 'Select all' %} / {% trans 'Unselect all' %}

        db/login/templates/display/export/options_output_format.twig000064400000000762151502156020020606 0ustar00
      • db/login/templates/display/export/options_output.twig000064400000003642151502156020017236 0ustar00

        {% trans 'Output:' %}

        • {% if export_type != 'server' %}
        • {% endif %}
          • {% if save_dir is not empty %} {{ options_output_save_dir|raw }} {% endif %} {{ options_output_format|raw }} {% if is_encoding_supported %} {{ options_output_charset|raw }} {% endif %} {{ options_output_compression|raw }} {% if export_type == 'server' or export_type == 'database' %} {{ options_output_separate_files|raw }} {% endif %}
        • {{ options_output_radio|raw }}
        ' )|raw }}
        db/login/templates/display/export/options_output_separate_files.twig000064400000000706151502156020022302 0ustar00
      • db/login/templates/display/export/template_options.twig000064400000000363151502156020017506 0ustar00 {% for template in templates %} {% endfor %} db/login/templates/display/export/options_output_save_dir.twig000064400000001120151502156020021077 0ustar00
      • db/login/templates/display/export/options_output_compression.twig000064400000001512151502156020021651 0ustar00{% if is_zip or is_gzip %}
      • {% else %} {% endif %} db/login/templates/display/export/selection.twig000064400000000504151502156020016102 0ustar00
        {% if export_type == 'server' %}

        {% trans 'Databases:' %}

        {% elseif export_type == 'database' %}

        {% trans 'Tables:' %}

        {% endif %} {% if multi_values is not empty %} {{ multi_values|raw }} {% endif %}
        db/login/templates/display/export/template_loading.twig000064400000002312151502156020017424 0ustar00

        {% trans 'Export templates:' %}

        {% trans 'New template:' %}

        {% trans 'Existing templates:' %}

        db/login/templates/display/export/method.twig000064400000001570151502156020015401 0ustar00{% if export_method != 'custom-no-form' %}

        {% trans 'Export method:' %}

        {% endif %} db/login/templates/display/export/options_format.twig000064400000001630151502156020017161 0ustar00

        {% trans 'Format-specific options:' %}

        {% trans 'Scroll down to fill in the options for the selected format and ignore the options for other formats.' %}

        {{ options|raw }}
        {% if can_convert_kanji %} {# Japanese encoding setting #}

        {% trans 'Encoding Conversion:' %}

        {% include 'encoding/kanji_encoding_form.twig' %}
        {% endif %}
        0 %} onclick="check_time_out({{ exec_time_limit }})" {%- endif %}>
        db/login/templates/display/export/options_output_charset.twig000064400000001021151502156020020734 0ustar00
      • db/login/templates/display/export/format_dropdown.twig000064400000000151151502156020017317 0ustar00

        {% trans 'Format:' %}

        {{ dropdown|raw }}
        db/login/templates/display/export/option_header.twig000064400000000717151502156020016743 0ustar00 db/login/templates/display/export/options_rows.twig000064400000003174151502156020016670 0ustar00

        {% trans 'Rows:' %}

        db/login/templates/display/export/options_quick_export.twig000064400000001554151502156020020413 0ustar00

        {% trans 'Output:' %}

        db/login/templates/display/import/javascript.twig000064400000020032151502156020016252 0ustar00$( function() { {# Add event when user click on "Go" button #} $("#buttonGo").bind("click", function() { {# Hide form #} $("#upload_form_form").css("display", "none"); {% if handler != 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin' %} {# Some variable for javascript #} {% set ajax_url = 'import_status.php?id=' ~ upload_id ~ Url_getCommonRaw({ 'import_status': 1 }, '&') %} {% set promot_str = Sanitize_jsFormat( 'The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers.'|trans, false ) %} {% set statustext_str = Sanitize_escapeJsString('%s of %s'|trans) %} {% set second_str = Sanitize_jsFormat('%s/sec.'|trans, false) %} {% set remaining_min = Sanitize_jsFormat('About %MIN min. %SEC sec. remaining.'|trans, false) %} {% set remaining_second = Sanitize_jsFormat('About %SEC sec. remaining.'|trans, false) %} {% set processed_str = Sanitize_jsFormat( 'The file is being processed, please be patient.'|trans, false ) %} {% set import_url = Url_getCommonRaw({'import_status': 1}, '&') %} {% set upload_html %} {% apply spaceless %}
        ajax clock {{ Sanitize_jsFormat('Uploading your import file…'|trans, false) -}}
        {% endapply %} {% endset %} {# Start output #} var finished = false; var percent = 0.0; var total = 0; var complete = 0; var original_title = parent && parent.document ? parent.document.title : false; var import_start; var perform_upload = function () { new $.getJSON( "{{ ajax_url|raw }}", {}, function(response) { finished = response.finished; percent = response.percent; total = response.total; complete = response.complete; if (total==0 && complete==0 && percent==0) { $("#upload_form_status_info").html('ajax clock {{ promot_str|raw }}'); $("#upload_form_status").css("display", "none"); } else { var now = new Date(); now = Date.UTC( now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()) + now.getMilliseconds() - 1000; var statustext = PMA_sprintf( "{{ statustext_str|raw }}", formatBytes( complete, 1, PMA_messages.strDecimalSeparator ), formatBytes( total, 1, PMA_messages.strDecimalSeparator ) ); if ($("#importmain").is(":visible")) { {# Show progress UI #} $("#importmain").hide(); $("#import_form_status") .html('{{ upload_html|raw }}') .show(); import_start = now; } else if (percent > 9 || complete > 2000000) { {# Calculate estimated time #} var used_time = now - import_start; var seconds = parseInt(((total - complete) / complete) * used_time / 1000); var speed = PMA_sprintf( "{{ second_str|raw }}", formatBytes(complete / used_time * 1000, 1, PMA_messages.strDecimalSeparator) ); var minutes = parseInt(seconds / 60); seconds %= 60; var estimated_time; if (minutes > 0) { estimated_time = "{{ remaining_min|raw }}" .replace("%MIN", minutes) .replace("%SEC", seconds); } else { estimated_time = "{{ remaining_second|raw }}" .replace("%SEC", seconds); } statustext += "
        " + speed + "

        " + estimated_time; } var percent_str = Math.round(percent) + "%"; $("#status").animate({width: percent_str}, 150); $(".percentage").text(percent_str); {# Show percent in window title #} if (original_title !== false) { parent.document.title = percent_str + " - " + original_title; } else { document.title = percent_str + " - " + original_title; } $("#statustext").html(statustext); } if (finished == true) { if (original_title !== false) { parent.document.title = original_title; } else { document.title = original_title; } $("#importmain").hide(); {# Loads the message, either success or mysql error #} $("#import_form_status") .html('ajax clock {{ processed_str|raw }}') .show(); $("#import_form_status").load("import_status.php?message=true&{{ import_url|raw }}"); PMA_reloadNavigation(); {# If finished #} } else { setTimeout(perform_upload, 1000); } }); }; setTimeout(perform_upload, 1000); {% else %} {# No plugin available #} {% set image_tag -%} ajax clock {{- Sanitize_jsFormat( 'Please be patient, the file is being uploaded. Details about the upload are not available.'|trans, false ) -}} {{- Util_showDocu('faq', 'faq2-9') -}} {%- endset %} $('#upload_form_status_info').html('{{ image_tag|raw }}'); $("#upload_form_status").css("display", "none"); {% endif %} }); }); db/login/templates/display/import/import.twig000064400000021025151502156020015421 0ustar00
        ajax clock
        {% if import_type == 'server' %} {{ Url_getHiddenInputs('', '', 1) }} {% elseif import_type == 'database' %} {{ Url_getHiddenInputs(db, '', 1) }} {% else %} {{ Url_getHiddenInputs(db, table, 1) }} {% endif %}

        {% trans 'File to import:' %}

        {# We don't have show anything about compression, when no supported #} {% if compressions is not empty %}

        {{ 'File may be compressed (%s) or uncompressed.'|trans|format(compressions|join(', ')) }}
        {% trans 'A compressed file\'s name must end in .[format].[compression]. Example: .sql.zip' %}

        {% endif %}
        {% if is_upload and upload_dir is not empty %}
        • {{ Util_getBrowseUploadFileBlock(max_upload_size) }} {% trans 'You may also drag and drop a file on any page.' %}
        • {{ Util_getSelectUploadFileBlock( import_list, upload_dir ) }}
        {% elseif is_upload %} {{ Util_getBrowseUploadFileBlock(max_upload_size) }}

        {% trans 'You may also drag and drop a file on any page.' %}

        {% elseif not is_upload %} {{ Message_notice('File uploads are not allowed on this server.'|trans) }} {% elseif upload_dir is not empty %} {{ Util_getSelectUploadFileBlock( import_list, upload_dir ) }} {% endif %}
        {# Charset of file #} {% if is_encoding_supported %} {% else %} {{ Charsets_getCharsetDropdownBox( dbi, disable_is, 'charset_of_file', 'charset_of_file', 'utf8', false ) }} {% endif %}

        {% trans 'Partial import:' %}

        {% if timeout_passed is defined and timeout_passed %}
        {{ 'Previous import timed out, after resubmitting will continue from position %d.'|trans|format(offset) }}
        {% endif %}
        {% if not (timeout_passed is defined and timeout_passed) %}
        {% else %} {# If timeout has passed, do not show the Skip dialog to avoid the risk of someone entering a value here that would interfere with "skip" #} {% endif %}

        {% trans 'Other options:' %}

        {{ Util_getFKCheckbox() }}

        {% trans 'Format:' %}

        {{ Plugins_getChoice('Import', 'format', import_list) }}

        {% trans 'Format-specific options:' %}

        {% trans 'Scroll down to fill in the options for the selected format and ignore the options for other formats.' %}

        {{ Plugins_getOptions('Import', import_list) }}
        {# Japanese encoding setting #} {% if can_convert_kanji %}

        {% trans 'Encoding Conversion:' %}

        {% include 'encoding/kanji_encoding_form.twig' %}
        {% endif %}
        db/login/templates/display/results/multi_row_operations_form.twig000064400000000673151502156020021613 0ustar00{% if delete_link == delete_row or delete_link == kill_process %}
        {{ Url_getHiddenInputs(db, table, 1) }} {% endif %}
        db/login/templates/display/results/options_block.twig000064400000010505151502156020017144 0ustar00 {{ Url_getHiddenInputs({ 'db': db, 'table': table, 'sql_query': sql_query, 'goto': goto, 'display_options_form': 1 }) }} {{ Util_getDivForSliderEffect('', 'Options'|trans) }}
        {# pftext means "partial or full texts" (done to reduce line lengths #} {{ Util_getRadioFields( 'pftext', { 'P': 'Partial texts'|trans, 'F': 'Full texts'|trans }, pftext, true, true, '', 'pftext_' ~ unique_id ) }}
        {% if relwork and displaywork %}
        {{ Util_getRadioFields( 'relational_display', { 'K': 'Relational key'|trans, 'D': 'Display column for relationships'|trans }, relational_display, true, true, '', 'relational_display_' ~ unique_id ) }}
        {% endif %}
        {% include 'checkbox.twig' with { 'html_field_name': 'display_binary', 'label': 'Show binary contents'|trans, 'checked': display_binary is not empty, 'onclick': false, 'html_field_id': 'display_binary_' ~ unique_id } only %} {% include 'checkbox.twig' with { 'html_field_name': 'display_blob', 'label': 'Show BLOB contents'|trans, 'checked': display_blob is not empty, 'onclick': false, 'html_field_id': 'display_blob_' ~ unique_id } only %}
        {# I would have preferred to name this "display_transformation". This is the only way I found to be able to keep this setting sticky per SQL query, and at the same time have a default that displays the transformations. #}
        {% include 'checkbox.twig' with { 'html_field_name': 'hide_transformation', 'label': 'Hide browser transformation'|trans, 'checked': hide_transformation is not empty, 'onclick': false, 'html_field_id': 'hide_transformation_' ~ unique_id } only %}
        {% if possible_as_geometry %}
        {{ Util_getRadioFields( 'geoOption', { 'GEOM': 'Geometry'|trans, 'WKT': 'Well Known Text'|trans, 'WKB': 'Well Known Binary'|trans }, geo_option, true, true, '', 'geoOption_' ~ unique_id ) }}
        {% else %}
        {{ possible_as_geometry }} {{ Util_getRadioFields( 'geoOption', { 'WKT': 'Well Known Text'|trans, 'WKB': 'Well Known Binary'|trans }, geo_option, true, true, '', 'geoOption_' ~ unique_id ) }}
        {% endif %}
        {# slider effect div #} db/login/templates/display/results/show_all_checkbox.twig000064400000001346151502156020017760 0ustar00 db/login/templates/display/results/table_navigation_button.twig000064400000001127151502156020021200 0ustar00 db/login/templates/display/results/value_display.twig000064400000000134151502156020017135 0ustar00 db/login/templates/display/results/empty_display.twig000064400000000054151502156020017160 0ustar00 db/login/templates/display/results/additional_fields.twig000064400000001002151502156020017725 0ustar00 {# Do not change the position when changing the number of rows #} {% trans 'Number of rows:' %} {{ Util_getDropdown( 'session_max_rows', number_of_rows_choices, max_rows, '', 'autosubmit', number_of_rows_placeholder ) }} db/login/templates/display/results/null_display.twig000064400000000346151502156020017000 0ustar00 db/login/templates/display/results/comment_for_row.twig000064400000001017151502156020017474 0ustar00{% if comments_map[fields_meta.table] is defined and comments_map[fields_meta.table][fields_meta.name] is defined %} {% if comments_map[fields_meta.table][fields_meta.name]|length > limit_chars %} {{ comments_map[fields_meta.table][fields_meta.name]|slice(0, limit_chars) }}… {% else %} {{ comments_map[fields_meta.table][fields_meta.name] }} {% endif %} {% endif %} db/login/templates/server/engines/engine.twig000064400000002246151502156020015337 0ustar00

        {{ Util_getImage('b_engine') }} {{ title }} {{ Util_showMySQLDocu(help_page) }}

        {{ comment }}

        {% if info_pages is not empty and info_pages is iterable %}

        [ {% if page is empty %} {% trans 'Variables' %} {% else %} {% trans 'Variables' %} {% endif %} {% for current, label in info_pages %} | {% if page is defined and page == current %} {{ label }} {% else %} {{ label }} {% endif %} {% endfor %} ]

        {% endif %} {% if page_output is not empty %} {{ page_output|raw }} {% else %}

        {{ support }}

        {{ variables|raw }} {% endif %} db/login/templates/server/engines/engines.twig000064400000001360151502156020015516 0ustar00
        {{ Url_getHiddenInputs(db, table) }}
        {{ Url_getHiddenInputs(db, table) }} {{ input_for_real_end|raw }}
        {{ value|raw }} NULL
        {% for engine, details in engines %} {% endfor %}
        {% trans 'Storage Engine' %} {% trans 'Description' %}
        {{ details['Engine'] }} {{ details['Comment'] }}
        db/login/templates/server/collations/charsets.twig000064400000002036151502156020016422 0ustar00
        {% for current_charset in mysql_charsets %} {% for current_collation in mysql_collations[current_charset] %} {% endfor %} {% endfor %}
        {% trans 'Collation' %} {% trans 'Description' %}
        {{ current_charset }} {% if mysql_charsets_desc[current_charset] is not empty %} ({{ mysql_charsets_desc[current_charset] }}) {% endif %}
        {{ current_collation }} {{ Charsets_getCollationDescr(current_collation) }}
        db/login/templates/server/variables/session_variable_row.twig000064400000000354151502156020020627 0ustar00 ({% trans 'Session value' %})  {{ value }} db/login/templates/server/variables/link_template.twig000064400000000450151502156020017235 0ustar00 {{ Util_getIcon('b_save', 'Save'|trans) }} {{ Util_getIcon('b_close', 'Cancel'|trans) }} {{ Util_getImage('b_help', 'Documentation'|trans, { 'class': 'hide', 'id': 'docImage' }) }} db/login/templates/server/variables/variable_table_head.twig000064400000000350151502156020020321 0ustar00 {% trans 'Action' %} {% trans 'Variable' %} {% trans 'Value' %} db/login/templates/server/variables/variable_row.twig000064400000002044151502156020017062 0ustar00 {% if editable %} {{ Util_getIcon('b_edit', 'Edit'|trans) }} {% else %} {{ Util_getIcon('bd_edit', 'Edit'|trans) }} {% endif %} {% if doc_link != null %} {{ Util_showMySQLDocu(doc_link[1], false, doc_link[2] ~ '_' ~ doc_link[0], true) }} {{ name|e|replace({'_': ' '})|raw }} {% else %} {{ name|replace({'_': ' '}) }} {% endif %} {% if is_html_formatted == false %} {{ value|e|replace({',': ',​'})|raw }} {% else %} {{ value|raw }} {% endif %} db/login/templates/server/binlog/log_selector.twig000064400000002142151502156020016370 0ustar00
        {{ Url_getHiddenInputs(url_params) }}
        {% trans 'Select binary log to view' %} {% set full_size = 0 %} {{ binary_logs|length }} {% trans 'Files' %}, {% if full_size > 0 %} {{ Util_formatByteDown(full_size)|join(' ') }} {% endif %}
        db/login/templates/server/binlog/log_row.twig000064400000000617151502156020015364 0ustar00 {{ value['Log_name'] }} {{ value['Pos'] }} {{ value['Event_type'] }} {{ value['Server_id'] }} {{- value['Orig_log_pos'] is defined ? value['Orig_log_pos'] : value['End_log_pos'] -}} {{ Util_formatSql(value['Info'], not dontlimitchars) }} db/login/templates/server/databases/create.twig000064400000003622151502156020015633 0ustar00
        • {% if is_create_db_priv %}

          {{ Util_showMySQLDocu('CREATE_DATABASE') }}

          {{ Url_getHiddenInputs('', '', 5) }} {% if dbstats is not empty %} {% endif %} {{ Charsets_getCollationDropdownBox( dbi, disable_is, 'db_collation', null, server_collation, true ) }}
          {% else %} {# db creation no privileges message #}

          {{ Util_getImage('b_newdb') }} {% trans 'Create database' %} {{ Util_showMySQLDocu('CREATE_DATABASE') }}

          {{ Util_getImage( 's_error', '', {'hspace': 2, 'border': 0, 'align': 'middle'} ) }} {% trans 'No Privileges' %} {% endif %}
        db/login/templates/server/databases/databases_footer.twig000064400000004765151502156020017706 0ustar00 {% if is_superuser or allow_user_drop_database %} {% endif %} {% trans 'Total' %}: {{- database_count -}} {% for stat_name, stat in column_order %} {% if stat_name in first_database|keys %} {% if stat['format'] is same as('byte') %} {% set byte_format = Util_formatByteDown(stat['footer'], 3, 1) %} {% set value = byte_format[0] %} {% set unit = byte_format[1] %} {% elseif stat['format'] is same as('number') %} {% set value = Util_formatNumber(stat['footer'], 0) %} {% else %} {% set value = htmlentities(stat['footer'], 0) %} {% endif %} {% if stat['description_function'] is defined %} {{ value }} {% else %} {{ value }} {% endif %} {% if stat['format'] is same as('byte') %} {{ unit }} {% endif %} {% endif %} {% endfor %} {% if master_replication %} {% endif %} {% if slave_replication %} {% endif %}
        {# Footer buttons #} {% if is_superuser or allow_user_drop_database %} {% include 'select_all.twig' with { 'pma_theme_image': pma_theme_image, 'text_dir': text_dir, 'form_name': 'dbStatsForm' } only %} {{ Util_getButtonOrImage( '', 'mult_submit ajax', 'Drop'|trans, 'b_deltbl' ) }} {% endif %} {# Enable statistics #} {% if dbstats is empty %} {{ Message_notice('Note: Enabling the database statistics here might cause heavy traffic between the web server and the MySQL server.'|trans) }} {% endif %} db/login/templates/server/databases/table_header.twig000064400000002751151502156020016771 0ustar00 {% if is_superuser or allow_user_drop_database %} {% endif %} {% trans 'Database' %} {{ sort_by == 'SCHEMA_NAME' ? Util_getImage( 's_' ~ sort_order, sort_order_text ) }} {% for stat_name, stat in column_order %} {% if stat_name in first_database|keys %} {% set url_params = url_params|merge({ 'sort_by': stat_name, 'sort_order': sort_by == stat_name and sort_order == 'desc' ? 'asc' : 'desc' }) %} {{ stat['disp_name'] }} {{ sort_by == stat_name ? Util_getImage( 's_' ~ sort_order, sort_order_text ) }} {% endif %} {% endfor %} {% if master_replication %} {% trans 'Master replication' %} {% endif %} {% if slave_replication %} {% trans 'Slave replication' %} {% endif %} {% trans 'Action' %} db/login/templates/server/databases/table_row.twig000064400000005220151502156020016342 0ustar00 {% if is_superuser or allow_user_drop_database %} {% endif %} {{ current['SCHEMA_NAME'] }} {% for stat_name, stat in column_order %} {% if stat_name in current|keys %} {% if stat['format'] is same as('byte') %} {% set byte_format = Util_formatByteDown(current[stat_name], 3, 1) %} {% set value = byte_format[0] %} {% set unit = byte_format[1] %} {% elseif stat['format'] is same as('number') %} {% set value = Util_formatNumber(current[stat_name], 0) %} {% else %} {% set value = htmlentities(current[stat_name], 0) %} {% endif %} {% if stat['description_function'] is defined %} {{ value }} {% else %} {{ value }} {% endif %} {% if stat['format'] is same as('byte') %} {{ unit }} {% endif %} {% endif %} {% endfor %} {% if master_replication_status %} {{ master_replication|raw }} {% endif %} {% if slave_replication_status %} {{ slave_replication|raw }} {% endif %} {{ Util_getIcon('s_rights', 'Check privileges'|trans) }} db/login/templates/server/databases/databases_header.twig000064400000002443151502156020017627 0ustar00
        {{ Util_getListNavigator( database_count, pos, url_params, 'server_databases.php', 'frame_content', max_db_list ) }}
        {{ Url_getHiddenInputs(url_params) }} {% set url_params = url_params|merge({ 'sort_by': 'SCHEMA_NAME', 'sort_order': sort_by == 'SCHEMA_NAME' and sort_order == 'asc' ? 'desc' : 'asc' }) %}
        {% include 'server/databases/table_header.twig' with { 'url_params': url_params, 'sort_by': sort_by, 'sort_order': sort_order, 'sort_order_text': sort_order == 'asc' ? 'Ascending'|trans : 'Descending'|trans, 'column_order': column_order, 'first_database': first_database, 'master_replication': master_replication, 'slave_replication': slave_replication, 'is_superuser': is_superuser, 'allow_user_drop_database': allow_user_drop_database } only %} db/login/templates/server/databases/index.twig000064400000001301151502156020015467 0ustar00{# Displays the sub-page heading #} {% include 'server/sub_page_header.twig' with { 'type': dbstats ? 'database_statistics' : 'databases' } only %} {# Displays For Create database #} {% if show_create_db %} {% include 'server/databases/create.twig' with { 'is_create_db_priv': is_create_db_priv, 'dbstats': dbstats, 'db_to_create': db_to_create, 'server_collation': server_collation, 'dbi': dbi, 'disable_is': disable_is } only %} {% endif %} {% include 'filter.twig' with {'filter_value': ''} only %} {# Displays the page #} {% if databases is not null %} {{ databases|raw }} {% else %}

        {% trans 'No databases' %}

        {% endif %} db/login/templates/server/sub_page_header.twig000064400000002243151502156020015534 0ustar00{# array contains Sub page icon and text #} {% set header = { 'variables': { 'image': 's_vars', 'text': 'Server variables and settings'|trans }, 'engines': { 'image': 'b_engine', 'text': 'Storage engines'|trans }, 'plugins': { 'image': 'b_plugin', 'text': 'Plugins'|trans }, 'binlog': { 'image': 's_tbl', 'text': 'Binary log'|trans }, 'collations': { 'image': 's_asci', 'text': 'Character sets and collations'|trans }, 'replication': { 'image': 's_replication', 'text': 'Replication'|trans }, 'database_statistics': { 'image': 's_db', 'text': 'Databases statistics'|trans }, 'databases': { 'image': 's_db', 'text': 'Databases'|trans }, 'privileges': { 'image': 'b_usrlist', 'text': 'Privileges'|trans } } %}

        {% if is_image|default(true) %} {{ Util_getImage(header[type]['image']) }} {% else %} {{ Util_getIcon(header[type]['image']) }} {% endif %} {{ header[type]['text'] }} {{ link is defined ? Util_showMySQLDocu(link) }}

        db/login/templates/server/plugins/section.twig000064400000002431151502156020015563 0ustar00
        {% for plugin in plugin_list %} {% endfor %}
        {{ plugin_type }}
        {% trans 'Plugin' %} {% trans 'Description' %} {% trans 'Version' %} {% trans 'Author' %} {% trans 'License' %}
        {{ plugin['plugin_name'] }} {% if not plugin['is_active'] %} {% trans 'disabled' %} {% endif %} {{ plugin['plugin_description'] }} {{ plugin['plugin_type_version'] }} {{ plugin['plugin_author'] }} {{ plugin['plugin_license'] }}
        db/login/templates/server/plugins/section_links.twig000064400000000303151502156020016757 0ustar00 db/login/templates/filter.twig000064400000000461151502156020012416 0ustar00
        {% trans "Filters" %}
        db/login/templates/checkbox.twig000064400000000561151502156020012720 0ustar00 db/login/templates/theme_preview.twig000064400000000773151502156020014002 0ustar00 db/login/templates/radio_fields.twig000064400000000621151502156020013553 0ustar00{% if class is not empty %}
        {% endif %} {% if is_line_break %}
        {% endif %} {% if class is not empty %}
        {% endif %} db/login/templates/secondary_tabs.twig000064400000000226151502156020014130 0ustar00
          {% for tab in sub_tabs %} {{ Util_getHtmlTab(tab, url_params) }} {% endfor %}
        db/login/templates/javascript/display.twig000064400000000472151502156020014746 0ustar00 db/login/templates/prefs_autoload.twig000064400000001276151502156020014145 0ustar00
        db/login/templates/encoding/kanji_encoding_form.twig000064400000001427151502156020016707 0ustar00
        db/login/templates/error/report_form.twig000064400000002314151502156020014617 0ustar00

        {% trans %} This report automatically includes data about the error and information about relevant configuration settings. It will be sent to the phpMyAdmin team for debugging the error. {% endtrans %}

        {{ report_data|raw }}
        {{ hidden_inputs|raw }} {{ hidden_fields|raw }}
        db/login/templates/table/browse_foreigners/column_element.twig000064400000000650151502156020020752 0ustar00 {{ is_selected ? '' }} {% if nowrap %} {{ keyname }} {% else %} {{ description }} {% endif %} {{ is_selected ? '' }} db/login/templates/table/browse_foreigners/show_all.twig000064400000000337151502156020017556 0ustar00{% if foreign_data.disp_row is iterable and (show_all and foreign_data.the_total > max_rows) %} {% endif %} db/login/templates/table/tracking/create_version.twig000064400000007302151502156020017033 0ustar00
        {{ Url_getHiddenInputs(db) }} {% for selected_table in selected %} {% endfor %}
        {% if selected|length == 1 %} {{ 'Create version %1$s of %2$s'|trans|format( last_version + 1, db ~ '.' ~ selected[0] ) }} {% else %} {{ 'Create version %1$s'|trans|format(last_version + 1) }} {% endif %}

        {% trans 'Track these data definition statements:' %}

        {% if type == 'both' or type == 'table' %} ALTER TABLE
        RENAME TABLE
        CREATE TABLE
        DROP TABLE
        {% endif %} {% if type == 'both' %}
        {% endif %} {% if type == 'both' or type == 'view' %} ALTER VIEW
        CREATE VIEW
        DROP VIEW
        {% endif %}
        CREATE INDEX
        DROP INDEX

        {% trans 'Track these data manipulation statements:' %}

        INSERT
        UPDATE
        DELETE
        TRUNCATE
        db/login/templates/table/tracking/selectable_tables.twig000064400000001260151502156020017455 0ustar00
        {{ Url_getHiddenInputs(db, table) }}
        db/login/templates/table/tracking/structure_snapshot_indexes.twig000064400000002306151502156020021520 0ustar00

        {% trans 'Indexes' %}

        {% for index in indexes %} {% endfor %}
        {% trans 'Keyname' %} {% trans 'Type' %} {% trans 'Unique' %} {% trans 'Packed' %} {% trans 'Column' %} {% trans 'Cardinality' %} {% trans 'Collation' %} {% trans 'Null' %} {% trans 'Comment' %}
        {{ index['Key_name'] }} {{ index['Index_type'] }} {{ index['Non_unique'] == 0 ? 'Yes'|trans : 'No'|trans }} {{ index['Packed'] != '' ? 'Yes'|trans : 'No'|trans }} {{ index['Column_name'] }} {{ index['Cardinality'] }} {{ index['Collation'] }} {{ index['Null'] }} {{ index['Comment'] }}
        db/login/templates/table/tracking/activate_deactivate.twig000064400000002173151502156020020015 0ustar00
        {{ Url_getHiddenInputs(db, table) }}
        {% if action == 'activate' %} {% set legend = 'Activate tracking for %s'|trans %} {% set value = 'activate_now' %} {% set button = 'Activate now'|trans %} {% elseif action == 'deactivate' %} {% set legend = 'Deactivate tracking for %s'|trans %} {% set value = 'deactivate_now' %} {% set button = 'Deactivate now'|trans %} {% else %} {% set legend = '' %} {% set value = '' %} {% set button = '' %} {% endif %} {{ legend|format(db ~ '.' ~ table) }}
        db/login/templates/table/tracking/report_table.twig000064400000001757151502156020016515 0ustar00 {% for entry in entries %} {% endfor %}
        {% trans %}#{% context %}Number{% endtrans %} {% trans 'Date' %} {% trans 'Username' %} {{ header_message }} {% trans 'Action' %}
        {{ entry.line_number }} {{ entry.date }} {{ entry.username }} {{ entry.formated_statement|raw }} {{ drop_image_or_text|raw }}
        db/login/templates/table/tracking/structure_snapshot_columns.twig000064400000004454151502156020021547 0ustar00

        {% trans 'Structure' %}

        {% set index = 1 %} {% for field in columns %} {% set index = index + 1 %} {% endfor %}
        {% trans %}#{% context %}Number{% endtrans %} {% trans 'Column' %} {% trans 'Type' %} {% trans 'Collation' %} {% trans 'Null' %} {% trans 'Default' %} {% trans 'Extra' %} {% trans 'Comment' %}
        {{ index }} {{ field['Field'] }} {% if field['Key'] == 'PRI' %} {{ Util_getImage('b_primary', 'Primary'|trans) }} {% elseif field['Key'] is not empty %} {{ Util_getImage('bd_primary', 'Index'|trans) }} {% endif %} {{ field['Type'] }} {{ field['Collation'] }} {{ field['Null'] == 'YES' ? 'Yes'|trans : 'No'|trans }} {% if field['Default'] is defined %} {% set extracted_columnspec = Util_extractColumnSpec(field['Type']) %} {% if extracted_columnspec['type'] == 'bit' %} {# here, $field['Default'] contains something like b'010' #} {{ Util_convertBitDefaultValue(field['Default']) }} {% else %} {{ field['Default'] }} {% endif %} {% else %} {% if field['Null'] == 'YES' %} NULL {% else %} {% trans %}None{% context %}None for default{% endtrans %} {% endif %} {% endif %} {{ field['Extra'] }} {{ field['Comment'] }}
        db/login/templates/table/index_form.twig000064400000020663151502156020014360 0ustar00
        {{ Url_getHiddenInputs(form_params) }}
        {{ index.generateIndexChoiceSelector(create_edit_table)|raw }}
        {{ Util_getDivForSliderEffect('indexoptions', 'Advanced Options'|trans) }}
        {{ index.generateIndexTypeSelector()|raw }}
        {% set spatial_types = [ 'geometry', 'point', 'linestring', 'polygon', 'multipoint', 'multilinestring', 'multipolygon', 'geomtrycollection' ] %} {% for column in index.getColumns() %} {% endfor %} {% if add_fields > 0 %} {% for i in range(1, add_fields) %} {% endfor %} {% endif %}
        {% trans 'Column' %} {% trans 'Size' %}
        db/login/templates/table/insert/continue_insertion_form.twig000064400000001447151502156020020472 0ustar00
        {{ Url_getHiddenInputs(db, table) }} {% if has_where_clause %} {% for key_id, where_clause in where_clause_array %} {% endfor %} {% endif %} {% set insert_rows %} {% endset %} {{ 'Continue insertion with %s rows'|trans|format(insert_rows)|raw }}
        db/login/templates/table/structure/move_columns_dialog.twig000064400000000464151502156020020310 0ustar00

        {% trans 'Move the columns by dragging them up and down.' %}

        {{ Url_getHiddenInputs(db, table) }}
          db/login/templates/table/structure/display_table_stats.twig000064400000006353151502156020020320 0ustar00
          {% trans 'Information' %} {% if showtable['TABLE_COMMENT'] %}

          {% trans 'Table comments:' %} {{ showtable['TABLE_COMMENT'] }}

          {% endif %} {% if not tbl_is_view and not db_is_system_schema %} {% if index_size is defined %} {% endif %} {% if free_size is defined %} {% endif %} {% if tot_size is defined and mergetable == false %} {% endif %} {# Optimize link if overhead #} {% if free_size is defined and (tbl_storage_engine == 'MYISAM' or tbl_storage_engine == 'ARIA' or tbl_storage_engine == 'MARIA' or tbl_storage_engine == 'BDB') %} {% endif %}
          {% trans 'Space usage' %}
          {% trans 'Data' %} {{ data_size }} {{ data_unit }}
          {% trans 'Index' %} {{ index_size }} {{ index_unit }}
          {% trans 'Overhead' %} {{ free_size }} {{ free_unit }}
          {% trans 'Effective' %} {{ effect_size }} {{ effect_unit }}
          {% trans 'Total' %} {{ tot_size }} {{ tot_unit }}
          {% endif %} {% include 'table/structure/row_stats_table.twig' with { 'showtable': showtable, 'tbl_collation': tbl_collation, 'is_innodb': is_innodb, 'mergetable': mergetable, 'avg_size': avg_size is defined ? avg_size : null, 'avg_unit': avg_unit is defined ? avg_unit : null } only %}
          db/login/templates/table/structure/action_row_in_structure_table.twig000064400000002007151502156020022377 0ustar00
        • {% if type == 'text' or type == 'blob' or tbl_storage_engine == 'ARCHIVE' or has_field %} {{ titles['No' ~ action]|raw }} {% else %} {{ titles[action]|raw }} {% endif %}
        • db/login/templates/table/structure/display_partitions.twig000064400000016123151502156020020203 0ustar00
          {% trans 'Partitions' %} {{ Util_showMySQLDocu('partitioning') }} {% if partitions is empty %} {{ Message_notice('No partitioning defined!'|trans) }} {% else %}

          {% trans 'Partitioned by:' %} {{ partition_method }}({{ partition_expression }})

          {% if has_sub_partitions %}

          {% trans 'Sub partitioned by:' %} {{ sub_partition_method }}({{ sub_partition_expression }})

          {% endif %} {% if has_description %} {% endif %} {% for partition in partitions %} {% if has_sub_partitions %} {% else %} {% endif %} {% if has_description %} {% endif %} {% for action, icon in action_icons %} {% endfor %} {% if has_sub_partitions %} {% for sub_partition in partition.getSubPartitions() %} {% if has_description %} {% endif %} {% endfor %} {% endif %} {% endfor %}
          # {% trans 'Partition' %}{% trans 'Expression' %}{% trans 'Rows' %} {% trans 'Data length' %} {% trans 'Index length' %} {% trans 'Comment' %} {% trans 'Action' %}
          {{ partition.getOrdinal() }} {{ partition.getOrdinal() }}{{ partition.getName() }} {{- partition.getExpression() -}} {{- partition.getMethod() == 'LIST' ? ' IN (' : ' < ' -}} {{- partition.getDescription() -}} {{- partition.getMethod() == 'LIST' ? ')' -}} {{ partition.getRows() }} {% set data_length = Util_formatByteDown( partition.getDataLength(), 3, 1 ) %} {{ data_length[0] }} {{ data_length[1] }} {% set index_length = Util_formatByteDown( partition.getIndexLength(), 3, 1 ) %} {{ index_length[0] }} {{ index_length[1] }} {{ partition.getComment() }} {{ icon|raw }}
          {{ sub_partition.getOrdinal() }} {{ sub_partition.getName() }}{{ sub_partition.getRows() }} {% set data_length = Util_formatByteDown( sub_partition.getDataLength(), 3, 1 ) %} {{ data_length[0] }} {{ data_length[1] }} {% set index_length = Util_formatByteDown( sub_partition.getIndexLength(), 3, 1 ) %} {{ index_length[0] }} {{ index_length[1] }} {{ sub_partition.getComment() }}
          {% endif %}

          db/login/templates/table/structure/table_structure_row.twig000064400000004420151502156020020355 0ustar00 {{ rownum }} {{ extracted_columnspec['displayed_type']|raw }} {% if relation_commwork and relation_mimework and browse_mime and mime_map[row['Field']]['mimetype'] is defined %}
          MIME: {{ mime_map[row['Field']]['mimetype']|replace({'_': '/'})|lower }} {% endif %}
          {% if field_charset is not empty %} {{ field_charset }} {% endif %} {{ attribute }} {{ row['Null'] == 'YES' ? 'Yes'|trans : 'No'|trans }} {% if row['Default'] is not null %} {% if extracted_columnspec['type'] == 'bit' %} {{ Util_convertBitDefaultValue(row['Default']) }} {% else %} {{ row['Default']|raw }} {% endif %} {% else %} {% trans %}None{% context %}None for default{% endtrans %} {% endif %} {% if show_column_comments %} {{ comments }} {% endif %} {{ row['Extra']|upper }} {% if not tbl_is_view and not db_is_system_schema %} {{ titles['Change']|raw }} {{ titles['Drop']|raw }} {% endif %} db/login/templates/table/structure/display_structure.twig000064400000022466151502156020020056 0ustar00
          {{ Url_getHiddenInputs(db, table) }}
          {# Table header #} {% include 'table/structure/table_structure_header.twig' with { 'db_is_system_schema': db_is_system_schema, 'tbl_is_view': tbl_is_view, 'show_column_comments': show_column_comments } only %} {# Table body #} {% set rownum = 0 %} {% set columns_list = [] %} {% for row in fields %} {% set rownum = rownum + 1 %} {% set columns_list = columns_list|merge([row['Field']]) %} {% set field_charset = row['Collation'] %} {% set extracted_columnspec = Util_extractColumnSpec(row['Type']) %} {% set attribute = extracted_columnspec['attribute'] %} {% if strpos(row['Extra'], 'on update CURRENT_TIMESTAMP') is not same as(false) %} {% set attribute = 'on update CURRENT_TIMESTAMP' %} {% endif %} {% if row['Default'] is null %} {% if row['Null'] == 'YES' %} {% set row = row|merge({'Default': 'NULL'}) %} {% endif %} {% else %} {% set row = row|merge({'Default': row['Default']|e}) %} {% endif %} {% set field_name = row['Field']|e %} {% set displayed_field_name = field_name %} {# For column comments #} {% set comments = '' %} {# Underline commented fields and display a hover-title (CSS only) #} {% if comments_map[row['Field']] is defined %} {% set displayed_field_name -%} {{- field_name|raw -}} {%- endset %} {% set comments = comments_map[row['Field']] %} {% endif %} {% if primary and primary.hasColumn(field_name) %} {% set displayed_field_name = displayed_field_name ~ Util_getImage( 'b_primary', 'Primary'|trans ) %} {% endif %} {% if field_name in columns_with_index %} {% set displayed_field_name = displayed_field_name ~ Util_getImage( 'bd_primary', 'Index'|trans ) %} {% endif %} {% include 'table/structure/table_structure_row.twig' with { 'row': row, 'rownum': rownum, 'displayed_field_name': preg_replace( '/[\\x00-\\x1F]/', '⁑', displayed_field_name ), 'type_nowrap': Util_getClassForType(extracted_columnspec['type']), 'extracted_columnspec': extracted_columnspec, 'attribute': attribute, 'tbl_is_view': tbl_is_view, 'db_is_system_schema': db_is_system_schema, 'url_query': url_query, 'titles': titles, 'table': table, 'tbl_storage_engine': tbl_storage_engine, 'field_charset': field_charset, 'comments': comments, 'show_column_comments': show_column_comments, 'relation_commwork': relation_commwork, 'relation_mimework': relation_mimework, 'browse_mime': browse_mime } only %} {% if not tbl_is_view and not db_is_system_schema %} {% include 'table/structure/actions_in_table_structure.twig' with { 'row': row, 'rownum': rownum, 'extracted_columnspec': extracted_columnspec, 'type': extracted_columnspec['print_type'] is not empty ? extracted_columnspec['print_type'], 'tbl_storage_engine': tbl_storage_engine, 'primary': primary, 'field_name': field_name, 'url_query': url_query, 'titles': titles, 'columns_with_unique_index': columns_with_unique_index, 'is_in_central_columns': row['Field'] in central_list ? true : false, 'central_columns_work': central_columns_work, 'table': table, 'hide_structure_actions': hide_structure_actions, 'mysql_int_version': mysql_int_version } only %} {% endif %} {% endfor %}
          {% include 'table/structure/check_all_table_column.twig' with { 'pma_theme_image': pma_theme_image, 'text_dir': text_dir, 'tbl_is_view': tbl_is_view, 'db_is_system_schema': db_is_system_schema, 'tbl_storage_engine': tbl_storage_engine, 'central_columns_work': central_columns_work } only %}
          {% include 'table/structure/move_columns_dialog.twig' with { 'db': db, 'table': table } only %} {# Work on the table #} {% if not tbl_is_view and not db_is_system_schema %} {% include 'table/structure/add_column.twig' with { 'columns_list': columns_list, 'db': db, 'table': table } only %} {% endif %} {# Displays indexes #} {% if not tbl_is_view and not db_is_system_schema and 'ARCHIVE' != tbl_storage_engine %} {{ Index_getHtmlForDisplayIndexes() }} {% endif %} {# Display partition details #} {% if have_partitioning %} {# Detect partitioning #} {% if partition_names is not empty and partition_names[0] is not null %} {% set partitions = Partition_getPartitions(db, table) %} {% set first_partition = partitions[0] %} {% set range_or_list = first_partition.getMethod() == 'RANGE' or first_partition.getMethod() == 'RANGE COLUMNS' or first_partition.getMethod() == 'LIST' or first_partition.getMethod() == 'LIST COLUMNS' %} {% set sub_partitions = first_partition.getSubPartitions() %} {% set has_sub_partitions = first_partition.hasSubPartitions() %} {% if has_sub_partitions %} {% set first_sub_partition = sub_partitions[0] %} {% endif %} {% set action_icons = { 'ANALYZE': Util_getIcon('b_search', 'Analyze'|trans), 'CHECK': Util_getIcon('eye', 'Check'|trans), 'OPTIMIZE': Util_getIcon('normalize', 'Optimize'|trans), 'REBUILD': Util_getIcon('s_tbl', 'Rebuild'|trans), 'REPAIR': Util_getIcon('b_tblops', 'Repair'|trans), 'TRUNCATE': Util_getIcon('b_empty', 'Truncate'|trans), } %} {% if range_or_list %} {% set action_icons = action_icons|merge({'DROP': Util_getIcon('b_drop', 'Drop'|trans)}) %} {% endif %} {{ Util_getDivForSliderEffect('partitions', 'Partitions'|trans) }} {% set remove_sql = 'ALTER TABLE ' ~ Util_backquote(table) ~ ' REMOVE PARTITIONING' %} {% set remove_url = 'sql.php' ~ url_query ~ '&sql_query=' ~ remove_sql|url_encode %} {% include 'table/structure/display_partitions.twig' with { 'db': db, 'table': table, 'url_query': url_query, 'partitions': partitions, 'partition_method': first_partition.getMethod(), 'partition_expression': first_partition.getExpression(), 'has_description': first_partition.getDescription() is not empty, 'has_sub_partitions': has_sub_partitions, 'sub_partition_method': has_sub_partitions ? first_sub_partition.getMethod(), 'sub_partition_expression': has_sub_partitions ? first_sub_partition.getExpression(), 'action_icons': action_icons, 'range_or_list': range_or_list, 'remove_url': remove_url } only %} {% else %} {% include 'table/structure/display_partitions.twig' with { 'db': db, 'table': table } only %} {% endif %} {# For closing Slider effect div #}
          {% endif %} {# Displays Space usage and row statistics #} {% if show_stats %} {{ table_stats|raw }} {% endif %}
          db/login/templates/table/structure/row_stats_table.twig000064400000006223151502156020017456 0ustar00 {% if showtable['Row_format'] is defined %} {% if showtable['Row_format'] == 'Fixed' %} {% elseif showtable['Row_format'] == 'Dynamic' %} {% else %} {% endif %} {% endif %} {% if showtable['Create_options'] is not empty %} {% if showtable['Create_options'] == 'partitioned' %} {% else %} {% endif %} {% endif %} {% if tbl_collation is not empty %} {% endif %} {% if not is_innodb and showtable['Rows'] is defined %} {% endif %} {% if not is_innodb and showtable['Avg_row_length'] is defined and showtable['Avg_row_length'] > 0 %} {% set avg_row_length = Util_formatByteDown(showtable['Avg_row_length'], 6, 1) %} {% endif %} {% if not is_innodb and showtable['Data_length'] is defined and showtable['Rows'] is defined and showtable['Rows'] > 0 and mergetable == false %} {% endif %} {% if showtable['Auto_increment'] is defined %} {% endif %} {% if showtable['Create_time'] is defined %} {% endif %} {% if showtable['Update_time'] is defined %} {% endif %} {% if showtable['Check_time'] is defined %} {% endif %}
          {% trans 'Row statistics' %}
          {% trans 'Format' %}{% trans 'static' %}{% trans 'dynamic' %}{{ showtable['Row_format'] }}
          {% trans 'Options' %}{% trans 'partitioned' %}{{ showtable['Create_options'] }}
          {% trans 'Collation' %} {{ tbl_collation }}
          {% trans 'Rows' %} {{ Util_formatNumber(showtable['Rows'], 0) }}
          {% trans 'Row length' %}{{ avg_row_length[0] }} {{ avg_row_length[1] }}
          {% trans 'Row size' %} {{ avg_size }} {{ avg_unit }}
          {% trans 'Next autoindex' %} {{ Util_formatNumber(showtable['Auto_increment'], 0) }}
          {% trans 'Creation' %} {{ Util_localisedDate(showtable['Create_time']|date('U')) }}
          {% trans 'Last update' %} {{ Util_localisedDate(showtable['Update_time']|date('U')) }}
          {% trans 'Last check' %} {{ Util_localisedDate(showtable['Check_time']|date('U')) }}
          db/login/templates/table/structure/table_structure_header.twig000064400000001373151502156020021002 0ustar00 # {% trans 'Name' %} {% trans 'Type' %} {% trans 'Collation' %} {% trans 'Attributes' %} {% trans 'Null' %} {% trans 'Default' %} {% if show_column_comments -%} {% trans 'Comments' %} {%- endif %} {% trans 'Extra' %} {# @see tbl_structure.js, function moreOptsMenuResize() #} {% if not db_is_system_schema and not tbl_is_view %} {% trans 'Action' %} {% endif %} db/login/templates/table/structure/partition_definition_form.twig000064400000001005151502156020021517 0ustar00
          {{ Url_getHiddenInputs(db, table) }}
          {% trans 'Edit partitioning' %} {% include 'columns_definitions/partitions.twig' with { 'partition_details': partition_details } only %}
          db/login/templates/table/structure/actions_in_table_structure.twig000064400000011706151502156020021701 0ustar00
            {% if hide_structure_actions %} {% endif %}
          db/login/templates/table/structure/optional_action_links.twig000064400000002540151502156020020642 0ustar00{{ Util_getIcon('b_print', 'Print'|trans, true) }} {% if not tbl_is_view and not db_is_system_schema %} {# Only display propose table structure for MySQL < 8.0 #} {% if mysql_int_version < 80000 or is_mariadb %} {{ Util_getIcon( 'b_tblanalyse', 'Propose table structure'|trans, true ) }} {{ Util_showMySQLDocu('procedure_analyse') }} {% endif %} {% if is_active %} {{ Util_getIcon('eye', 'Track table'|trans, true) }} {% endif %} {{ Util_getIcon('b_move', 'Move columns'|trans, true) }} {{ Util_getIcon('normalize', 'Normalize'|trans, true) }} {% endif %} {% if tbl_is_view and not db_is_system_schema %} {% if is_active %} {{ Util_getIcon('eye', 'Track view'|trans, true) }} {% endif %} {% endif %} db/login/templates/table/structure/add_column.twig000064400000002140151502156020016361 0ustar00
          {{ Url_getHiddenInputs(db, table) }} {% if Util_showIcons('ActionLinksMode') %} {{ Util_getImage('b_insrow', 'Add column'|trans) }}  {% endif %} {% set num_fields -%} {%- endset %} {{ 'Add %s column(s)'|trans|format(num_fields)|raw }}   {# I tried displaying the drop-down inside the label but with Firefox the drop-down was blinking #}
          db/login/templates/table/structure/check_all_table_column.twig000064400000005271151502156020020715 0ustar00 db/login/templates/table/search/options.twig000064400000004147151502156020015165 0ustar00{{ Util_getDivForSliderEffect('searchoptions', 'Options'|trans) }} {# Displays columns select list for selecting distinct columns in the search #}
          {% trans 'Select columns (at least one):' %}
          {# Displays input box for custom 'Where' clause to be used in the search #}
          {% trans 'Or' %} {% trans 'Add search conditions (body of the "where" clause):' %} {{ Util_showMySQLDocu('Functions') }}
          {# Displays option of changing default number of rows displayed per page #}
          {% trans 'Number of rows per page' %}
          {# Displays option for ordering search results by a column value (Asc or Desc) #}
          {% trans 'Display order:' %} {{ Util_getRadioFields( 'order', { 'ASC': 'Ascending'|trans, 'DESC': 'Descending'|trans }, 'ASC', false, true, 'formelement' ) }}
          db/login/templates/table/search/replace_preview.twig000064400000002652151502156020016645 0ustar00
          {{ Url_getHiddenInputs(db, table) }}
          {% trans 'Find and replace - preview' %} {% if result is iterable %} {% for row in result %} {# count #} {# original #} {# replaced #} {% endfor %} {% endif %}
          {% trans 'Count' %} {% trans 'Original string' %} {% trans 'Replaced string' %}
          {{ row[2] }}{{ row[0] }}{{ row[1] }}
          db/login/templates/table/search/rows_zoom.twig000064400000005330151502156020015523 0ustar00{# Get already set search criteria (if any) #} {% set type = [] %} {% set collation = [] %} {% set func = [] %} {% set value = [] %} {% for i in 0..3 %} {# After X-Axis and Y-Axis column rows, display additional criteria option #} {% if i == 2 %} {% trans 'Additional search criteria' %} {% endif %} {% if criteria_column_names is defined and criteria_column_names[i] != 'pma_null' %} {% set key = array_search(criteria_column_names[i], column_names) %} {% set properties = self.getColumnProperties(i, key) %} {% set type = type|merge({i: properties['type']}) %} {% set collation = collation|merge({i: properties['collation']}) %} {% set func = func|merge({i: properties['func']}) %} {% set value = value|merge({i: properties['value']}) %} {% endif %} {# Column type #} {{ type[i] is defined ? type[i] }} {# Column Collation #} {{ collation[i] is defined ? collation[i] }} {# Select options for column operators #} {{ func[i] is defined ? func[i]|raw }} {# Inputbox for search criteria value #} {{ value[i] is defined ? value[i]|raw }} {# Displays hidden fields #} {% endfor %} db/login/templates/table/search/fields_table.twig000064400000001502151502156020016077 0ustar00 {% include 'table/search/table_header.twig' with { 'geom_column_flag': geom_column_flag } only %} {% if search_type == 'zoom' %} {% include 'table/search/rows_zoom.twig' with { 'self': self, 'column_names': column_names, 'criteria_column_names': criteria_column_names, 'criteria_column_types': criteria_column_types } only %} {% else %} {% include 'table/search/rows_normal.twig' with { 'self': self, 'geom_column_flag': geom_column_flag, 'column_names': column_names, 'column_types': column_types, 'column_collations': column_collations } only %} {% endif %}
          db/login/templates/table/search/search_and_replace.twig000064400000001365151502156020017253 0ustar00{% trans 'Find:' %} {% trans 'Replace with:' %} {% trans 'Column:' %} {% include 'checkbox.twig' with { 'html_field_id': 'useRegex', 'html_field_name': 'useRegex', 'label': 'Use regular expression'|trans, 'checked': false, 'onclick': false } only %} db/login/templates/table/search/geom_func.twig000064400000001311151502156020015422 0ustar00{# Displays 'Function' column if it is present #} {% set geom_types = Util_getGISDatatypes() %} {% if column_types[column_index] in geom_types %} {% else %}   {% endif %} db/login/templates/table/search/options_zoom.twig000064400000002631151502156020016225 0ustar00 {# Select options for data label #} {# Inputbox for changing default maximum rows to plot #}
          db/login/templates/table/search/form_tag.twig000064400000000422151502156020015260 0ustar00
          {{ Url_getHiddenInputs(db, table) }} db/login/templates/table/search/zoom_result_form.twig000064400000007271151502156020017100 0ustar00 {{ Url_getHiddenInputs(db, table) }}
          {% trans 'Browse/Edit the points' %} {# JSON encode the data(query result) #}
          {% if zoom_submit and data is not empty %}
          {% trans 'How to use' %}
          {{ data_json }}
          {% endif %}
          {# Displays rows in point edit form #}
          {% for column_index in 0..column_names|length - 1 %} {% set field_popup = column_names[column_index] %} {% set foreign_data = Relation_getForeignData( foreigners, field_popup, false, '', '' ) %} {# Null checkbox if column can be null #} {# Column's Input box #} {% endfor %}
          {% trans 'Column' %} {% trans 'Null' %} {% trans 'Value' %}
          {{ column_names[column_index] }} {% if column_null_flags[column_index] == 'YES' %} {% endif %} {% include 'table/search/input_box.twig' with { 'str': '', 'column_type': column_types[column_index], 'column_id': column_types[column_index] ? 'edit_fieldID_' : 'fieldID_', 'in_zoom_search_edit': true, 'foreigners': foreigners, 'column_name': field_popup, 'column_name_hash': md5(field_popup), 'foreign_data': foreign_data, 'table': table, 'column_index': column_index, 'foreign_max_limit': foreign_max_limit, 'criteria_values': '', 'db': db, 'titles': titles, 'in_fbs': false } only %}
          db/login/templates/table/search/input_box.twig000064400000010037151502156020015474 0ustar00{# Get inputbox based on different column types (Foreign key, geometrical, enum) #} {% if foreigners and Relation_searchColumnInForeigners(foreigners, column_name) %} {% if foreign_data['disp_row'] is iterable %} {% elseif foreign_data['foreign_link'] == true %} {{ titles['Browse']|replace({"'": "\\'"})|raw }} {% endif %} {% elseif column_type in Util_getGISDatatypes() %} {% if in_fbs %} {% set edit_url = 'gis_data_editor.php' ~ Url_getCommon() %} {% set edit_str = Util_getIcon('b_edit', 'Edit/Insert'|trans) %} {{ Util_linkOrButton(edit_url, edit_str, [], '_blank') }} {% endif %} {% elseif column_type starts with 'enum' or (column_type starts with 'set' and in_zoom_search_edit) %} {% set in_zoom_search_edit = false %} {% set value = column_type|e|slice(5, -1)|replace({''': ''})|split(', ') %} {% set cnt_value = value|length %} {# Enum in edit mode --> dropdown Enum in search mode --> multiselect Set in edit mode --> multiselect Set in search mode --> input (skipped here, so the 'else' section would handle it) #} {% if (column_type starts with 'enum' and not in_zoom_search_edit) or (column_type starts with 'set' and in_zoom_search_edit) %} {% endif %} {# Add select options #} {% for i in 0..cnt_value - 1 %} {% if criteria_values[column_index] is defined and criteria_values[column_index] is iterable and value[i] in criteria_values[column_index] %} {% else %} {% endif %} {% endfor %} {% else %} {% set the_class = 'textfield' %} {% if column_type == 'date' %} {% set the_class = the_class ~ ' datefield' %} {% elseif column_type == 'datetime' or column_type starts with 'timestamp' %} {% set the_class = the_class ~ ' datetimefield' %} {% elseif column_type starts with 'bit' %} {% set the_class = the_class ~ ' bit' %} {% endif %} {% endif %} db/login/templates/table/search/table_header.twig000064400000000506151502156020016064 0ustar00 {% if geom_column_flag %} {% trans 'Function' %} {% endif %} {% trans 'Column' %} {% trans 'Type' %} {% trans 'Collation' %} {% trans 'Operator' %} {% trans 'Value' %} db/login/templates/table/search/rows_normal.twig000064400000002774151502156020016040 0ustar00{% for column_index in 0..column_names|length - 1 %} {# If 'Function' column is present trying to change comment #} {% if geom_column_flag %} {% include 'table/search/geom_func.twig' with { 'column_index': column_index, 'column_types': column_types } only %} {% endif %} {# Displays column's name, type, collation and value #} {{ column_names[column_index] }} {% set properties = self.getColumnProperties(column_index, column_index) %} {{ properties['type'] }} {{ properties['collation'] }} {{ properties['func']|raw }} {# here, the data-type attribute is needed for a date/time picker #} {{ properties['value']|raw }} {# Displays hidden fields #} {% endfor %} db/login/templates/table/search/selection_form.twig000064400000007255151502156020016505 0ustar00{% if search_type == 'zoom' %} {% include 'table/search/form_tag.twig' with { 'script_name': 'tbl_zoom_select.php', 'form_id': 'zoom_search_form', 'db': db, 'table': table, 'goto': goto } only %} {% elseif search_type == 'normal' %} {% include 'table/search/form_tag.twig' with { 'script_name': 'tbl_select.php', 'form_id': 'tbl_search_form', 'db': db, 'table': table, 'goto': goto } only %} {% elseif search_type == 'replace' %} {% include 'table/search/form_tag.twig' with { 'script_name': 'tbl_find_replace.php', 'form_id': 'find_replace_form', 'db': db, 'table': table, 'goto': goto } only %}
          {% trans 'Find and replace' %} {% include 'table/search/search_and_replace.twig' with { 'column_names': column_names, 'column_types': column_types, 'sql_types': sql_types } only %}
          {% else %} {% include 'table/search/form_tag.twig' with { 'script_name': '', 'form_id': '', 'db': db, 'table': table, 'goto': goto } only %} {% endif %} {# Displays selection form's footer elements #}
          db/login/templates/table/search/column_comparison_operators.twig000064400000000211151502156020021303 0ustar00 db/login/templates/table/chart/tbl_chart.twig000064400000020207151502156020015263 0ustar00 {# Display Chart options #}
          {{ Url_getHiddenInputs(url_params) }}
          {% trans 'Display chart' %}




          {% set xaxis = null %}




          {{ Util_getStartAndNumberOfRowsPanel(sql_query) }}
          db/login/templates/table/relation/dropdown_generate.twig000064400000000465151502156020017547 0ustar00{{ dropdown_question is not empty ? dropdown_question -}} db/login/templates/table/relation/common_form.twig000064400000021536151502156020016356 0ustar00
          {{ Url_getHiddenInputs(db, table) }} {# InnoDB #} {% if Util_isForeignKeySupported(tbl_storage_engine) %}
          {% trans 'Foreign key constraints' %}
          {% if tbl_storage_engine|upper == 'INNODB' %} {% else %} {% endif %} {% set i = 0 %} {% if existrel_foreign is not empty %} {% for key, one_key in existrel_foreign %} {# Foreign database dropdown #} {% set foreign_db = one_key['ref_db_name'] is defined and one_key['ref_db_name'] is not null ? one_key['ref_db_name'] : db %} {% set foreign_table = false %} {% if foreign_db %} {% set foreign_table = one_key['ref_table_name'] is defined and one_key['ref_table_name'] is not null ? one_key['ref_table_name'] : false %} {% endif %} {% set unique_columns = [] %} {% if foreign_db and foreign_table %} {% set table_obj = Table_get(foreign_table, foreign_db) %} {% set unique_columns = table_obj.getUniqueColumns(false, false) %} {% endif %} {% include 'table/relation/foreign_key_row.twig' with { 'i': i, 'one_key': one_key, 'column_array': column_array, 'options_array': options_array, 'tbl_storage_engine': tbl_storage_engine, 'db': db, 'table': table, 'url_params': url_params, 'databases': databases, 'foreign_db': foreign_db, 'foreign_table': foreign_table, 'unique_columns': unique_columns } only %} {% set i = i + 1 %} {% endfor %} {% endif %} {% include 'table/relation/foreign_key_row.twig' with { 'i': i, 'one_key': [], 'column_array': column_array, 'options_array': options_array, 'tbl_storage_engine': tbl_storage_engine, 'db': db, 'table': table, 'url_params': url_params, 'databases': databases, 'foreign_db': foreign_db, 'foreign_table': foreign_table, 'unique_columns': unique_columns } only %} {% set i = i + 1 %}
          {% trans 'Actions' %} {% trans 'Constraint properties' %} {% trans 'Column' %} {{ Util_showHint('Creating a foreign key over a non-indexed column would automatically create an index on it. Alternatively, you can define an index below, before creating the foreign key.'|trans) }} {% trans 'Column' %} {{ Util_showHint('Only columns with index will be displayed. You can define an index below.'|trans) }} {% trans 'Foreign key constraint' %} ({{ tbl_storage_engine }})
          {% trans 'Database' %} {% trans 'Table' %} {% trans 'Column' %}
          {% trans '+ Add constraint' %}
          {% endif %} {% if cfg_relation['relwork'] %} {% if Util_isForeignKeySupported(tbl_storage_engine) %} {{ Util_getDivForSliderEffect('ir_div', 'Internal relationships'|trans) }} {% endif %}
          {% trans 'Internal relationships' %} {{ Util_showDocu('config', 'cfg_Servers_relation') }} {% set saved_row_cnt = save_row|length - 1 %} {% for i in 0..saved_row_cnt %} {% set myfield = save_row[i]['Field'] %} {# Use an md5 as array index to avoid having special characters in the name attribute (see bug #1746964 ) #} {% set myfield_md5 = md5(myfield) %} {% set foreign_table = false %} {% set foreign_column = false %} {# Database dropdown #} {% if existrel[myfield] is defined %} {% set foreign_db = existrel[myfield]['foreign_db'] %} {% else %} {% set foreign_db = db %} {% endif %} {# Table dropdown #} {% set tables = [] %} {% if foreign_db %} {% if existrel[myfield] is defined %} {% set foreign_table = existrel[myfield]['foreign_table'] %} {% endif %} {% set tables = dbi.getTables(foreign_db) %} {% endif %} {# Column dropdown #} {% set unique_columns = [] %} {% if foreign_db and foreign_table %} {% if existrel[myfield] is defined %} {% set foreign_column = existrel[myfield]['foreign_field'] %} {% endif %} {% set table_obj = Table_get(foreign_table, foreign_db) %} {% set unique_columns = table_obj.getUniqueColumns(false, false) %} {% endif %} {% include 'table/relation/internal_relational_row.twig' with { 'myfield': myfield, 'myfield_md5': myfield_md5, 'databases': databases, 'tables': tables, 'columns': unique_columns, 'foreign_db': foreign_db, 'foreign_table': foreign_table, 'foreign_column': foreign_column } only %} {% endfor %}
          {% trans 'Column' %} {% trans 'Internal relation' %} {% if Util_isForeignKeySupported(tbl_storage_engine) %} {{ Util_showHint('An internal relation is not necessary when a corresponding FOREIGN KEY relation exists.'|trans) }} {% endif %}
          {% if Util_isForeignKeySupported(tbl_storage_engine) %} {% endif %} {% endif %} {% if cfg_relation['displaywork'] %} {% set disp = Relation_getDisplayField(db, table) %}
          {% endif %}
          db/login/templates/table/relation/foreign_key_row.twig000064400000013411151502156020017224 0ustar00 {# Drop key anchor #} {% set js_msg = '' %} {% set this_params = null %} {% if one_key['constraint'] is defined %} {% set drop_fk_query = 'ALTER TABLE ' ~ Util_backquote(db) ~ '.' ~ Util_backquote(table) ~ ' DROP FOREIGN KEY ' ~ Util_backquote(one_key['constraint']) ~ ';' %} {% set this_params = url_params %} {% set this_params = { 'goto': 'tbl_relation.php', 'back': 'tbl_relation.php', 'sql_query': drop_fk_query, 'message_to_show': 'Foreign key constraint %s has been dropped'|trans|format( one_key['constraint'] ) } %} {% set js_msg = Sanitize_jsFormat( 'ALTER TABLE ' ~ db ~ '.' ~ table ~ ' DROP FOREIGN KEY ' ~ one_key['constraint'] ~ ';' ) %} {% endif %} {% if one_key['constraint'] is defined %} {% set drop_url = 'sql.php' ~ Url_getCommon(this_params) %} {% set drop_str = Util_getIcon('b_drop', 'Drop'|trans) %} {{ Util_linkOrButton(drop_url, drop_str, {'class': 'drop_foreign_key_anchor ajax'}) }} {% endif %}
          {# For ON DELETE and ON UPDATE, the default action is RESTRICT as per MySQL doc; however, a SHOW CREATE TABLE won't display the clause if it's set as RESTRICT. #} {% set on_delete = one_key['on_delete'] is defined ? one_key['on_delete'] : 'RESTRICT' %} {% set on_update = one_key['on_update'] is defined ? one_key['on_update'] : 'RESTRICT' %} {% include 'table/relation/dropdown_generate.twig' with { 'dropdown_question': 'ON DELETE', 'select_name': 'on_delete[' ~ i ~ ']', 'choices': options_array, 'selected_value': on_delete } only %} {% include 'table/relation/dropdown_generate.twig' with { 'dropdown_question': 'ON UPDATE', 'select_name': 'on_update[' ~ i ~ ']', 'choices': options_array, 'selected_value': on_update } only %}
          {% if one_key['index_list'] is defined %} {% for key, column in one_key['index_list'] %} {% include 'table/relation/dropdown_generate.twig' with { 'dropdown_question': '', 'select_name': 'foreign_key_fields_name[' ~ i ~ '][]', 'choices': column_array, 'selected_value': column } only %} {% endfor %} {% else %} {% include 'table/relation/dropdown_generate.twig' with { 'dropdown_question': '', 'select_name': 'foreign_key_fields_name[' ~ i ~ '][]', 'choices': column_array, 'selected_value': '' } only %} {% endif %} {% trans '+ Add column' %} {% set tables = [] %} {% if foreign_db %} {% set tables = Relation_getTables(foreign_db, tbl_storage_engine) %} {% endif %} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_foreign_db[' ~ i ~ ']', 'title': 'Database'|trans, 'values': databases, 'foreign': foreign_db } only %} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_foreign_table[' ~ i ~ ']', 'title': 'Table'|trans, 'values': tables, 'foreign': foreign_table } only %} {% if foreign_db and foreign_table %} {% for foreign_column in one_key['ref_index_list'] %} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_foreign_column[' ~ i ~ '][]', 'title': 'Column'|trans, 'values': unique_columns, 'foreign': foreign_column } only %} {% endfor %} {% else %} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_foreign_column[' ~ i ~ '][]', 'title': 'Column'|trans, 'values': [], 'foreign': '' } only %} {% endif %} db/login/templates/table/relation/relational_dropdown.twig000064400000001132151502156020020077 0ustar00 db/login/templates/table/relation/internal_relational_row.twig000064400000001712151502156020020752 0ustar00 {{ myfield }} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_db[' ~ myfield_md5 ~ ']', 'title': 'Database'|trans, 'values': databases, 'foreign': foreign_db } only %} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_table[' ~ myfield_md5 ~ ']', 'title': 'Table'|trans, 'values': tables, 'foreign': foreign_table } only %} {% include 'table/relation/relational_dropdown.twig' with { 'name': 'destination_column[' ~ myfield_md5 ~ ']', 'title': 'Column'|trans, 'values': columns, 'foreign': foreign_column } only %} db/login/templates/table/gis_visualization/gis_visualization.twig000064400000007426151502156020021536 0ustar00
          {% trans 'Display GIS Visualization' %}
          {{ Url_getHiddenInputs(url_params) }} {{ Util_getStartAndNumberOfRowsPanel(sql_query) }}
          {{ Util_getImage('b_saveimage', 'Save'|trans) }}
          {{ visualization|raw }}
          db/login/templates/table/secondary_tabs.twig000064400000001064151502156020015220 0ustar00{% if cfg_relation['relwork'] or is_foreign_key_supported %}
            {{ Util_getHtmlTab({ 'icon': 'b_props', 'link': 'tbl_structure.php', 'text': 'Table structure'|trans, 'id': 'table_strucuture_id' }, url_params) }} {{ Util_getHtmlTab({ 'icon': 'b_relations', 'link': 'tbl_relation.php', 'text': 'Relation view'|trans, 'id': 'table_relation_id' }, url_params) }}
          {% endif %} db/login/templates/test/gettext/pgettext.twig000064400000000073151502156020015437 0ustar00{% trans %} Text {% context %} Text context {% endtrans %} db/login/templates/test/gettext/notes.twig000064400000000062151502156020014721 0ustar00{% trans %} Text {% notes %} Notes {% endtrans %} db/login/templates/test/gettext/plural_notes.twig000064400000000156151502156020016304 0ustar00{% trans %} One table {% plural table_count %} {{ count }} tables {% notes %} Number of tables {% endtrans %} db/login/templates/test/gettext/gettext.twig000064400000000023151502156020015252 0ustar00{% trans "Text" %} db/login/templates/test/gettext/plural.twig000064400000000121151502156020015064 0ustar00{% trans %} One table {% plural table_count %} {{ count }} tables {% endtrans %} db/login/templates/test/add_data.twig000064400000000040151502156020013622 0ustar00{{ variable1 }} {{ variable2 }} db/login/templates/test/echo.twig000064400000000020151502156020013015 0ustar00{{ variable -}} db/login/templates/test/static.twig000064400000000016151502156020013373 0ustar00static contentdb/login/templates/list/item.twig000064400000001727151502156020013050 0ustar00 {% if url is defined and url is iterable and url['href'] is not empty %} {% endif %} {{ content|raw }} {% if url is defined and url is iterable and url['href'] is not empty %} {% endif %} {% if mysql_help_page is not empty %} {{ Util_showMySQLDocu(mysql_help_page) }} {% endif %} db/login/templates/list/unordered.twig000064400000000723151502156020014074 0ustar00 {% if items is not empty %} {% for item in items %} {% if item is not iterable %} {% set item = {'content': item} %} {% endif %} {% include 'list/item.twig' with item only %} {% endfor %} {% elseif content is not empty %} {{ content|raw }} {% endif %} db/login/templates/privileges/privileges_summary.twig000064400000004457151502156020017241 0ustar00 db/login/templates/privileges/choose_user_group.twig000064400000000672151502156020017040 0ustar00
          {{ Url_getHiddenInputs(params) }}
          {% trans 'User group' %} {% trans 'User group' %}: {{ Util_getDropdown('userGroup', all_user_groups, user_group, 'userGroup_select') }}
          db/login/templates/privileges/global_priv_table.twig000064400000001511151502156020016746 0ustar00{% for key, table in priv_table %}
          {% for priv in table %} {% set checked = row[priv[0] ~ '_priv'] is defined and row[priv[0] ~ '_priv'] == 'Y' ? ' checked="checked"' %} {% set formatted_priv = ServerPrivileges_formatPrivilege(priv, true) %} {% include 'privileges/global_priv_tbl_item.twig' with { 'checked': checked, 'formatted_priv': formatted_priv, 'priv': priv } only %} {% endfor %}
          {% endfor %} db/login/templates/privileges/add_privileges_table.twig000064400000001012151502156020017423 0ustar00 {%- if tables is not empty %} {% endif -%} db/login/templates/privileges/initials_row.twig000064400000001740151502156020016006 0ustar00 {% for tmp_initial, initial_was_found in array_initials %} {% if tmp_initial is not same as(null) %} {% if initial_was_found %} {% else %} {% endif %} {% endif %} {% endfor %}
          {{- tmp_initial|raw -}} {{ tmp_initial|raw }} {% trans 'Show all' %}
          db/login/templates/privileges/resource_limits.twig000064400000000566151502156020016520 0ustar00
          {% trans 'Resource limits' %}

          {% trans 'Note: Setting these options to 0 (zero) removes the limit.' %}

          {% for limit in limits %} {% include 'privileges/resource_limit_item.twig' with { 'limit': limit } only %} {% endfor %}
          db/login/templates/privileges/require_options.twig000064400000001017151502156020016527 0ustar00
          SSL
          {% for require_option in require_options %} {% if require_option['name'] is same as('ssl_cipher') %}
          {% endif %} {% include 'privileges/require_options_item.twig' with { 'require_option': require_option } only %} {% endfor %}
          {# END specified_div #}
          {# END require_ssl_div #}
          db/login/templates/privileges/privileges_summary_row.twig000064400000000632151502156020020117 0ustar00 {{ name }} {{ privileges|raw }} {{ grant ? 'Yes'|trans : 'No'|trans }} {% if type == 'database' %} {{ table_privs ? 'Yes'|trans : 'No'|trans }} {% elseif type == 'table' %} {{ column_privs ? 'Yes'|trans : 'No'|trans }} {% endif %} {{ edit_link|raw }} {{ revoke_link|raw }} db/login/templates/privileges/add_user_fieldset.twig000064400000000615151502156020016750 0ustar00
          {% trans %}New{% context %}Create new user{% endtrans %} {{ Util_getIcon('b_usradd') }}{% trans 'Add user account' %}
          db/login/templates/privileges/resource_limit_item.twig000064400000000605151502156020017345 0ustar00
          db/login/templates/privileges/edit_routine_privileges.twig000064400000002301151502156020020220 0ustar00
          {{ header|raw }}
          db/login/templates/privileges/require_options_item.twig000064400000001722151502156020017550 0ustar00
          {% if require_option['radio'] %} {% else %} {% endif %}
          db/login/templates/privileges/add_privileges_routine.twig000064400000001036151502156020020027 0ustar00 {%- if routines is not empty %} {% endif -%} db/login/templates/privileges/global_priv_tbl_item.twig000064400000000471151502156020017462 0ustar00
          db/login/templates/privileges/delete_user_fieldset.twig000064400000001543151502156020017463 0ustar00
          {{ Util_getIcon('b_usrdrop') }}{% trans 'Remove selected user accounts' %}

          ({% trans 'Revoke all active privileges from the users and delete them afterwards.' %})

          db/login/templates/privileges/add_privileges_database.twig000064400000001040151502156020020101 0ustar00 {%- if databases is not empty %} {% endif -%} {{ Util_showHint("Wildcards % and _ should be escaped with a \\ to use them literally."|trans) }} db/login/templates/privileges/column_privileges.twig000064400000001732151502156020017032 0ustar00
          {% trans 'Or' %}
          db/login/templates/prefs_twofactor_confirm.twig000064400000000740151502156020016055 0ustar00

          {% trans "Confirm disabling two-factor authentication" %}

          {{ Message_notice("By disabling two factor authentication you will be again able to login using password only."|trans) }} {{ Url_getHiddenInputs() }} {{ form|raw }}
          db/login/templates/fk_checkbox.twig000064400000000332151502156020013374 0ustar00 db/login/templates/columns_definitions/column_attributes.twig000064400000017142151502156020020753 0ustar00{# Cell index: If certain fields get left out, the counter shouldn't change. #} {% set ci = 0 %} {# Every time a cell shall be left out the STRG-jumping feature, $ci_offset has to be incremented ($ci_offset++) #} {% set ci_offset = -1 %} {# column name #} {% include 'columns_definitions/column_name.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'cfg_relation': cfg_relation, 'max_rows': max_rows } only %} {% set ci = ci + 1 %} {# column type #} {% include 'columns_definitions/column_type.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'type_upper': type_upper } only %} {% set ci = ci + 1 %} {# column length #} {% include 'columns_definitions/column_length.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'length_values_input_size': length_values_input_size, 'length_to_display': length } only %} {% set ci = ci + 1 %} {# column default #} {% include 'columns_definitions/column_default.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'type_upper': type_upper, 'char_editing': char_editing } only %} {% set ci = ci + 1 %} {# column collation #} {{ Charsets_getCollationDropdownBox( dbi, disable_is, 'field_collation[' ~ column_number ~ ']', 'field_' ~ column_number ~ '_' ~ (ci - ci_offset), column_meta['Collation'] is not empty ? column_meta['Collation'] : null, false ) }} {% set ci = ci + 1 %} {# column attribute #} {% include 'columns_definitions/column_attribute.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'extracted_columnspec': extracted_columnspec, 'submit_attribute': submit_attribute, 'attribute_types': attribute_types } only %} {% set ci = ci + 1 %} {# column NULL #} {% include 'columns_definitions/column_null.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta } only %} {% set ci = ci + 1 %} {% if change_column is defined and change_column is not empty %} {# column Adjust privileges, Only for 'Edit' Column(s) #} {% include 'columns_definitions/column_adjust_privileges.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'privs_available': privs_available } only %} {% set ci = ci + 1 %} {% endif %} {% if not is_backup %} {# column indexes, See my other comment about this 'if'. #} {% include 'columns_definitions/column_indexes.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta } only %} {% set ci = ci + 1 %} {% endif %} {# column auto_increment #} {% include 'columns_definitions/column_auto_increment.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta } only %} {% set ci = ci + 1 %} {# column comments #} {% include 'columns_definitions/column_comment.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'max_length': max_length, 'value': column_meta['Field'] is defined and comments_map is iterable and comments_map[column_meta['Field']] is defined ? comments_map[column_meta['Field']]|e } only %} {% set ci = ci + 1 %} {# column virtuality #} {% if is_virtual_columns_supported %} {% include 'columns_definitions/column_virtuality.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'char_editing': char_editing, 'expression': column_meta['Expression'] is defined ? column_meta['Expression'], 'options': options } only %} {% set ci = ci + 1 %} {% endif %} {# move column #} {% if fields_meta is defined %} {% set current_index = 0 %} {% set cols = move_columns|length - 1 %} {% set break = false %} {% for mi in 0..cols %} {% if move_columns[mi].name == column_meta['Field'] and not break %} {% set current_index = mi %} {% set break = true %} {% endif %} {% endfor %} {% include 'columns_definitions/move_column.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'move_columns': move_columns, 'current_index': current_index } only %} {% set ci = ci + 1 %} {% endif %} {% if cfg_relation['mimework'] and browse_mime and cfg_relation['commwork'] %} {# Column Mime-type #} {% include 'columns_definitions/mime_type.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'available_mime': available_mime, 'mime_map': mime_map } only %} {% set ci = ci + 1 %} {# Column Browser transformation #} {% include 'columns_definitions/transformation.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'available_mime': available_mime, 'mime_map': mime_map, 'type': 'transformation' } only %} {% set ci = ci + 1 %} {# column Transformation options #} {% include 'columns_definitions/transformation_option.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'mime_map': mime_map, 'type_prefix': '' } only %} {% set ci = ci + 1 %} {# Column Input transformation #} {% include 'columns_definitions/transformation.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'available_mime': available_mime, 'mime_map': mime_map, 'type': 'input_transformation' } only %} {% set ci = ci + 1 %} {# column Input transformation options #} {% include 'columns_definitions/transformation_option.twig' with { 'column_number': column_number, 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, 'mime_map': mime_map, 'type_prefix': 'input_' } only %} {% set ci = ci + 1 %} {% endif %} db/login/templates/columns_definitions/partitions.twig000064400000017222151502156020017403 0ustar00{% set partition_options = [ '', 'HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'RANGE COLUMNS', 'LIST', 'LIST COLUMNS' ] %} {% set sub_partition_options = ['', 'HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY'] %} {% set value_type_options = ['', 'LESS THAN', 'LESS THAN MAXVALUE', 'IN'] %} {% if partition_details['can_have_subpartitions'] %} {% endif %}
          ()
          ()
          {% if partition_details['partition_count'] > 1 %} {% if partition_details['value_enabled'] %} {% endif %} {% if partition_details['can_have_subpartitions'] and partition_details['subpartition_count'] > 1 %} {% endif %} {% for partition in partition_details['partitions'] %} {% set rowspan = partition['subpartition_count'] is not empty ? partition['subpartition_count'] + 1 : 2 %} {% if partition_details['value_enabled'] %} {% endif %} {% if partition['subpartitions'] is defined %} {% set subpartitions = partition['subpartitions'] %} {% else %} {% set subpartitions = [partition] %} {% endif %} {% for subpartition in subpartitions %} {% if partition_details['can_have_subpartitions'] and partition_details['subpartition_count'] > 1 %} {% endif %} {% endfor %} {% endfor %}
          {% trans 'Partition' %}{% trans 'Values' %}{% trans 'Subpartition' %}{% trans 'Engine' %} {% trans 'Comment' %} {% trans 'Data directory' %} {% trans 'Index directory' %} {% trans 'Max rows' %} {% trans 'Min rows' %} {% trans 'Table space' %} {% trans 'Node group' %}
          {{ StorageEngine_getHtmlSelect( subpartition['prefix'] ~ '[engine]', null, subpartition['engine'], false, true ) }} {% apply spaceless %} {% endapply %}
          {% endif %} db/login/templates/columns_definitions/mime_type.twig000064400000001373151502156020017177 0ustar00 db/login/templates/columns_definitions/column_comment.twig000064400000000336151502156020020224 0ustar00 db/login/templates/columns_definitions/column_indexes.twig000064400000002333151502156020020220 0ustar00 db/login/templates/columns_definitions/column_name.twig000064400000002737151502156020017511 0ustar00{% set title = '' %} {% if column_meta['column_status'] is defined %} {% if column_meta['column_status']['isReferenced'] %} {% set title = title ~ 'Referenced by %s.'|trans|format( column_meta['column_status']['references']|join(',') ) %} {% endif %} {% if column_meta['column_status']['isForeignKey'] %} {% if title is not empty %} {% set title = title ~ '\n'|raw %} {% endif %} {% set title = title ~ 'Is a foreign key.'|trans %} {% endif %} {% endif %} {% if title is empty %} {% set title = 'Column'|trans %} {% endif %} {% if cfg_relation['centralcolumnswork'] and not (column_meta['column_status'] is defined and not column_meta['column_status']['isEditable']) %}

          {% trans 'Pick from Central Columns' %}

          {% endif %} db/login/templates/columns_definitions/column_type.twig000064400000000524151502156020017542 0ustar00 db/login/templates/columns_definitions/table_fields_definitions.twig000064400000011427151502156020022220 0ustar00
          {# Only for 'Edit' Column(s) #} {% if change_column is defined and change_column is not empty %} {% endif %} {# We could remove this 'if' and let the key information be shown and editable. However, for this to work, structure.lib.php must be modified to use the key fields, as tbl_addfield does. #} {% if not is_backup %} {% endif %} {% if is_virtual_columns_supported %} {% endif %} {% if fields_meta is defined %} {% endif %} {% if mimework and browse_mime %} {% endif %} {% set options = {'': '', 'VIRTUAL': 'VIRTUAL'} %} {% if server_type == 'MariaDB' %} {% set options = options|merge({'PERSISTENT': 'PERSISTENT'}) %} {% set options = options|merge({'STORED': 'STORED'}) %} {% else %} {% set options = options|merge({'STORED': 'STORED'}) %} {% endif %} {% for content_row in content_cells %} {% include 'columns_definitions/column_attributes.twig' with content_row|merge({ 'options': options, 'change_column': change_column, 'is_virtual_columns_supported': is_virtual_columns_supported, 'browse_mime': browse_mime, 'max_rows': max_rows, 'char_editing': char_editing, 'attribute_types': attribute_types, 'privs_available': privs_available, 'max_length': max_length, 'dbi': dbi, 'disable_is': disable_is }) only %} {% endfor %}
          {% trans 'Structure' %} {{ Util_showMySQLDocu('CREATE_TABLE') }}
          {% trans 'Name' %} {% trans 'Type' %} {{ Util_showMySQLDocu('data-types') }} {% trans 'Length/Values' %} {{ Util_showHint('If column type is "enum" or "set", please enter the values using this format: \'a\',\'b\',\'c\'…
          If you ever need to put a backslash ("\") or a single quote ("\'") amongst those values, precede it with a backslash (for example \'\\\\xyz\' or \'a\\\'b\').'|trans) }}
          {% trans 'Default' %} {{ Util_showHint('For default values, please enter just a single value, without backslash escaping or quotes, using this format: a'|trans) }} {% trans 'Collation' %} {% trans 'Attributes' %} {% trans 'Null' %} {% trans 'Adjust privileges' %} {{ Util_showDocu('faq', 'faq6-39') }} {% trans 'Index' %} A_I {% trans 'Comments' %} {% trans 'Virtuality' %} {% trans 'Move column' %} {% trans 'MIME type' %} {% trans 'Browser display transformation' %} {% trans 'Browser display transformation options' %} {{ Util_showHint('Please enter the values for transformation options using this format: \'a\', 100, b,\'c\'…
          If you ever need to put a backslash ("\\") or a single quote ("\'") amongst those values, precede it with a backslash (for example \'\\\\xyz\' or \'a\\\'b\').'|trans) }}
          {% trans 'Input transformation' %} {% trans 'Input transformation options' %} {{ Util_showHint('Please enter the values for transformation options using this format: \'a\', 100, b,\'c\'…
          If you ever need to put a backslash ("\\") or a single quote ("\'") amongst those values, precede it with a backslash (for example \'\\\\xyz\' or \'a\\\'b\').'|trans) }}
          db/login/templates/columns_definitions/column_adjust_privileges.twig000064400000001166151502156020022307 0ustar00{% if privs_available %} {% else %} {% endif %} db/login/templates/columns_definitions/column_attribute.twig000064400000001615151502156020020566 0ustar00{% if submit_attribute is defined and submit_attribute != false %} {% set attribute = submit_attribute %} {% elseif column_meta['Extra'] is defined and column_meta['Extra'] == 'on update CURRENT_TIMESTAMP' %} {% set attribute = 'on update CURRENT_TIMESTAMP' %} {% elseif extracted_columnspec['attribute'] is defined %} {% set attribute = extracted_columnspec['attribute'] %} {% else %} {% set attribute = '' %} {% endif %} {% set attribute = attribute|upper %} db/login/templates/columns_definitions/move_column.twig000064400000001167151502156020017533 0ustar00 db/login/templates/columns_definitions/transformation_option.twig000064400000000647151502156020021650 0ustar00{% set options_key = type_prefix ~ 'transformation_options' %} db/login/templates/columns_definitions/transformation.twig000064400000002326151502156020020254 0ustar00 db/login/templates/columns_definitions/column_auto_increment.twig000064400000000445151502156020021577 0ustar00 db/login/templates/columns_definitions/column_null.twig000064400000000504151502156020017531 0ustar00 db/login/templates/columns_definitions/column_default.twig000064400000003336151502156020020211 0ustar00{# here we put 'NONE' as the default value of drop-down; otherwise users would have problems if they forget to enter the default value (example, for an INT) #} {% set translation %}{% trans %}None{% context %}for default{% endtrans %}{% endset %} {% set default_options = { 'NONE': translation, 'USER_DEFINED': 'As defined:'|trans, 'NULL': 'NULL', 'CURRENT_TIMESTAMP': 'CURRENT_TIMESTAMP' } %} {# For a TIMESTAMP, do not show the string "CURRENT_TIMESTAMP" as a default value #} {% set default_value = '' %} {% if column_meta['DefaultValue'] is defined %} {% set default_value = column_meta['DefaultValue'] %} {% endif %} {% if type_upper == 'BIT' %} {% set default_value = Util_convertBitDefaultValue(column_meta['DefaultValue']) %} {% elseif type_upper == 'BINARY' or type_upper == 'VARBINARY' %} {% set default_value = bin2hex(column_meta['DefaultValue']) %} {% endif %} {% if char_editing == 'textarea' %} {% else %} {% endif %} db/login/templates/columns_definitions/column_definitions_form.twig000064400000013673151502156020022130 0ustar00
          {{ Url_getHiddenInputs(form_params) }} {# happens when an index has been set on a column #} {# and a column is added to the table creation dialog #} {# This contains a JSON-encoded string #} {% if action == 'tbl_create.php' %}
          {% trans 'Table name' %}: {% trans 'Add' %} {% trans 'column(s)' %}
          {% endif %} {% if content_cells is iterable %} {% include 'columns_definitions/table_fields_definitions.twig' with { 'is_backup': is_backup, 'fields_meta': fields_meta, 'mimework': mimework, 'content_cells': content_cells, 'change_column': change_column, 'is_virtual_columns_supported': is_virtual_columns_supported, 'browse_mime': browse_mime, 'server_type': server_type, 'max_rows': max_rows, 'char_editing': char_editing, 'attribute_types': attribute_types, 'privs_available': privs_available, 'max_length': max_length, 'dbi': dbi, 'disable_is': disable_is } only %} {% endif %} {% if action == 'tbl_create.php' %}
          {% if have_partitioning %} {% endif %}
          {% trans 'Table comments:' %}   {% trans 'Collation:' %}   {% trans 'Storage Engine:' %} {{ Util_showMySQLDocu('Storage_engines') }}   {% trans 'Connection:' %} {{ Util_showMySQLDocu('federated-create-connection') }}
            {{ Charsets_getCollationDropdownBox( dbi, disable_is, 'tbl_collation', null, tbl_collation, false ) }}   {{ StorageEngine_getHtmlSelect( 'tbl_storage_engine', null, tbl_storage_engine ) }}  
          {% trans 'PARTITION definition:' %} {{ Util_showMySQLDocu('Partitioning') }}
          {% include 'columns_definitions/partitions.twig' with { 'partition_details': partition_details } only %}
          {% endif %}
          db/login/templates/columns_definitions/column_length.twig000064400000000624151502156020020043 0ustar00

          {% trans 'Edit ENUM/SET values' %}

          db/login/templates/columns_definitions/column_extra.twig000064400000000437151502156020017707 0ustar00 db/login/templates/columns_definitions/column_virtuality.twig000064400000001701151502156020020773 0ustar00 {% if char_editing == 'textarea' %} {% apply spaceless %} {% endapply %} {% else %} {% endif %} db/login/logout.php000064400000000467151502156020010267 0ustar00logOut(); } db/login/phpmyadmin.css.php000064400000001344151502156020011706 0ustar00start(); register_shutdown_function( function () { echo OutputBuffering::getInstance()->getContents(); } ); // Send correct type: header('Content-Type: text/css; charset=UTF-8'); // Cache output in client - the nocache query parameter makes sure that this // file is reloaded when config changes header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT'); ThemeManager::getInstance()->printCss(); db/login/db_qbe.php000064400000011373151502156020010170 0ustar00getRelationsParam(); $savedSearchList = array(); $savedSearch = null; $currentSearchId = null; if ($cfgRelation['savedsearcheswork']) { $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('db_qbe.js'); //Get saved search list. $savedSearch = new SavedSearches($GLOBALS); $savedSearch->setUsername($GLOBALS['cfg']['Server']['user']) ->setDbname($GLOBALS['db']); if (!empty($_POST['searchId'])) { $savedSearch->setId($_POST['searchId']); } //Action field is sent. if (isset($_POST['action'])) { $savedSearch->setSearchName($_POST['searchName']); if ('create' === $_POST['action']) { $saveResult = $savedSearch->setId(null) ->setCriterias($_POST) ->save(); } elseif ('update' === $_POST['action']) { $saveResult = $savedSearch->setCriterias($_POST) ->save(); } elseif ('delete' === $_POST['action']) { $deleteResult = $savedSearch->delete(); //After deletion, reset search. $savedSearch = new SavedSearches($GLOBALS); $savedSearch->setUsername($GLOBALS['cfg']['Server']['user']) ->setDbname($GLOBALS['db']); $_POST = array(); } elseif ('load' === $_POST['action']) { if (empty($_POST['searchId'])) { //when not loading a search, reset the object. $savedSearch = new SavedSearches($GLOBALS); $savedSearch->setUsername($GLOBALS['cfg']['Server']['user']) ->setDbname($GLOBALS['db']); $_POST = array(); } else { $loadResult = $savedSearch->load(); } } //Else, it's an "update query" } $savedSearchList = $savedSearch->getList(); $currentSearchId = $savedSearch->getId(); } /** * A query has been submitted -> (maybe) execute it */ $message_to_display = false; if (isset($_POST['submit_sql']) && ! empty($sql_query)) { if (! preg_match('@^SELECT@i', $sql_query)) { $message_to_display = true; } else { $goto = 'db_sql.php'; $sql = new Sql(); $sql->executeQueryAndSendQueryResponse( null, // analyzed_sql_results false, // is_gotofile $_POST['db'], // db null, // table false, // find_real_end null, // sql_query_for_bookmark null, // extra_data null, // message_to_show null, // message null, // sql_data $goto, // goto $pmaThemeImage, // pmaThemeImage null, // disp_query null, // disp_message null, // query_type $sql_query, // sql_query null, // selectedTables null // complete_query ); } } $sub_part = '_qbe'; require 'libraries/db_common.inc.php'; $url_query .= '&goto=db_qbe.php'; $url_params['goto'] = 'db_qbe.php'; list( $tables, $num_tables, $total_num_tables, $sub_part, $is_show_stats, $db_is_system_schema, $tooltip_truename, $tooltip_aliasname, $pos ) = Util::getDbInfo($db, isset($sub_part) ? $sub_part : ''); if ($message_to_display) { Message::error( __('You have to choose at least one column to display!') ) ->display(); } unset($message_to_display); // create new qbe search instance $db_qbe = new Qbe($GLOBALS['db'], $savedSearchList, $savedSearch); $secondaryTabs = [ 'multi' => [ 'link' => 'db_multi_table_query.php', 'text' => __('Multi-table query'), ], 'qbe' => [ 'link' => 'db_qbe.php', 'text' => __('Query by example'), ], ]; $response->addHTML( Template::get('secondary_tabs')->render([ 'url_params' => $url_params, 'sub_tabs' => $secondaryTabs, ]) ); $url = 'db_designer.php' . Url::getCommon( array_merge( $url_params, array('query' => 1) ) ); $response->addHTML( Message::notice( sprintf( __('Switch to %svisual builder%s'), '', '' ) ) ); /** * Displays the Query by example form */ $response->addHTML($db_qbe->getSelectionForm()); db/login/ChangeLog000064400000042276151502156020010023 0ustar00phpMyAdmin - ChangeLog ====================== 4.9.7 (2020-10-15) - issue #16397 Fix compatibility problems with older PHP versions (also issue #16399) - issue #16396 Fix broken two-factor authentication 4.9.6 (2020-10-09) - issue [security] Fix XSS vulnerability with the transformation feature (PMASA-2020-5) - issue [security] Fix SQL injection vulnerability with search feature (PMASA-2020-6) 4.9.5 (2020-03-20) - issue [security] Fix SQL injection with certain usernames (PMASA-2020-2) - issue [security] Fix SQL injection in particular search situations (PMASA-2020-3) - issue [security] Fix SQL injection and XSS flaw (PMASA-2020-4) - issue Deprecate "options" for the external transformation; options must now be hard-coded along with the program name directly in the file. 4.9.4 (2020-01-07) - issue #15724 Fix 2FA was disabled by a bug - issue [security] Fix SQL injection vulnerability on the user accounts page (PMASA-2020-1) 4.9.3 (2019-12-26) - issue #15570 Fix page contents go underneath of floating menubar in some cases - issue #15591 Fix php notice 'Undefined index: foreign_keys_data' on relations view when the user has column access - issue #15592 Fix php warning "error_reporting() has been disabled for security reasons" - issue #15434 Fix middle click on table sort column name shows a blank page - issue Fix php notice "Undefined index table_create_time" when setting displayed columns on results of a view - issue #15571 Fix fatal error when trying to edit row with row checked and button under the table - issue #15633 Fix designer set display field broken for php 5.x versions - issue #15621 Support CloudFront-Forwarded-Proto header for Amazon CloudFront proxy - issue Fix php 8.0 php notices - Undefined index on login page - issue #15640 Fix php 7.4 error when trying to access array offset on value of type null on table browse - issue #15641 Fix replication actions where broken (start slave, stop slave, reset, ...) - issue #15608 Fix DisableIS is broken when with controluser configured (database list broken) - issue #15614 Fix undefined offset on index page for MySQL 5.7.8 (server charset) - issue #15692 Fix JavaScript error when user has not enough privilege to view query statistics. - issue #14248 Fixed date selection in search menu missing higher Z-index value - issue Fix Uncaught php TypeError on php 8.0 when adding a column to table create form - issue #15682 Fix calendar not taking current time as default value - issue #15636 Fix php error trying to access array offset on value o type null on replication GUI - issue #15695 Fix input field for the time in datetime picker is disabled 4.9.2 (2019-11-21) - issue #14184 Change the cookie name from phpMyAdmin to phpMyAdmin_https for HTTPS, fixes many "Failed to set session cookie" errors - issue #15304 Fix ssl_use php error - issue #14804 Fix undefined index: ssl_* variables - issue #14245 Fix mysql 8.0.3 and above fails on advisor - issue #15499 Fix unparenthesized php deprecation - issue #15482 Fix URL encoding plus sign (+) in the table or DB name when configuring foreign keys - issue #14898 Fixed bottom table in list in left panel blocked by horizontal scroll bar - issue #15161 Fix text area overflows its parent element on "Query" page - issue #15511 Fixed exporting users after a delete will delete all selected users on "Users" page - issue #14598 Fixed checking referencial integrity on "Operations" page - issue #14433 Fix "You do not have privileges to manipulate with the users!" on root superadmin - issue #15391 Fix GIS polygon of a geometry field is not drawn on "GIS visualization" - issue #15311 Fix adjust privileges on copy database fails with MariaDB - issue #15477 Fix display referential integrity check for InnoDB - issue #15236 Support phpunit 8 in our test suite to help packaging phpMyAdmin on Debian - issue #15522 Fix missing image error fills logs, removed ic_b_info icon from icon list - issue #15537 Fixed some issues with the sort by key selectors - issue #15546 Fix operators precedence in DatabaseInterface class - issue #14906 Test test suite on 32-bit systems - issue Fix Long2IP transformation issue with PHP 7.1 - issue #14951 Fix moving columns with DEFAULT NULL doesn't work on MariaDB 10.2+ - issue #14951 Fix moving columns with INT AND DEFAULT CURRENT_TIMESTAMP doesn't work on MariaDB - issue #12241 Fixed table alias is removed when exporting a query - issue #15316 Fixed cross join clause is removed on export - issue #14809 Fix error "is_uploaded_file() expects parameter 1 to be string" when inserting blobs from files - issue #15127 Fix white square when refreshing designer or browsing other pages - issue #13912 Detect when phpMyAdmin storage tables are not accessible, help users browse corrupt DBs - issue #15465 Display profiling when query outputs no rows - issue Fix setting and removing display field on Designer - issue Added a warning when trying to set a display field on Designer and configuration storage is not setup - issue #15327 Fix shift-click in Export misses a checkbox - issue [security] Fix improperly sanitized data when showing the Git branch (thanks to Ali Hubail for this report) - issue [security] Fix security weaknesses in Designer feature,including a flaw where an attacker could trigger an SQL injection attack (PMASA-2019-5) 4.9.1 (2019-09-20) - issue #15313 Added support for Twig 2 - issue #15315 Fix cannot edit or export column with default CURRENT_TIMESTAMP in MySQL >= 8.0.13 - issue Fix a TypeError in Import class with PHP 8 - issue #14270 Fix Middle-click on foreign key link broken - issue #14363 Fix broken relational links in tables - issue #14987 Fix weird error for empty collation - issue #15334 Fix export of GIS visualisation not working (PNG, PDF, SVG) - issue #14918 Use hex for the phpMyAdmin session token - issue Added GB18030 Chinese collations description - issue Added Russian, Swedish, Slovak and Chinese UCA 9.0.0 collations description - issue Added description for the _ks (kana-sensitive) collation suffix - issue Added description for the _nopad (NO PAD) collation suffix - issue #15404 Remove array/string curly braces access - issue #15427 Fixed "FilterLanguages" option does not work (configuration) - issue #15202 Fixed creating user with single quote in password results in no password user - issue #14950 Fixed left database overview "add column" triggers error - issue #15363 Fix remove unexpected quotes on text fields (structure and insert) - issue Fix NULL wrongly checked on field change - issue #15388 Fix allow to rollback an empty statement - issue #14291 Fixed incorrect linkage from one table's value to another table - issue #15446 Fix tables added from other databases are not collapsing in the designer section - issue #14945 Fix designer page save fails if dB name contains period - issue Display an error when trying to import in designer a table that's already imported - issue Fix many bugs when adding new tables to designer - issue Update CodeMirror to v5.48.4 - issue Update jQuery Migrate to v3.1.0 - issue Update jQuery Validation to v1.19.1 - issue Update jQuery to v3.4.1 - issue Update js-cookie to v2.2.1 - issue Remove fieldset closing tag when setting global privileges - issue #15425 Fix backslash in column name resulting an error in editing - issue #15380 Fix Status - Advisor error - issue #15439 Fix designer page status not updated when added a new table from another database - issue #15440 Fix page number is not being updated in the URL after saving a designer's page - issue Fix reloading a designer's page - issue Fix designer full screen mode button and text stuck when exiting full-screen mode - issue Reduced possibility of causing heavy server traffic between the database and web servers - issue Fix a situation where a server could be deleted while an administator is using the setup script 4.9.0.1 (2019-06-04) - issue #14478 phpMyAdmin no longer streams the export data - issue #14514 Tables with SYSTEM VERSIONING show up as views instead of tables - issue #14515 Values cannot be edited in SYSTEM VERSIONING tables with INVISIBLE timestamps - issue Fix header icon on server plugins page - issue #14298 Fixed error 500 on MultiTableQuery page when a empty query is passed - issue #14402 Fixed fatal javascript error while adding index to a new column - issue #14896 Fixed issue with plus/minus icon when refreshing an expanded database - issue #14922 Fixed json encode error in export - issue #13975 Fixed missing query time in German (fix decimal number format issue) - issue #14503 Fixed JavaScript events not activating on input (sql bookmark issue) - issue #14898 Fixed Bottom table is blocked in database list (left panel) - issue #14425 Fixed Null Checkbox automatically unmarked - issue #14870 Display correct date and time in Zip files - issue #14763 Fixed the loading symbol not appearing when refreshing the navigation - issue #14607 Count rows only if needed - issue #14832 Show Designer combo boxes when adding a constraint - issue #14948 Fix change password is not showing password strength difference at the second attempt - issue #14868 Fix edit view - issue #14943 Fixed loading Forever when creating new view without filling any field - issue #14843 Fix Bookmark::get() id matching SQL - issue #14734 Fixed invalid default value for bit field - issue #14311 Fixed undefined index in setup script - issue #14991 Fixed TypeError in GIS editor - issue Fixed GIS data editor for multi server setup - issue #14312 Fixed type error in setup script when adding new server - issue #14053 Fix missed padding on query results - issue #14826 Fixed javascript error PMA_messages is not defined - issue Show error message if config-set fails and not "loading..." forever - issue #14359 Prevent multiple error modals, and error-report request spamming from script - issue Fixed error reporting javascript errors on multi server setup - issue Fixed wrong property name on TableStructureController - issue #14811 Fix SHOW FULL TABLES FROM when a table is locked - issue #14916 Fix bug when creating or editing views - issue #14931 Fixed php error when using a query like SELECT 1 INTO @a; SELECT @a; in inline query edit - issue #15074 Make the server logo visible on theme "original" - issue #15077 Fixed incorrect page numbers - issue #14205 Fixed "No tables found in database" when you delete all tables from last page - issue #14957 Virtuality is not selected when editing generated column (added virtuality(stored) option for mariadb) - issue #14853 Insert page should not allow entering things into virtual columns - issue #15110 Fixed TypeError e.preventDefaulut is not a function - issue #15115 Improved label in Settings export, clarifying that it's a JSON file - issue #14816 Fixed [designer] Cannot read property 'style' of null - issue Fixed [designer] Add new tables with database/table list modal - issue Fixed query format on multi server setup - issue Fixed remove partitioning on multi server setup - issue Fixed normalization - issue Fixed 'RESET SLAVE' button on replication slave - issue Fixed sending a php error report on multi server setup - issue Fixed downloading of monitor parameters for IE 11, Edge, Chrome and others - issue #15141 Fixed php notice Undefined index: designer_settings - issue #12729 Fixed sticky table header over dropdown menu - issue #15140 Fixed edit link does not work on failed insert - issue #14334 Fixed export table structure shows rows fields - issue #15010 Fixed empty SQL preview modal on tbl_relation - issue #14673 Fixed innodb & MySQL 8: DYNAMIC & COMPRESSED ROW_FORMAT missing - issue Fixed empty success message when adding a new INDEX from left panel - issue #15150 Fixed generate password hidden on second open of change password modal - issue Fixed import XML data with leading zeros - issue #15036 Fixed missing input fields checks for MaxSizeForInputField - issue #15119 Fixed uninterpreted HTML on Settings->Export page - issue #15159 Fixed missing query time and database in console - issue #13713 Fixed column comments in the floating table header - issue #15177 Fixed label alignment on login page - issue #15210 Fixed a typo in the english name of the Albanian language - issue Fixed issue when resetting charset in import.php - issue #14460 Fixed forms where submitted multiple times on CTRL + ENTER - issue #15038 Fixed console height was allowing a negative values - issue #15219 Fixed 'No Password' option does not switch automatically to 'Use Text Field' in add user account - issue Fixed importing the exported config on Server status monitor page - issue #15228 Fixed php notice 'Undefined index: foreign_keys_data' on designer when the user has column access - issue #12900 Fixed designer page saving gives error when configuration storage is not set up - issue #15229 Fixed php notice, added support for 'DELETE HISTORY' table privilege (MariaDB >= 10.3.4) - issue #14527 Fixed import settings function not working - issue #14908 Fixed uninterpreted HTML on Settings->Import (missing data error descriptions) - issue #14800 Fixed status->Processes doesn't show full query process list page - issue #14833 Fixed sort by Time not working in process list page - issue #14982 Fixed setting "null" keep an "enum" value - issue #14401 Fixed insert rows keypress Enter behavior - issue #15146 Fixed error reports can not be sent because they are too large - issue #15205 Fixed useless backquotes on sql preview modal when deleting an index - issue #13178 Fixed issues with uppercase table and database names (lower_case_table_names=1) - issue #14383 Fixed warning when browsing certain tables (GIS data) - issue #12865 Fixed MySQL 8.0.0 issues with GIS display - issue #15059 Fixed "Server charset" in "Database server" tab showing wrong information - issue #14614 Fixed mysql error "#2014 - Commands out of sync; you can't run this command now" on sql query - issue #15238 Fixed phpMyAdmin 4.8.5 doesn't show privileges of procedures (raw html displayed instead) - issue #13726 Fixed can not copy user on Percona Server 5.7 - issue #15239 Fixed javascript error while fetching latest version info and switching pages - issue #14301 Fixed javascript error when editing a JSON data type column - issue #15240 Fixed apply a Settings form with errors shows a JSON response after using return back - issue #15043 Fixed multiple errors printing on Settings page - issue #15037 Fixed unexpected behavior of reset button on Settings - issue #15157 Fixed 'Settings' tab not marked as active when browsing 2FA settings - issue #14934 Fixed all fields readonly on Edit/Insert screens - issue #14588 Fixed export of geometry objects, GIS objects are now exported as hex - issue #14412 Better handling of errors with Signon authentication type - issue Added support for AUTO_INCREMENT when using ROCKSDB, on Operations page - issue #15276 Fixed partitioning is missing in Structure page UI (MySQL 8.0) - issue #14252 Fixed DisableIS and database tree list (new database missing when refreshing the list) - issue #14621 Removed "Propose table structure" on MySQL 8.0 - issue Fixed editing of virtual columns on PerconaDB - issue #13854 Fixed column options are ignored for GENERATED/VIRTUAL/STORED columns - issue #15262 Fixed incorrect display of charset column (raw html) - issue Added explicit parentheses in nested ternary operators - issue #15287 Fix auto_increment field is too small - issue #15283 Fix tries to change collation on views when changing collation on all tables/fields - issue Fixed empty PMA_gotoWhitelist JavaScript array - issue #15079 Fixed responsive behaviour of instruction dialog box - issue #10846 Fixed javascript error when renaming a table - issue Updated sql-parser to version 4.3.2 - issue [security] SQL injection in Designer (PMASA-2019-3) - issue [security] CSRF attack on 'cookie' login form (PMASA-2019-4) 4.8.5 (2019-01-25) - issue Developer debug data was saved to the PHP error log - issue #14217 Fix issue when adding user on MySQL 8.0.11 - issue #13788 Exporting a view structure based on another view with a sub-query throws no database selected error - issue #14635 Fix PHP error in GitRevision, error in processing request, error code 200 - issue #14787 Cannot execute stored procedure - issue Add Burmese language - issue #14794 Not responding to click, frozen interface, plugin Text_Plain_Sql error - issue #14786 Table level Operations functions missing - issue #14791 PHP warning, db_export.php#L91 urldecode() - issue #14775 Export to SQL format not available for tables - issue #14782 Error message shown instead of two-factor QR code when adding 2fa to a user - issue [security] Arbitrary file read/delete relating to MySQL LOAD DATA LOCAL INFILE and an evil server instance (PMASA-2019-1) - issue [security] SQL injection in Designer (PMASA-2019-2) --- Older ChangeLogs can be found on our project website --- https://www.phpmyadmin.net/old-stuff/ChangeLogs/ # vim: et ts=4 sw=4 sts=4 # vim: ft=changelog fenc=utf-8 # vim: fde=getline(v\:lnum-1)=~'^\\s*$'&&getline(v\:lnum)=~'\\S'?'>1'\:1&&v\:lnum>4&&getline(v\:lnum)!~'^#' # vim: fdn=1 fdm=expr db/login/tbl_row_action.php000064400000011615151502156020011760 0ustar00setRequestStatus(false); $response->addJSON('message', __('No row selected.')); } switch($submit_mult) { /** @noinspection PhpMissingBreakStatementInspection */ case 'row_copy': $_POST['default_action'] = 'insert'; // no break to allow for fallthough case 'row_edit': // As we got the rows to be edited from the // 'rows_to_delete' checkbox, we use the index of it as the // indicating WHERE clause. Then we build the array which is used // for the tbl_change.php script. $where_clause = array(); if (isset($_POST['rows_to_delete']) && is_array($_POST['rows_to_delete']) ) { foreach ($_POST['rows_to_delete'] as $i => $i_where_clause) { $where_clause[] = $i_where_clause; } } $active_page = 'tbl_change.php'; include 'tbl_change.php'; break; case 'row_export': // Needed to allow SQL export $single_table = true; // As we got the rows to be exported from the // 'rows_to_delete' checkbox, we use the index of it as the // indicating WHERE clause. Then we build the array which is used // for the tbl_change.php script. $where_clause = array(); if (isset($_POST['rows_to_delete']) && is_array($_POST['rows_to_delete']) ) { foreach ($_POST['rows_to_delete'] as $i => $i_where_clause) { $where_clause[] = $i_where_clause; } } $active_page = 'tbl_export.php'; include 'tbl_export.php'; break; case 'row_delete': default: $action = 'tbl_row_action.php'; $err_url = 'tbl_row_action.php' . Url::getCommon($GLOBALS['url_params']); if (! isset($_POST['mult_btn'])) { $original_sql_query = $sql_query; if (! empty($url_query)) { $original_url_query = $url_query; } } include 'libraries/mult_submits.inc.php'; $_url_params = $GLOBALS['url_params']; $_url_params['goto'] = 'tbl_sql.php'; $url_query = Url::getCommon($_url_params); /** * Show result of multi submit operation */ // sql_query is not set when user does not confirm multi-delete if ((! empty($submit_mult) || isset($_POST['mult_btn'])) && ! empty($sql_query) ) { $disp_message = __('Your SQL query has been executed successfully.'); $disp_query = $sql_query; } if (isset($original_sql_query)) { $sql_query = $original_sql_query; } if (isset($original_url_query)) { $url_query = $original_url_query; } $active_page = 'sql.php'; $sql = new Sql(); $sql->executeQueryAndSendQueryResponse( null, // analyzed_sql_results false, // is_gotofile $db, // db $table, // table null, // find_real_end null, // sql_query_for_bookmark null, // extra_data null, // message_to_show null, // message null, // sql_data $goto, // goto $pmaThemeImage, // pmaThemeImage null, // disp_query null, // disp_message null, // query_type $sql_query, // sql_query null, // selectedTables null // complete_query ); } } db/login/db_multi_table_query.php000064400000002016151502156020013141 0ustar00getForeignKeyConstrains( $_REQUEST['db'], $_GET['tables'] ); $response = Response::getInstance(); $response->addJSON('foreignKeyConstrains',$constrains); } else { $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('vendor/jquery/jquery.md5.js'); $scripts->addFile('db_multi_table_query.js'); $scripts->addFile('db_query_generator.js'); $queryInstance = new MultiTableQuery($GLOBALS['dbi'], $db); $response->addHTML($queryInstance->getFormHtml()); } db/login/setup/styles.css000064400000024503151502156020011437 0ustar00/* global styles */ body { margin-right: auto; min-width: 960px; padding-bottom: 1em; color: #444; font: .8em sans-serif; background: url(../themes/pmahomme/img/left_nav_bg.png) repeat-y 80px 0 #f3f3f3; } input, button, select, textarea, th, td { font: 1em sans-serif; } img { border: 0; } a, a:link, a:visited, a:active { text-decoration: none; color: #235a81; cursor: pointer; outline: none; } a:hover { text-decoration: underline; color: #235a81; } h1 { font-size: 1.5em; } /* language selection box */ #select_lang { position: absolute; right: 1em; top: 1em; } /* menu */ #menu { float: left; width: 220px; font-size: 1.1em; } #menu ul { margin: 1em 1em 1em .5em; padding: 0; list-style: none; } #menu li a { padding: .5em .6em; margin-right: .6em; display: block; color: #333; text-decoration: none; zoom: 1; /* IE fix */ } #menu li a:hover, #menu li a:active, #menu li a.active { background-color: #e4e4e4; } /* page contents and footer layout */ #page { margin-left: 220px; margin-right: 25px; } #footer { margin-top: 1em; } #footer a { margin-right: 0.5em; text-decoration: none; font-size: small; } /* phpMyAdmin logo colors */ .blue { color: #666699; } .orange { color: #FF9900; } .red { color: #C00; } /* main page messages */ /* message boxes: error, confirmation */ .success h4, .notice h4, div.error h4 { border-bottom: 1px solid; font-weight: bold; margin: 0 0 .2em 0; } div.success, div.notice, div.error { margin: .5em 0 1.3em 0; border: 1px solid; background: no-repeat 10px 10px; padding: 10px 10px 10px 25px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; -moz-box-shadow: 0 1px 1px #fff inset; -webkit-box-shadow: 0 1px 1px #fff inset; box-shadow: 0 1px 1px #fff inset; } .success a, .notice a, .error a { text-decoration: underline; } .success { color: #000; background-color: #ebf8a4; } h1.success, div.success { border-color: #a2d246; background: url(../themes/pmahomme/img/s_success.png) no-repeat 5px 10px; } .success h4 { border-color: #00FF00; } .notice { color: #000; background-color: #e8eef1; } h1.notice, div.notice { border-color: #3a6c7e; background: url(../themes/pmahomme/img/s_notice.png) no-repeat 5px 10px; } .notice h4 { border-color: #ffb10a; } .error { border: 1px solid maroon !important; color: #000; background: pink; } h1.error, div.error { border-color: #333; background: url(../themes/pmahomme/img/s_error.png) no-repeat 5px 10px; } div.error h4 { border-color: #ff0000; } div.notice[id^=version_check] { border-color: #002DFF; background-color: #EEF; } div.notice[id^=version_check] h4 { border-color: #002DFF; } /* form tabs */ ul.tabs { margin: 1.1em 2px 0; padding: 0 0 3px 0; list-style: none; font-weight: bold; } ul.tabs li { float: left; margin-bottom: -1px; } ul.tabs li a { display: block; margin: 1px .2em 0; white-space: nowrap; text-decoration: none; border: 1px solid #D5D5D5; border-bottom: 1px solid #aaa; } ul.tabs li a { padding: 7px 10px; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; background: #f2f2f2; color: #555; text-shadow: 0 1px 0 #fff; } ul.tabs li a:hover, ul.tabs li a:active { background: #e5e5e5; } ul.tabs li.active a { background-color: #fff; margin-top: 1px; color: #000; text-shadow: none; border-color: #aaa; border-bottom: 1px solid #fff; } .tabs_contents { margin-top: 13px; } .tabs_contents fieldset { margin-top: 0; } .tabs_contents legend { display: none; } /* "restore default value" and "set value: foo" buttons */ .restore-default img, .set-value img { margin-bottom: -3px; } .userprefs-comment { cursor: help; float: right; } /* forms */ fieldset { margin-top: 1em; border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; border: #aaa solid 1px; padding: 1.5em; background: #eee; text-shadow: 0 1px 0 #fff; -moz-box-shadow: 1px 1px 2px #fff inset; -webkit-box-shadow: 1px 1px 2px #fff inset; box-shadow: 1px 1px 2px #fff inset; } fieldset.optbox { padding: 0; } fieldset fieldset { margin: .8em; border: 1px solid #aaa; background: #E8E8E8; } fieldset legend { font-weight: bold; color: #444; padding: 5px 10px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border: 1px solid #aaa; background-color: #fff; -moz-box-shadow: 3px 3px 15px #bbb; -webkit-box-shadow: 3px 3px 15px #bbb; box-shadow: 3px 3px 15px #bbb; } .form { border: 2px #DEE1FF solid; } fieldset p { margin: 0; padding: .5em; background: #fff; border-top: 0; } fieldset .errors { /* form error list */ margin: 0 -2px 1em -2px; padding: 0.5em 1.5em; background: #FBEAD9; border: 1px #C83838 solid; border-width: 1px 0; list-style: none; font-family: sans-serif; font-size: small; } fieldset .inline_errors { /* field error list */ margin: 0.3em 0.3em 0.3em 0; padding: 0; list-style: none; color: #9A0000; font-size: small; } table caption, table th, table td { text-shadow: 0 1px 0 #FFFFFF; } fieldset th { width: 40%; min-width: 350px; padding: 0.3em 0.3em 0.3em 0.5em; text-align: left; font-weight: bold; vertical-align: top; } fieldset.simple th { width: auto; min-width: 0; } fieldset .doc { margin-left: 1em; } fieldset td { padding-top: 0.3em; vertical-align: top; } fieldset td.userprefs-allow { padding: 0; vertical-align: middle; text-align: center; width: 3em; } fieldset td.userprefs-allow:hover { cursor: pointer; background-color: #EEE; } fieldset th small { display: block; font-weight: normal; font-family: sans-serif; font-size: x-small; color: #666; } fieldset th, fieldset td, .form .lastrow { border-top: 1px solid #D5D5D5; } fieldset .group-header th { background: #EAEDFF; border: none; } fieldset .group-field-1 th, fieldset .group-header-2 th { padding-left: 1em; } fieldset .group-field-2 th, fieldset .group-header-3 th { padding-left: 2em; } fieldset .group-field-3 th { padding-left: 3em; } fieldset .lastrow, .form .lastrow { border-top: 1px #000 solid; background: #D3DCE3; padding: .5em; text-align: center; } input[type=text], input[type=password], input[type=number] { border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 0 1px 2px #ddd; -moz-box-shadow: 0 1px 2px #ddd; -webkit-box-shadow: 0 1px 2px #ddd; background: white; border: 1px solid #aaa; color: #555; padding: 4px; margin: 6px; } input[type=submit], button[type=submit]:not(.mult_submit) { font-weight: bold !important; } input[type=submit], button[type=submit]:not(.mult_submit), input[type=reset], input[name=submit_reset], input.button { margin-left: 14px; border: 1px solid #aaa; padding: 3px 7px; color: #111; text-decoration: none; background: #ddd; border-radius: 12px; -webkit-border-radius: 12px; -moz-border-radius: 12px; text-shadow: 0 1px 0 #fff; background-image: url(../themes/svg_gradient.php?from=ffffff&to=cccccc); background-size: 100% 100%; background: -webkit-linear-gradient(top, #ffffff, #cccccc); background: -moz-linear-gradient(top, #ffffff, #cccccc); background: -ms-linear-gradient(top, #ffffff, #cccccc); background: -o-linear-gradient(top, #ffffff, #cccccc); } input[type=submit]:hover, button[type=submit]:not(.mult_submit):hover, input[type=reset]:hover, input[name=submit_reset]:hover, input.button:hover { position: relative; background-image: url(../themes/svg_gradient.php?from=cccccc&to=dddddd); background-size: 100% 100%; background: -webkit-linear-gradient(top, #cccccc, #dddddd); background: -moz-linear-gradient(top, #cccccc, #dddddd); background: -ms-linear-gradient(top, #cccccc, #dddddd); background: -o-linear-gradient(top, #cccccc, #dddddd); cursor: pointer; } input[type=submit]:active, button[type=submit]:not(.mult_submit):active, input[type=reset]:active, input[name=submit_reset]:active, input.button:active { position: relative; top: 1px; left: 1px; } input[type="checkbox"], input[type="radio"] { vertical-align: -11%; } select { -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; -moz-box-shadow: 0 1px 2px #ddd; -webkit-box-shadow: 0 1px 2px #ddd; box-shadow: 0 1px 2px #ddd; border: 1px solid #aaa; color: #333; padding: 3px; background: white; margin: 6px; } fieldset.simple th, fieldset.simple td { border-top: none; border-bottom: 1px #555 dotted; } fieldset.simple .lastrow { border: 0; } /* form elements */ span.checkbox { padding: 2px; display: inline-block; } .custom { /* customized field */ background: #FFC; } .checkbox.custom { padding: 1px; border: 1px #EDEC90 solid; } .field-error { border-color: #C11 !important; } .field-comment { position: relative; } .field-comment-mark { cursor: help; padding: 0 0.2em; font-weight: bold; font-style: italic; } .field-comment-warning { color: #A00; } .green { /* default form button */ color: #080 !important; } table.datatable { margin: 0.5em 0 1em; } table.datatable th { padding: 0 1em 0 0.5em; border-bottom: 1px #999 solid; text-align: left; } table.datatable td { padding: 1px 0.5em; border-bottom: 1px #DEE1FF solid; } /* textarea with config file's contents */ #textconfig { width: 100%; border: 0; } /* error list */ dd { margin-left: 0.5em; } dd:before { content: "\25B8 "; } /* links on failed validation page, when saving a form */ a.btn { padding: 1px 5px; text-decoration: none; background: #E2E8FF; border: 1px #A6C8FF solid; border-top-color: #AFD0FF; border-left-color: #AFD0FF; font-weight: bold; } a.btn:hover, a.btn:active { background: #E6F5FF; color: #004C96; } .hide { display: none; } db/login/setup/config.php000064400000002411151502156020011352 0ustar00save('Config'); $response = Response::getInstance(); if (isset($_POST['eol'])) { $_SESSION['eol'] = ($_POST['eol'] == 'unix') ? 'unix' : 'win'; } if (Core::ifSetOr($_POST['submit_clear'], '')) { // // Clear current config and return to main page // $GLOBALS['ConfigFile']->resetConfigData(); // drop post data $response->generateHeader303('index.php' . Url::getCommonRaw()); exit; } elseif (Core::ifSetOr($_POST['submit_download'], '')) { // // Output generated config file // Core::downloadHeader('config.inc.php', 'text/plain'); $response->disable(); echo ConfigGenerator::getConfigFile($GLOBALS['ConfigFile']); exit; } else { // // Show generated config file in a '; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo FormDisplayTemplate::displayFieldsetBottom(false); echo FormDisplayTemplate::displayFormBottom(); db/login/setup/frames/form.inc.php000064400000001237151502156020013102 0ustar00' , $form_class::getName() , ''; $form_display = new $form_class($GLOBALS['ConfigFile']); FormProcessing::process($form_display); db/login/setup/frames/menu.inc.php000064400000001564151502156020013106 0ustar00'; echo '
        • ' , __('Overview') , '
        • '; $ignored = array('Config', 'Servers'); foreach (SetupFormList::getAll() as $formset) { if (in_array($formset, $ignored)) { continue; } $form_class = SetupFormList::get($formset); echo '
        • ' , $form_class::getName() , '
        • '; } echo ''; db/login/setup/index.php000064400000003643151502156020011224 0ustar00 phpMyAdmin setup

          phpMyAdmin setup

          db/login/setup/validate.php000064400000001515151502156020011702 0ustar00 0) { hiddenmessages.hide(); var link = $('#show_hidden_messages'); link.click(function (e) { e.preventDefault(); hiddenmessages.show(); $(this).remove(); }); link.html(link.html().replace('#MSG_COUNT', hiddenmessages.length)); link.show(); } }); // set document width $(document).ready(function () { width = 0; $('ul.tabs li').each(function () { width += $(this).width() + 10; }); var contentWidth = width; width += 250; $('body').css('min-width', width); $('.tabs_contents').css('min-width', contentWidth); }); // // END: Messages // ------------------------------------------------------------------ // ------------------------------------------------------------------ // Form validation and field operations // /** * Calls server-side validation procedures * * @param {Element} parent input field in
          or
          * @param {String} id validator id * @param {Object} values values hash {element1_id: value, ...} */ function ajaxValidate (parent, id, values) { parent = $(parent); // ensure that parent is a fieldset if (parent.attr('tagName') !== 'FIELDSET') { parent = parent.closest('fieldset'); if (parent.length === 0) { return false; } } if (parent.data('ajax') !== null) { parent.data('ajax').abort(); } parent.data('ajax', $.ajax({ url: 'validate.php', cache: false, type: 'POST', data: { token: parent.closest('form').find('input[name=token]').val(), id: id, values: JSON.stringify(values) }, success: function (response) { if (response === null) { return; } var error = {}; if (typeof response !== 'object') { error[parent.id] = [response]; } else if (typeof response.error !== 'undefined') { error[parent.id] = [response.error]; } else { for (var key in response) { var value = response[key]; error[key] = jQuery.isArray(value) ? value : [value]; } } displayErrors(error); }, complete: function () { parent.removeData('ajax'); } })); return true; } /** * Automatic form submission on change. */ $(document).on('change', '.autosubmit', function (e) { e.target.form.submit(); }); $.extend(true, validators, { // field validators _field: { /** * hide_db field * * @param {boolean} isKeyUp */ hide_db: function (isKeyUp) { if (!isKeyUp && this.value !== '') { var data = {}; data[this.id] = this.value; ajaxValidate(this, 'Servers/1/hide_db', data); } return true; }, /** * TrustedProxies field * * @param {boolean} isKeyUp */ TrustedProxies: function (isKeyUp) { if (!isKeyUp && this.value !== '') { var data = {}; data[this.id] = this.value; ajaxValidate(this, 'TrustedProxies', data); } return true; } }, // fieldset validators _fieldset: { /** * Validates Server fieldset * * @param {boolean} isKeyUp */ Server: function (isKeyUp) { if (!isKeyUp) { ajaxValidate(this, 'Server', getAllValues()); } return true; }, /** * Validates Server_login_options fieldset * * @param {boolean} isKeyUp */ Server_login_options: function (isKeyUp) { return validators._fieldset.Server.apply(this, [isKeyUp]); }, /** * Validates Server_pmadb fieldset * * @param {boolean} isKeyUp */ Server_pmadb: function (isKeyUp) { if (isKeyUp) { return true; } var prefix = getIdPrefix($(this).find('input')); if ($('#' + prefix + 'pmadb').val() !== '') { ajaxValidate(this, 'Server_pmadb', getAllValues()); } return true; } } }); // // END: Form validation and field operations // ------------------------------------------------------------------ // ------------------------------------------------------------------ // User preferences allow/disallow UI // $(function () { $('.userprefs-allow').click(function (e) { if (this !== e.target) { return; } var el = $(this).find('input'); if (el.prop('disabled')) { return; } el.prop('checked', !el.prop('checked')); }); }); // // END: User preferences allow/disallow UI // ------------------------------------------------------------------ $(function () { $('.delete-server').on('click', function (e) { e.preventDefault(); var $this = $(this); $.post($this.attr('href'), $this.attr('data-post'), function () { window.location.replace('index.php'); }); }); }); db/login/tbl_sql.php000064400000002230151502156020010404 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('makegrid.js'); $scripts->addFile('vendor/jquery/jquery.uitablefilter.js'); $scripts->addFile('sql.js'); require 'libraries/tbl_common.inc.php'; $url_query .= '&goto=tbl_sql.php&back=tbl_sql.php'; $err_url = 'tbl_sql.php' . $err_url; // After a syntax error, we return to this script // with the typed query in the textarea. $goto = 'tbl_sql.php'; $back = 'tbl_sql.php'; // Decides what query to show in SQL box. $query_to_show = isset($_GET['sql_query']) ? $_GET['sql_query'] : true; /** * Query box, bookmark, insert data from textfile */ $response->addHTML( SqlQueryForm::getHtml( $query_to_show, false, isset($_POST['delimiter']) ? htmlspecialchars($_POST['delimiter']) : ';' ) ); db/login/db_search.php000064400000003715151502156020010667 0ustar00getHeader(); $scripts = $header->getScripts(); $scripts->addFile('db_search.js'); $scripts->addFile('sql.js'); $scripts->addFile('makegrid.js'); require 'libraries/db_common.inc.php'; // If config variable $GLOBALS['cfg']['UseDbSearch'] is on false : exit. if (! $GLOBALS['cfg']['UseDbSearch']) { Util::mysqlDie( __('Access denied!'), '', false, $err_url ); } // end if $url_query .= '&goto=db_search.php'; $url_params['goto'] = 'db_search.php'; // Create a database search instance $db_search = new Search($GLOBALS['db']); // Display top links if we are not in an Ajax request if (! $response->isAjax()) { list( $tables, $num_tables, $total_num_tables, $sub_part, $is_show_stats, $db_is_system_schema, $tooltip_truename, $tooltip_aliasname, $pos ) = Util::getDbInfo($db, isset($sub_part) ? $sub_part : ''); } // Main search form has been submitted, get results if (isset($_POST['submit_search'])) { $response->addHTML($db_search->getSearchResults()); } // If we are in an Ajax request, we need to exit after displaying all the HTML if ($response->isAjax() && empty($_REQUEST['ajax_page_request'])) { exit; } // Display the search form $response->addHTML($db_search->getSelectionForm()); $response->addHTML('
          '); $response->addHTML( '
          ' ); $response->addHTML('
          '); $response->addHTML($db_search->getResultDivs()); db/login/lint.php000064400000002626151502156020007723 0ustar00disable(); Core::headerJSON(); if (! empty($_POST['options'])) { $options = $_POST['options']; if (! empty($options['routine_editor'])) { $sql_query = 'CREATE PROCEDURE `a`() ' . $sql_query; } elseif (! empty($options['trigger_editor'])) { $sql_query = 'CREATE TRIGGER `a` AFTER INSERT ON `b` FOR EACH ROW ' . $sql_query; } elseif (! empty($options['event_editor'])) { $sql_query = 'CREATE EVENT `a` ON SCHEDULE EVERY MINUTE DO ' . $sql_query; } } echo json_encode(Linter::lint($sql_query)); db/login/prefs_twofactor.php000064400000003072151502156020012160 0ustar00check(true)) { echo Template::get('prefs_twofactor_confirm')->render([ 'form' => $two_factor->render(), ]); exit; } else { $two_factor->configure(''); Message::rawNotice(__('Two-factor authentication has been removed.'))->display(); } } elseif (isset($_POST['2fa_configure'])) { if (! $two_factor->configure($_POST['2fa_configure'])) { echo Template::get('prefs_twofactor_configure')->render([ 'form' => $two_factor->setup(), 'configure' => $_POST['2fa_configure'], ]); exit; } else { Message::rawNotice(__('Two-factor authentication has been configured.'))->display(); } } $backend = $two_factor->backend; echo Template::get('prefs_twofactor')->render([ 'enabled' => $two_factor->writable, 'num_backends' => count($two_factor->available), 'backend_id' => $backend::$id, 'backend_name' => $backend::getName(), 'backend_description' => $backend::getDescription(), 'backends' => $two_factor->getAllBackends(), 'missing' => $two_factor->getMissingDeps(), ]); db/login/prefs_manage.php000064400000034024151502156020011401 0ustar00base_settings); $userPreferences->pageInit($cf); $response = Response::getInstance(); $error = ''; if (isset($_POST['submit_export']) && isset($_POST['export_type']) && $_POST['export_type'] == 'text_file' ) { // export to JSON file $response->disable(); $filename = 'phpMyAdmin-config-' . urlencode(Core::getenv('HTTP_HOST')) . '.json'; Core::downloadHeader($filename, 'application/json'); $settings = $userPreferences->load(); echo json_encode($settings['config_data'], JSON_PRETTY_PRINT); exit; } elseif (isset($_POST['submit_export']) && isset($_POST['export_type']) && $_POST['export_type'] == 'php_file' ) { // export to JSON file $response->disable(); $filename = 'phpMyAdmin-config-' . urlencode(Core::getenv('HTTP_HOST')) . '.php'; Core::downloadHeader($filename, 'application/php'); $settings = $userPreferences->load(); echo '/* ' . __('phpMyAdmin configuration snippet') . " */\n\n"; echo '/* ' . __('Paste it to your config.inc.php') . " */\n\n"; foreach ($settings['config_data'] as $key => $val) { echo '$cfg[\'' . str_replace('/', '\'][\'', $key) . '\'] = '; echo var_export($val, true) . ";\n"; } exit; } elseif (isset($_POST['submit_get_json'])) { $settings = $userPreferences->load(); $response->addJSON('prefs', json_encode($settings['config_data'])); $response->addJSON('mtime', $settings['mtime']); exit; } elseif (isset($_POST['submit_import'])) { // load from JSON file $json = ''; if (isset($_POST['import_type']) && $_POST['import_type'] == 'text_file' && isset($_FILES['import_file']) && $_FILES['import_file']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['import_file']['tmp_name']) ) { $import_handle = new File($_FILES['import_file']['tmp_name']); $import_handle->checkUploadedFile(); if ($import_handle->isError()) { $error = $import_handle->getError(); } else { // read JSON from uploaded file $json = $import_handle->getRawContent(); } } else { // read from POST value (json) $json = isset($_POST['json']) ? $_POST['json'] : null; } // hide header message $_SESSION['userprefs_autoload'] = true; $config = json_decode($json, true); $return_url = isset($_POST['return_url']) ? $_POST['return_url'] : null; if (! is_array($config)) { if (! isset($error)) { $error = __('Could not import configuration'); } } else { // sanitize input values: treat them as though // they came from HTTP POST request $form_display = new UserFormList($cf); $new_config = $cf->getFlatDefaultConfig(); if (!empty($_POST['import_merge'])) { $new_config = array_merge($new_config, $cf->getConfigArray()); } $new_config = array_merge($new_config, $config); $_POST_bak = $_POST; foreach ($new_config as $k => $v) { $_POST[str_replace('/', '-', $k)] = $v; } $cf->resetConfigData(); $all_ok = $form_display->process(true, false); $all_ok = $all_ok && !$form_display->hasErrors(); $_POST = $_POST_bak; if (!$all_ok && isset($_POST['fix_errors'])) { $form_display->fixErrors(); $all_ok = true; } if (!$all_ok) { // mimic original form and post json in a hidden field include 'libraries/user_preferences.inc.php'; $msg = Message::error( __('Configuration contains incorrect data for some fields.') ); $msg->display(); echo '
          '; echo $form_display->displayErrors(); echo '
          '; echo '
          '; echo Url::getHiddenInputs() , "\n"; echo ''; echo ''; if (! empty($_POST['import_merge'])) { echo ''; } if ($return_url) { echo ''; } echo '

          '; echo __('Do you want to import remaining settings?'); echo '

          '; echo ''; echo ''; echo '
          '; exit; } // check for ThemeDefault $params = array(); $tmanager = ThemeManager::getInstance(); if (isset($config['ThemeDefault']) && $tmanager->theme->getId() != $config['ThemeDefault'] && $tmanager->checkTheme($config['ThemeDefault']) ) { $tmanager->setActiveTheme($config['ThemeDefault']); $tmanager->setThemeCookie(); } if (isset($config['lang']) && $config['lang'] != $GLOBALS['lang'] ) { $params['lang'] = $config['lang']; } // save settings $result = $userPreferences->save($cf->getConfigArray()); if ($result === true) { if ($return_url) { $query = PhpMyAdmin\Util::splitURLQuery($return_url); $return_url = parse_url($return_url, PHP_URL_PATH); foreach ($query as $q) { $pos = mb_strpos($q, '='); $k = mb_substr($q, 0, $pos); if ($k == 'token') { continue; } $params[$k] = mb_substr($q, $pos + 1); } } else { $return_url = 'prefs_manage.php'; } // reload config $GLOBALS['PMA_Config']->loadUserPreferences(); $userPreferences->redirect($return_url, $params); exit; } else { $error = $result; } } } elseif (isset($_POST['submit_clear'])) { $result = $userPreferences->save(array()); if ($result === true) { $params = array(); $GLOBALS['PMA_Config']->removeCookie('pma_collaction_connection'); $GLOBALS['PMA_Config']->removeCookie('pma_lang'); $userPreferences->redirect('prefs_manage.php', $params); exit; } else { $error = $result; } exit; } $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('config.js'); require 'libraries/user_preferences.inc.php'; if ($error) { if (!$error instanceof Message) { $error = Message::error($error); } $error->display(); } ?>
          ' , __('Import') , '' , '
          ' , Util::generateHiddenMaxFileSize($GLOBALS['max_upload_size']) , Url::getHiddenInputs() , '' , '' , '' , '
          ' , '' , '' , '
          ' , '' , '' , '
          ' , '
          ' , __('Settings will be imported from your browser\'s local storage.') , '
          ' , '
          ' , __('Saved on: @DATE@') , '
          ' , '
          '; Message::notice(__('You have no saved settings!'))->display(); echo '
          ' , '
          ' , '
          '; Message::notice( __('This feature is not supported by your web browser') )->display(); echo '
          ' , '
          ' , '' , '' , '

          ' , '' , '
          ' , '
          '; if (@file_exists('setup/index.php') && ! @file_exists(CONFIG_FILE)) { // show only if setup script is available, allows to disable this message // by simply removing setup directory // Also do not show in config exists (and setup would refuse to work) ?>

          ', '' ) , PhpMyAdmin\Util::showDocu('setup', 'setup-script'); ?>

          display(); ?>


          display(); ?>

          '; ?>




          isAjax()) { $response->addJSON('_disableNaviSettings', true); } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } db/login/server_status_advisor.php000064400000001536151502156020013414 0ustar00getHeader()->getScripts(); $scripts->addFile('server_status_advisor.js'); /** * Output */ $response->addHTML('
          '); $response->addHTML($serverStatusData->getMenuHtml()); if ($serverStatusData->dataLoaded) { $response->addHTML(Advisor::getHtml()); } else { $response->addHTML( Message::error( __('Not enough privilege to view the advisor.') )->getDisplay() ); } $response->addHTML('
          '); exit; db/login/tbl_triggers.php000064400000000215151502156020011434 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Php56; use Symfony\Polyfill\Util\Binary; /** * @internal */ final class Php56 { const LDAP_ESCAPE_FILTER = 1; const LDAP_ESCAPE_DN = 2; public static function hash_equals($knownString, $userInput) { if (!\is_string($knownString)) { trigger_error('Expected known_string to be a string, '.\gettype($knownString).' given', E_USER_WARNING); return false; } if (!\is_string($userInput)) { trigger_error('Expected user_input to be a string, '.\gettype($userInput).' given', E_USER_WARNING); return false; } $knownLen = Binary::strlen($knownString); $userLen = Binary::strlen($userInput); if ($knownLen !== $userLen) { return false; } $result = 0; for ($i = 0; $i < $knownLen; ++$i) { $result |= \ord($knownString[$i]) ^ \ord($userInput[$i]); } return 0 === $result; } /** * Stub implementation of the {@link ldap_escape()} function of the ldap * extension. * * Escape strings for safe use in LDAP filters and DNs. * * @author Chris Wright * * @param string $subject * @param string $ignore * @param int $flags * * @return string * * @see http://stackoverflow.com/a/8561604 */ public static function ldap_escape($subject, $ignore = '', $flags = 0) { static $charMaps = null; if (null === $charMaps) { $charMaps = array( self::LDAP_ESCAPE_FILTER => array('\\', '*', '(', ')', "\x00"), self::LDAP_ESCAPE_DN => array('\\', ',', '=', '+', '<', '>', ';', '"', '#', "\r"), ); $charMaps[0] = array(); for ($i = 0; $i < 256; ++$i) { $charMaps[0][\chr($i)] = sprintf('\\%02x', $i); } for ($i = 0, $l = \count($charMaps[self::LDAP_ESCAPE_FILTER]); $i < $l; ++$i) { $chr = $charMaps[self::LDAP_ESCAPE_FILTER][$i]; unset($charMaps[self::LDAP_ESCAPE_FILTER][$i]); $charMaps[self::LDAP_ESCAPE_FILTER][$chr] = $charMaps[0][$chr]; } for ($i = 0, $l = \count($charMaps[self::LDAP_ESCAPE_DN]); $i < $l; ++$i) { $chr = $charMaps[self::LDAP_ESCAPE_DN][$i]; unset($charMaps[self::LDAP_ESCAPE_DN][$i]); $charMaps[self::LDAP_ESCAPE_DN][$chr] = $charMaps[0][$chr]; } } // Create the base char map to escape $flags = (int) $flags; $charMap = array(); if ($flags & self::LDAP_ESCAPE_FILTER) { $charMap += $charMaps[self::LDAP_ESCAPE_FILTER]; } if ($flags & self::LDAP_ESCAPE_DN) { $charMap += $charMaps[self::LDAP_ESCAPE_DN]; } if (!$charMap) { $charMap = $charMaps[0]; } // Remove any chars to ignore from the list $ignore = (string) $ignore; for ($i = 0, $l = \strlen($ignore); $i < $l; ++$i) { unset($charMap[$ignore[$i]]); } // Do the main replacement $result = strtr($subject, $charMap); // Encode leading/trailing spaces if self::LDAP_ESCAPE_DN is passed if ($flags & self::LDAP_ESCAPE_DN) { if (' ' === $result[0]) { $result = '\\20'.substr($result, 1); } if (' ' === $result[\strlen($result) - 1]) { $result = substr($result, 0, -1).'\\20'; } } return $result; } } db/login/vendor/symfony/polyfill-php56/bootstrap.php000064400000003050151502156020016555 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Php56 as p; if (PHP_VERSION_ID >= 50600) { return; } if (!function_exists('hash_equals')) { function hash_equals($knownString, $userInput) { return p\Php56::hash_equals($knownString, $userInput); } } if (extension_loaded('ldap') && !defined('LDAP_ESCAPE_FILTER')) { define('LDAP_ESCAPE_FILTER', 1); } if (extension_loaded('ldap') && !defined('LDAP_ESCAPE_DN')) { define('LDAP_ESCAPE_DN', 2); } if (extension_loaded('ldap') && !function_exists('ldap_escape')) { function ldap_escape($subject, $ignore = '', $flags = 0) { return p\Php56::ldap_escape($subject, $ignore, $flags); } } if (50509 === PHP_VERSION_ID && 4 === PHP_INT_SIZE) { // Missing functions in PHP 5.5.9 - affects 32 bit builds of Ubuntu 14.04LTS // See https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1315888 if (!function_exists('gzopen') && function_exists('gzopen64')) { function gzopen($filename, $mode, $use_include_path = 0) { return gzopen64($filename, $mode, $use_include_path); } } if (!function_exists('gzseek') && function_exists('gzseek64')) { function gzseek($zp, $offset, $whence = SEEK_SET) { return gzseek64($zp, $offset, $whence); } } if (!function_exists('gztell') && function_exists('gztell64')) { function gztell($zp) { return gztell64($zp); } } } db/login/vendor/symfony/polyfill-php56/composer.json000064400000001736151502156020016562 0ustar00{ "name": "symfony/polyfill-php56", "type": "library", "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", "keywords": ["polyfill", "shim", "compatibility", "portable"], "homepage": "https://symfony.com", "license": "MIT", "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "require": { "php": ">=5.3.3", "symfony/polyfill-util": "~1.0" }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Php56\\": "" }, "files": [ "bootstrap.php" ] }, "minimum-stability": "dev", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } } } db/login/vendor/symfony/polyfill-php56/LICENSE000064400000002051151502156020015034 0ustar00Copyright (c) 2015-2019 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. db/login/vendor/symfony/expression-language/README.md000064400000001213151502156020016473 0ustar00ExpressionLanguage Component ============================ The ExpressionLanguage component provides an engine that can compile and evaluate expressions. An expression is a one-liner that returns a value (mostly, but not limited to, Booleans). Resources --------- * [Documentation](https://symfony.com/doc/current/components/expression_language/introduction.html) * [Contributing](https://symfony.com/doc/current/contributing/index.html) * [Report issues](https://github.com/symfony/symfony/issues) and [send Pull Requests](https://github.com/symfony/symfony/pulls) in the [main Symfony repository](https://github.com/symfony/symfony) db/login/vendor/symfony/expression-language/ExpressionLanguage.php000064400000011647151502156020021544 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; use Symfony\Component\ExpressionLanguage\ParserCache\ArrayParserCache; use Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface; /** * Allows to compile and evaluate expressions written in your own DSL. * * @author Fabien Potencier */ class ExpressionLanguage { private $cache; private $lexer; private $parser; private $compiler; protected $functions = array(); /** * @param ParserCacheInterface $cache * @param ExpressionFunctionProviderInterface[] $providers */ public function __construct(ParserCacheInterface $cache = null, array $providers = array()) { $this->cache = $cache ?: new ArrayParserCache(); $this->registerFunctions(); foreach ($providers as $provider) { $this->registerProvider($provider); } } /** * Compiles an expression source code. * * @param Expression|string $expression The expression to compile * @param array $names An array of valid names * * @return string The compiled PHP source code */ public function compile($expression, $names = array()) { return $this->getCompiler()->compile($this->parse($expression, $names)->getNodes())->getSource(); } /** * Evaluate an expression. * * @param Expression|string $expression The expression to compile * @param array $values An array of values * * @return mixed The result of the evaluation of the expression */ public function evaluate($expression, $values = array()) { return $this->parse($expression, array_keys($values))->getNodes()->evaluate($this->functions, $values); } /** * Parses an expression. * * @param Expression|string $expression The expression to parse * @param array $names An array of valid names * * @return ParsedExpression A ParsedExpression instance */ public function parse($expression, $names) { if ($expression instanceof ParsedExpression) { return $expression; } asort($names); $cacheKeyItems = array(); foreach ($names as $nameKey => $name) { $cacheKeyItems[] = \is_int($nameKey) ? $name : $nameKey.':'.$name; } $key = $expression.'//'.implode('|', $cacheKeyItems); if (null === $parsedExpression = $this->cache->fetch($key)) { $nodes = $this->getParser()->parse($this->getLexer()->tokenize((string) $expression), $names); $parsedExpression = new ParsedExpression((string) $expression, $nodes); $this->cache->save($key, $parsedExpression); } return $parsedExpression; } /** * Registers a function. * * @param string $name The function name * @param callable $compiler A callable able to compile the function * @param callable $evaluator A callable able to evaluate the function * * @throws \LogicException when registering a function after calling evaluate(), compile() or parse() * * @see ExpressionFunction */ public function register($name, $compiler, $evaluator) { if (null !== $this->parser) { throw new \LogicException('Registering functions after calling evaluate(), compile() or parse() is not supported.'); } $this->functions[$name] = array('compiler' => $compiler, 'evaluator' => $evaluator); } public function addFunction(ExpressionFunction $function) { $this->register($function->getName(), $function->getCompiler(), $function->getEvaluator()); } public function registerProvider(ExpressionFunctionProviderInterface $provider) { foreach ($provider->getFunctions() as $function) { $this->addFunction($function); } } protected function registerFunctions() { $this->register('constant', function ($constant) { return sprintf('constant(%s)', $constant); }, function (array $values, $constant) { return \constant($constant); }); } private function getLexer() { if (null === $this->lexer) { $this->lexer = new Lexer(); } return $this->lexer; } private function getParser() { if (null === $this->parser) { $this->parser = new Parser($this->functions); } return $this->parser; } private function getCompiler() { if (null === $this->compiler) { $this->compiler = new Compiler($this->functions); } return $this->compiler->reset(); } } db/login/vendor/symfony/expression-language/ExpressionFunction.php000064400000003244151502156020021600 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Represents a function that can be used in an expression. * * A function is defined by two PHP callables. The callables are used * by the language to compile and/or evaluate the function. * * The "compiler" function is used at compilation time and must return a * PHP representation of the function call (it receives the function * arguments as arguments). * * The "evaluator" function is used for expression evaluation and must return * the value of the function call based on the values defined for the * expression (it receives the values as a first argument and the function * arguments as remaining arguments). * * @author Fabien Potencier */ class ExpressionFunction { private $name; private $compiler; private $evaluator; /** * @param string $name The function name * @param callable $compiler A callable able to compile the function * @param callable $evaluator A callable able to evaluate the function */ public function __construct($name, $compiler, $evaluator) { $this->name = $name; $this->compiler = $compiler; $this->evaluator = $evaluator; } public function getName() { return $this->name; } public function getCompiler() { return $this->compiler; } public function getEvaluator() { return $this->evaluator; } } db/login/vendor/symfony/expression-language/ExpressionFunctionProviderInterface.php000064400000001001151502156020025121 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * @author Fabien Potencier */ interface ExpressionFunctionProviderInterface { /** * @return ExpressionFunction[] An array of Function instances */ public function getFunctions(); } db/login/vendor/symfony/expression-language/Node/ArgumentsNode.php000064400000001072151502156020021370 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class ArgumentsNode extends ArrayNode { public function compile(Compiler $compiler) { $this->compileArguments($compiler, false); } } db/login/vendor/symfony/expression-language/Node/Node.php000064400000003603151502156020017504 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * Represents a node in the AST. * * @author Fabien Potencier */ class Node { public $nodes = array(); public $attributes = array(); /** * @param array $nodes An array of nodes * @param array $attributes An array of attributes */ public function __construct(array $nodes = array(), array $attributes = array()) { $this->nodes = $nodes; $this->attributes = $attributes; } public function __toString() { $attributes = array(); foreach ($this->attributes as $name => $value) { $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true))); } $repr = array(str_replace('Symfony\Component\ExpressionLanguage\Node\\', '', \get_class($this)).'('.implode(', ', $attributes)); if (\count($this->nodes)) { foreach ($this->nodes as $node) { foreach (explode("\n", (string) $node) as $line) { $repr[] = ' '.$line; } } $repr[] = ')'; } else { $repr[0] .= ')'; } return implode("\n", $repr); } public function compile(Compiler $compiler) { foreach ($this->nodes as $node) { $node->compile($compiler); } } public function evaluate($functions, $values) { $results = array(); foreach ($this->nodes as $node) { $results[] = $node->evaluate($functions, $values); } return $results; } } db/login/vendor/symfony/expression-language/Node/UnaryNode.php000064400000002517151502156020020526 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class UnaryNode extends Node { private static $operators = array( '!' => '!', 'not' => '!', '+' => '+', '-' => '-', ); public function __construct($operator, Node $node) { parent::__construct( array('node' => $node), array('operator' => $operator) ); } public function compile(Compiler $compiler) { $compiler ->raw('(') ->raw(self::$operators[$this->attributes['operator']]) ->compile($this->nodes['node']) ->raw(')') ; } public function evaluate($functions, $values) { $value = $this->nodes['node']->evaluate($functions, $values); switch ($this->attributes['operator']) { case 'not': case '!': return !$value; case '-': return -$value; } return $value; } } db/login/vendor/symfony/expression-language/Node/ArrayNode.php000064400000003741151502156020020506 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class ArrayNode extends Node { protected $index; public function __construct() { $this->index = -1; } public function addElement(Node $value, Node $key = null) { if (null === $key) { $key = new ConstantNode(++$this->index); } array_push($this->nodes, $key, $value); } /** * Compiles the node to PHP. */ public function compile(Compiler $compiler) { $compiler->raw('array('); $this->compileArguments($compiler); $compiler->raw(')'); } public function evaluate($functions, $values) { $result = array(); foreach ($this->getKeyValuePairs() as $pair) { $result[$pair['key']->evaluate($functions, $values)] = $pair['value']->evaluate($functions, $values); } return $result; } protected function getKeyValuePairs() { $pairs = array(); foreach (array_chunk($this->nodes, 2) as $pair) { $pairs[] = array('key' => $pair[0], 'value' => $pair[1]); } return $pairs; } protected function compileArguments(Compiler $compiler, $withKeys = true) { $first = true; foreach ($this->getKeyValuePairs() as $pair) { if (!$first) { $compiler->raw(', '); } $first = false; if ($withKeys) { $compiler ->compile($pair['key']) ->raw(' => ') ; } $compiler->compile($pair['value']); } } } db/login/vendor/symfony/expression-language/Node/ConditionalNode.php000064400000002360151502156020021667 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class ConditionalNode extends Node { public function __construct(Node $expr1, Node $expr2, Node $expr3) { parent::__construct( array('expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3) ); } public function compile(Compiler $compiler) { $compiler ->raw('((') ->compile($this->nodes['expr1']) ->raw(') ? (') ->compile($this->nodes['expr2']) ->raw(') : (') ->compile($this->nodes['expr3']) ->raw('))') ; } public function evaluate($functions, $values) { if ($this->nodes['expr1']->evaluate($functions, $values)) { return $this->nodes['expr2']->evaluate($functions, $values); } return $this->nodes['expr3']->evaluate($functions, $values); } } db/login/vendor/symfony/expression-language/Node/BinaryNode.php000064400000010220151502156020020642 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class BinaryNode extends Node { private static $operators = array( '~' => '.', 'and' => '&&', 'or' => '||', ); private static $functions = array( '**' => 'pow', '..' => 'range', 'in' => 'in_array', 'not in' => '!in_array', ); public function __construct($operator, Node $left, Node $right) { parent::__construct( array('left' => $left, 'right' => $right), array('operator' => $operator) ); } public function compile(Compiler $compiler) { $operator = $this->attributes['operator']; if ('matches' == $operator) { $compiler ->raw('preg_match(') ->compile($this->nodes['right']) ->raw(', ') ->compile($this->nodes['left']) ->raw(')') ; return; } if (isset(self::$functions[$operator])) { $compiler ->raw(sprintf('%s(', self::$functions[$operator])) ->compile($this->nodes['left']) ->raw(', ') ->compile($this->nodes['right']) ->raw(')') ; return; } if (isset(self::$operators[$operator])) { $operator = self::$operators[$operator]; } $compiler ->raw('(') ->compile($this->nodes['left']) ->raw(' ') ->raw($operator) ->raw(' ') ->compile($this->nodes['right']) ->raw(')') ; } public function evaluate($functions, $values) { $operator = $this->attributes['operator']; $left = $this->nodes['left']->evaluate($functions, $values); if (isset(self::$functions[$operator])) { $right = $this->nodes['right']->evaluate($functions, $values); if ('not in' === $operator) { return !\in_array($left, $right); } $f = self::$functions[$operator]; return $f($left, $right); } switch ($operator) { case 'or': case '||': return $left || $this->nodes['right']->evaluate($functions, $values); case 'and': case '&&': return $left && $this->nodes['right']->evaluate($functions, $values); } $right = $this->nodes['right']->evaluate($functions, $values); switch ($operator) { case '|': return $left | $right; case '^': return $left ^ $right; case '&': return $left & $right; case '==': return $left == $right; case '===': return $left === $right; case '!=': return $left != $right; case '!==': return $left !== $right; case '<': return $left < $right; case '>': return $left > $right; case '>=': return $left >= $right; case '<=': return $left <= $right; case 'not in': return !\in_array($left, $right); case 'in': return \in_array($left, $right); case '+': return $left + $right; case '-': return $left - $right; case '~': return $left.$right; case '*': return $left * $right; case '/': return $left / $right; case '%': return $left % $right; case 'matches': return preg_match($right, $left); } } } db/login/vendor/symfony/expression-language/Node/GetAttrNode.php000064400000006467151502156020021012 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class GetAttrNode extends Node { const PROPERTY_CALL = 1; const METHOD_CALL = 2; const ARRAY_CALL = 3; public function __construct(Node $node, Node $attribute, ArrayNode $arguments, $type) { parent::__construct( array('node' => $node, 'attribute' => $attribute, 'arguments' => $arguments), array('type' => $type) ); } public function compile(Compiler $compiler) { switch ($this->attributes['type']) { case self::PROPERTY_CALL: $compiler ->compile($this->nodes['node']) ->raw('->') ->raw($this->nodes['attribute']->attributes['value']) ; break; case self::METHOD_CALL: $compiler ->compile($this->nodes['node']) ->raw('->') ->raw($this->nodes['attribute']->attributes['value']) ->raw('(') ->compile($this->nodes['arguments']) ->raw(')') ; break; case self::ARRAY_CALL: $compiler ->compile($this->nodes['node']) ->raw('[') ->compile($this->nodes['attribute'])->raw(']') ; break; } } public function evaluate($functions, $values) { switch ($this->attributes['type']) { case self::PROPERTY_CALL: $obj = $this->nodes['node']->evaluate($functions, $values); if (!\is_object($obj)) { throw new \RuntimeException('Unable to get a property on a non-object.'); } $property = $this->nodes['attribute']->attributes['value']; return $obj->$property; case self::METHOD_CALL: $obj = $this->nodes['node']->evaluate($functions, $values); if (!\is_object($obj)) { throw new \RuntimeException('Unable to get a property on a non-object.'); } if (!\is_callable($toCall = array($obj, $this->nodes['attribute']->attributes['value']))) { throw new \RuntimeException(sprintf('Unable to call method "%s" of object "%s".', $this->nodes['attribute']->attributes['value'], \get_class($obj))); } return \call_user_func_array($toCall, $this->nodes['arguments']->evaluate($functions, $values)); case self::ARRAY_CALL: $array = $this->nodes['node']->evaluate($functions, $values); if (!\is_array($array) && !$array instanceof \ArrayAccess) { throw new \RuntimeException('Unable to get an item on a non-array.'); } return $array[$this->nodes['attribute']->evaluate($functions, $values)]; } } } db/login/vendor/symfony/expression-language/Node/NameNode.php000064400000001472151502156020020307 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class NameNode extends Node { public function __construct($name) { parent::__construct( array(), array('name' => $name) ); } public function compile(Compiler $compiler) { $compiler->raw('$'.$this->attributes['name']); } public function evaluate($functions, $values) { return $values[$this->attributes['name']]; } } db/login/vendor/symfony/expression-language/Node/ConstantNode.php000064400000001467151502156020021224 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class ConstantNode extends Node { public function __construct($value) { parent::__construct( array(), array('value' => $value) ); } public function compile(Compiler $compiler) { $compiler->repr($this->attributes['value']); } public function evaluate($functions, $values) { return $this->attributes['value']; } } db/login/vendor/symfony/expression-language/Node/FunctionNode.php000064400000002515151502156020021213 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class FunctionNode extends Node { public function __construct($name, Node $arguments) { parent::__construct( array('arguments' => $arguments), array('name' => $name) ); } public function compile(Compiler $compiler) { $arguments = array(); foreach ($this->nodes['arguments']->nodes as $node) { $arguments[] = $compiler->subcompile($node); } $function = $compiler->getFunction($this->attributes['name']); $compiler->raw(\call_user_func_array($function['compiler'], $arguments)); } public function evaluate($functions, $values) { $arguments = array($values); foreach ($this->nodes['arguments']->nodes as $node) { $arguments[] = $node->evaluate($functions, $values); } return \call_user_func_array($functions[$this->attributes['name']]['evaluator'], $arguments); } } db/login/vendor/symfony/expression-language/Lexer.php000064400000010123151502156020017004 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Lexes an expression. * * @author Fabien Potencier */ class Lexer { /** * Tokenizes an expression. * * @param string $expression The expression to tokenize * * @return TokenStream A token stream instance * * @throws SyntaxError */ public function tokenize($expression) { $expression = str_replace(array("\r", "\n", "\t", "\v", "\f"), ' ', $expression); $cursor = 0; $tokens = array(); $brackets = array(); $end = \strlen($expression); while ($cursor < $end) { if (' ' == $expression[$cursor]) { ++$cursor; continue; } if (preg_match('/[0-9]+(?:\.[0-9]+)?/A', $expression, $match, 0, $cursor)) { // numbers $number = (float) $match[0]; // floats if (preg_match('/^[0-9]+$/', $match[0]) && $number <= PHP_INT_MAX) { $number = (int) $match[0]; // integers lower than the maximum } $tokens[] = new Token(Token::NUMBER_TYPE, $number, $cursor + 1); $cursor += \strlen($match[0]); } elseif (false !== strpos('([{', $expression[$cursor])) { // opening bracket $brackets[] = array($expression[$cursor], $cursor); $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1); ++$cursor; } elseif (false !== strpos(')]}', $expression[$cursor])) { // closing bracket if (empty($brackets)) { throw new SyntaxError(sprintf('Unexpected "%s"', $expression[$cursor]), $cursor, $expression); } list($expect, $cur) = array_pop($brackets); if ($expression[$cursor] != strtr($expect, '([{', ')]}')) { throw new SyntaxError(sprintf('Unclosed "%s"', $expect), $cur, $expression); } $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1); ++$cursor; } elseif (preg_match('/"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As', $expression, $match, 0, $cursor)) { // strings $tokens[] = new Token(Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)), $cursor + 1); $cursor += \strlen($match[0]); } elseif (preg_match('/not in(?=[\s(])|\!\=\=|not(?=[\s(])|and(?=[\s(])|\=\=\=|\>\=|or(?=[\s(])|\<\=|\*\*|\.\.|in(?=[\s(])|&&|\|\||matches|\=\=|\!\=|\*|~|%|\/|\>|\||\!|\^|&|\+|\<|\-/A', $expression, $match, 0, $cursor)) { // operators $tokens[] = new Token(Token::OPERATOR_TYPE, $match[0], $cursor + 1); $cursor += \strlen($match[0]); } elseif (false !== strpos('.,?:', $expression[$cursor])) { // punctuation $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1); ++$cursor; } elseif (preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A', $expression, $match, 0, $cursor)) { // names $tokens[] = new Token(Token::NAME_TYPE, $match[0], $cursor + 1); $cursor += \strlen($match[0]); } else { // unlexable throw new SyntaxError(sprintf('Unexpected character "%s"', $expression[$cursor]), $cursor, $expression); } } $tokens[] = new Token(Token::EOF_TYPE, null, $cursor + 1); if (!empty($brackets)) { list($expect, $cur) = array_pop($brackets); throw new SyntaxError(sprintf('Unclosed "%s"', $expect), $cur, $expression); } return new TokenStream($tokens, $expression); } } db/login/vendor/symfony/expression-language/composer.json000064400000001430151502156020017737 0ustar00{ "name": "symfony/expression-language", "type": "library", "description": "Symfony ExpressionLanguage Component", "keywords": [], "homepage": "https://symfony.com", "license": "MIT", "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "require": { "php": ">=5.3.9" }, "autoload": { "psr-4": { "Symfony\\Component\\ExpressionLanguage\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "minimum-stability": "dev", "extra": { "branch-alias": { "dev-master": "2.8-dev" } } } db/login/vendor/symfony/expression-language/SerializedParsedExpression.php000064400000001512151502156020023241 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Represents an already parsed expression. * * @author Fabien Potencier */ class SerializedParsedExpression extends ParsedExpression { private $nodes; /** * @param string $expression An expression * @param string $nodes The serialized nodes for the expression */ public function __construct($expression, $nodes) { $this->expression = (string) $expression; $this->nodes = $nodes; } public function getNodes() { return unserialize($this->nodes); } } db/login/vendor/symfony/expression-language/Token.php000064400000003232151502156020017010 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Represents a Token. * * @author Fabien Potencier */ class Token { public $value; public $type; public $cursor; const EOF_TYPE = 'end of expression'; const NAME_TYPE = 'name'; const NUMBER_TYPE = 'number'; const STRING_TYPE = 'string'; const OPERATOR_TYPE = 'operator'; const PUNCTUATION_TYPE = 'punctuation'; /** * @param string $type The type of the token (self::*_TYPE) * @param string|int|float|null $value The token value * @param int $cursor The cursor position in the source */ public function __construct($type, $value, $cursor) { $this->type = $type; $this->value = $value; $this->cursor = $cursor; } /** * Returns a string representation of the token. * * @return string A string representation of the token */ public function __toString() { return sprintf('%3d %-11s %s', $this->cursor, strtoupper($this->type), $this->value); } /** * Tests the current token for a type and/or a value. * * @param array|int $type The type to test * @param string|null $value The token value * * @return bool */ public function test($type, $value = null) { return $this->type === $type && (null === $value || $this->value == $value); } } db/login/vendor/symfony/expression-language/TokenStream.php000064400000004452151502156020020171 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Represents a token stream. * * @author Fabien Potencier */ class TokenStream { public $current; private $tokens; private $position = 0; private $expression; /** * @param array $tokens An array of tokens * @param string $expression */ public function __construct(array $tokens, $expression = '') { $this->tokens = $tokens; $this->current = $tokens[0]; $this->expression = $expression; } /** * Returns a string representation of the token stream. * * @return string */ public function __toString() { return implode("\n", $this->tokens); } /** * Sets the pointer to the next token and returns the old one. */ public function next() { ++$this->position; if (!isset($this->tokens[$this->position])) { throw new SyntaxError('Unexpected end of expression', $this->current->cursor, $this->expression); } $this->current = $this->tokens[$this->position]; } /** * Tests a token. * * @param array|int $type The type to test * @param string|null $value The token value * @param string|null $message The syntax error message */ public function expect($type, $value = null, $message = null) { $token = $this->current; if (!$token->test($type, $value)) { throw new SyntaxError(sprintf('%sUnexpected token "%s" of value "%s" ("%s" expected%s)', $message ? $message.'. ' : '', $token->type, $token->value, $type, $value ? sprintf(' with value "%s"', $value) : ''), $token->cursor, $this->expression); } $this->next(); } /** * Checks if end of stream was reached. * * @return bool */ public function isEOF() { return Token::EOF_TYPE === $this->current->type; } /** * @internal * * @return string */ public function getExpression() { return $this->expression; } } db/login/vendor/symfony/expression-language/ParserCache/ArrayParserCache.php000064400000001454151502156020023273 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\ParserCache; use Symfony\Component\ExpressionLanguage\ParsedExpression; /** * @author Adrien Brault */ class ArrayParserCache implements ParserCacheInterface { private $cache = array(); /** * {@inheritdoc} */ public function fetch($key) { return isset($this->cache[$key]) ? $this->cache[$key] : null; } /** * {@inheritdoc} */ public function save($key, ParsedExpression $expression) { $this->cache[$key] = $expression; } } db/login/vendor/symfony/expression-language/ParserCache/ParserCacheInterface.php000064400000001623151502156020024113 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\ParserCache; use Symfony\Component\ExpressionLanguage\ParsedExpression; /** * @author Adrien Brault */ interface ParserCacheInterface { /** * Saves an expression in the cache. * * @param string $key The cache key * @param ParsedExpression $expression A ParsedExpression instance to store in the cache */ public function save($key, ParsedExpression $expression); /** * Fetches an expression from the cache. * * @param string $key The cache key * * @return ParsedExpression|null */ public function fetch($key); } db/login/vendor/symfony/expression-language/Compiler.php000064400000005737151502156020017516 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Compiles a node to PHP code. * * @author Fabien Potencier */ class Compiler { private $source; private $functions; public function __construct(array $functions) { $this->functions = $functions; } public function getFunction($name) { return $this->functions[$name]; } /** * Gets the current PHP code after compilation. * * @return string The PHP code */ public function getSource() { return $this->source; } public function reset() { $this->source = ''; return $this; } /** * Compiles a node. * * @return $this */ public function compile(Node\Node $node) { $node->compile($this); return $this; } public function subcompile(Node\Node $node) { $current = $this->source; $this->source = ''; $node->compile($this); $source = $this->source; $this->source = $current; return $source; } /** * Adds a raw string to the compiled code. * * @param string $string The string * * @return $this */ public function raw($string) { $this->source .= $string; return $this; } /** * Adds a quoted string to the compiled code. * * @param string $value The string * * @return $this */ public function string($value) { $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); return $this; } /** * Returns a PHP representation of a given value. * * @param mixed $value The value to convert * * @return $this */ public function repr($value) { if (\is_int($value) || \is_float($value)) { if (false !== $locale = setlocale(LC_NUMERIC, 0)) { setlocale(LC_NUMERIC, 'C'); } $this->raw($value); if (false !== $locale) { setlocale(LC_NUMERIC, $locale); } } elseif (null === $value) { $this->raw('null'); } elseif (\is_bool($value)) { $this->raw($value ? 'true' : 'false'); } elseif (\is_array($value)) { $this->raw('array('); $first = true; foreach ($value as $key => $value) { if (!$first) { $this->raw(', '); } $first = false; $this->repr($key); $this->raw(' => '); $this->repr($value); } $this->raw(')'); } else { $this->string($value); } return $this; } } db/login/vendor/symfony/expression-language/CHANGELOG.md000064400000000213151502156020017024 0ustar00CHANGELOG ========= 2.6.0 ----- * Added ExpressionFunction and ExpressionFunctionProviderInterface 2.4.0 ----- * added the component db/login/vendor/symfony/expression-language/Expression.php000064400000001373151502156020020073 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Represents an expression. * * @author Fabien Potencier */ class Expression { protected $expression; /** * @param string $expression An expression */ public function __construct($expression) { $this->expression = (string) $expression; } /** * Gets the expression. * * @return string The expression */ public function __toString() { return $this->expression; } } db/login/vendor/symfony/expression-language/Parser.php000064400000037467151502156020017205 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Parsers a token stream. * * This parser implements a "Precedence climbing" algorithm. * * @see http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm * @see http://en.wikipedia.org/wiki/Operator-precedence_parser * * @author Fabien Potencier */ class Parser { const OPERATOR_LEFT = 1; const OPERATOR_RIGHT = 2; private $stream; private $unaryOperators; private $binaryOperators; private $functions; private $names; public function __construct(array $functions) { $this->functions = $functions; $this->unaryOperators = array( 'not' => array('precedence' => 50), '!' => array('precedence' => 50), '-' => array('precedence' => 500), '+' => array('precedence' => 500), ); $this->binaryOperators = array( 'or' => array('precedence' => 10, 'associativity' => self::OPERATOR_LEFT), '||' => array('precedence' => 10, 'associativity' => self::OPERATOR_LEFT), 'and' => array('precedence' => 15, 'associativity' => self::OPERATOR_LEFT), '&&' => array('precedence' => 15, 'associativity' => self::OPERATOR_LEFT), '|' => array('precedence' => 16, 'associativity' => self::OPERATOR_LEFT), '^' => array('precedence' => 17, 'associativity' => self::OPERATOR_LEFT), '&' => array('precedence' => 18, 'associativity' => self::OPERATOR_LEFT), '==' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '===' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '!=' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '!==' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '<' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '>' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '>=' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '<=' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), 'not in' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), 'in' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), 'matches' => array('precedence' => 20, 'associativity' => self::OPERATOR_LEFT), '..' => array('precedence' => 25, 'associativity' => self::OPERATOR_LEFT), '+' => array('precedence' => 30, 'associativity' => self::OPERATOR_LEFT), '-' => array('precedence' => 30, 'associativity' => self::OPERATOR_LEFT), '~' => array('precedence' => 40, 'associativity' => self::OPERATOR_LEFT), '*' => array('precedence' => 60, 'associativity' => self::OPERATOR_LEFT), '/' => array('precedence' => 60, 'associativity' => self::OPERATOR_LEFT), '%' => array('precedence' => 60, 'associativity' => self::OPERATOR_LEFT), '**' => array('precedence' => 200, 'associativity' => self::OPERATOR_RIGHT), ); } /** * Converts a token stream to a node tree. * * The valid names is an array where the values * are the names that the user can use in an expression. * * If the variable name in the compiled PHP code must be * different, define it as the key. * * For instance, ['this' => 'container'] means that the * variable 'container' can be used in the expression * but the compiled code will use 'this'. * * @param TokenStream $stream A token stream instance * @param array $names An array of valid names * * @return Node\Node A node tree * * @throws SyntaxError */ public function parse(TokenStream $stream, $names = array()) { $this->stream = $stream; $this->names = $names; $node = $this->parseExpression(); if (!$stream->isEOF()) { throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s"', $stream->current->type, $stream->current->value), $stream->current->cursor, $stream->getExpression()); } return $node; } public function parseExpression($precedence = 0) { $expr = $this->getPrimary(); $token = $this->stream->current; while ($token->test(Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->value]) && $this->binaryOperators[$token->value]['precedence'] >= $precedence) { $op = $this->binaryOperators[$token->value]; $this->stream->next(); $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); $expr = new Node\BinaryNode($token->value, $expr, $expr1); $token = $this->stream->current; } if (0 === $precedence) { return $this->parseConditionalExpression($expr); } return $expr; } protected function getPrimary() { $token = $this->stream->current; if ($token->test(Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->value])) { $operator = $this->unaryOperators[$token->value]; $this->stream->next(); $expr = $this->parseExpression($operator['precedence']); return $this->parsePostfixExpression(new Node\UnaryNode($token->value, $expr)); } if ($token->test(Token::PUNCTUATION_TYPE, '(')) { $this->stream->next(); $expr = $this->parseExpression(); $this->stream->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); return $this->parsePostfixExpression($expr); } return $this->parsePrimaryExpression(); } protected function parseConditionalExpression($expr) { while ($this->stream->current->test(Token::PUNCTUATION_TYPE, '?')) { $this->stream->next(); if (!$this->stream->current->test(Token::PUNCTUATION_TYPE, ':')) { $expr2 = $this->parseExpression(); if ($this->stream->current->test(Token::PUNCTUATION_TYPE, ':')) { $this->stream->next(); $expr3 = $this->parseExpression(); } else { $expr3 = new Node\ConstantNode(null); } } else { $this->stream->next(); $expr2 = $expr; $expr3 = $this->parseExpression(); } $expr = new Node\ConditionalNode($expr, $expr2, $expr3); } return $expr; } public function parsePrimaryExpression() { $token = $this->stream->current; switch ($token->type) { case Token::NAME_TYPE: $this->stream->next(); switch ($token->value) { case 'true': case 'TRUE': return new Node\ConstantNode(true); case 'false': case 'FALSE': return new Node\ConstantNode(false); case 'null': case 'NULL': return new Node\ConstantNode(null); default: if ('(' === $this->stream->current->value) { if (false === isset($this->functions[$token->value])) { throw new SyntaxError(sprintf('The function "%s" does not exist', $token->value), $token->cursor, $this->stream->getExpression()); } $node = new Node\FunctionNode($token->value, $this->parseArguments()); } else { if (!\in_array($token->value, $this->names, true)) { throw new SyntaxError(sprintf('Variable "%s" is not valid', $token->value), $token->cursor, $this->stream->getExpression()); } // is the name used in the compiled code different // from the name used in the expression? if (\is_int($name = array_search($token->value, $this->names))) { $name = $token->value; } $node = new Node\NameNode($name); } } break; case Token::NUMBER_TYPE: case Token::STRING_TYPE: $this->stream->next(); return new Node\ConstantNode($token->value); default: if ($token->test(Token::PUNCTUATION_TYPE, '[')) { $node = $this->parseArrayExpression(); } elseif ($token->test(Token::PUNCTUATION_TYPE, '{')) { $node = $this->parseHashExpression(); } else { throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s"', $token->type, $token->value), $token->cursor, $this->stream->getExpression()); } } return $this->parsePostfixExpression($node); } public function parseArrayExpression() { $this->stream->expect(Token::PUNCTUATION_TYPE, '[', 'An array element was expected'); $node = new Node\ArrayNode(); $first = true; while (!$this->stream->current->test(Token::PUNCTUATION_TYPE, ']')) { if (!$first) { $this->stream->expect(Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma'); // trailing ,? if ($this->stream->current->test(Token::PUNCTUATION_TYPE, ']')) { break; } } $first = false; $node->addElement($this->parseExpression()); } $this->stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed'); return $node; } public function parseHashExpression() { $this->stream->expect(Token::PUNCTUATION_TYPE, '{', 'A hash element was expected'); $node = new Node\ArrayNode(); $first = true; while (!$this->stream->current->test(Token::PUNCTUATION_TYPE, '}')) { if (!$first) { $this->stream->expect(Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma'); // trailing ,? if ($this->stream->current->test(Token::PUNCTUATION_TYPE, '}')) { break; } } $first = false; // a hash key can be: // // * a number -- 12 // * a string -- 'a' // * a name, which is equivalent to a string -- a // * an expression, which must be enclosed in parentheses -- (1 + 2) if ($this->stream->current->test(Token::STRING_TYPE) || $this->stream->current->test(Token::NAME_TYPE) || $this->stream->current->test(Token::NUMBER_TYPE)) { $key = new Node\ConstantNode($this->stream->current->value); $this->stream->next(); } elseif ($this->stream->current->test(Token::PUNCTUATION_TYPE, '(')) { $key = $this->parseExpression(); } else { $current = $this->stream->current; throw new SyntaxError(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s"', $current->type, $current->value), $current->cursor, $this->stream->getExpression()); } $this->stream->expect(Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)'); $value = $this->parseExpression(); $node->addElement($value, $key); } $this->stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed'); return $node; } public function parsePostfixExpression($node) { $token = $this->stream->current; while (Token::PUNCTUATION_TYPE == $token->type) { if ('.' === $token->value) { $this->stream->next(); $token = $this->stream->current; $this->stream->next(); if ( Token::NAME_TYPE !== $token->type && // Operators like "not" and "matches" are valid method or property names, // // In other words, besides NAME_TYPE, OPERATOR_TYPE could also be parsed as a property or method. // This is because operators are processed by the lexer prior to names. So "not" in "foo.not()" or "matches" in "foo.matches" will be recognized as an operator first. // But in fact, "not" and "matches" in such expressions shall be parsed as method or property names. // // And this ONLY works if the operator consists of valid characters for a property or method name. // // Other types, such as STRING_TYPE and NUMBER_TYPE, can't be parsed as property nor method names. // // As a result, if $token is NOT an operator OR $token->value is NOT a valid property or method name, an exception shall be thrown. (Token::OPERATOR_TYPE !== $token->type || !preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A', $token->value)) ) { throw new SyntaxError('Expected name', $token->cursor, $this->stream->getExpression()); } $arg = new Node\ConstantNode($token->value); $arguments = new Node\ArgumentsNode(); if ($this->stream->current->test(Token::PUNCTUATION_TYPE, '(')) { $type = Node\GetAttrNode::METHOD_CALL; foreach ($this->parseArguments()->nodes as $n) { $arguments->addElement($n); } } else { $type = Node\GetAttrNode::PROPERTY_CALL; } $node = new Node\GetAttrNode($node, $arg, $arguments, $type); } elseif ('[' === $token->value) { if ($node instanceof Node\GetAttrNode && Node\GetAttrNode::METHOD_CALL === $node->attributes['type'] && \PHP_VERSION_ID < 50400) { throw new SyntaxError('Array calls on a method call is only supported on PHP 5.4+', $token->cursor, $this->stream->getExpression()); } $this->stream->next(); $arg = $this->parseExpression(); $this->stream->expect(Token::PUNCTUATION_TYPE, ']'); $node = new Node\GetAttrNode($node, $arg, new Node\ArgumentsNode(), Node\GetAttrNode::ARRAY_CALL); } else { break; } $token = $this->stream->current; } return $node; } /** * Parses arguments. */ public function parseArguments() { $args = array(); $this->stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); while (!$this->stream->current->test(Token::PUNCTUATION_TYPE, ')')) { if (!empty($args)) { $this->stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); } $args[] = $this->parseExpression(); } $this->stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); return new Node\Node($args); } } db/login/vendor/symfony/expression-language/LICENSE000064400000002051151502156020016222 0ustar00Copyright (c) 2004-2018 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. db/login/vendor/symfony/expression-language/phpunit.xml.dist000064400000001515151502156020020374 0ustar00 ./Tests/ ./ ./Tests ./vendor db/login/vendor/symfony/expression-language/SyntaxError.php000064400000001241151502156020020226 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; class SyntaxError extends \LogicException { public function __construct($message, $cursor = 0, $expression = '') { $message = sprintf('%s around position %d', $message, $cursor); if ($expression) { $message = sprintf('%s for expression `%s`', $message, $expression); } $message .= '.'; parent::__construct($message); } } db/login/vendor/symfony/expression-language/ParsedExpression.php000064400000001533151502156020021230 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; use Symfony\Component\ExpressionLanguage\Node\Node; /** * Represents an already parsed expression. * * @author Fabien Potencier */ class ParsedExpression extends Expression { private $nodes; /** * @param string $expression An expression * @param Node $nodes A Node representing the expression */ public function __construct($expression, Node $nodes) { parent::__construct($expression); $this->nodes = $nodes; } public function getNodes() { return $this->nodes; } } db/login/vendor/symfony/polyfill-util/README.md000064400000000566151502156020015332 0ustar00Symfony Polyfill / Util ======================= This component provides binary-safe string functions, using the [mbstring](https://php.net/mbstring) extension when available. More information can be found in the [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). License ======= This library is released under the [MIT license](LICENSE). db/login/vendor/symfony/polyfill-util/TestListenerForV6.php000064400000004117151502156020020070 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; use PHPUnit\Framework\AssertionFailedError; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestListener as TestListenerInterface; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; /** * @author Nicolas Grekas */ class TestListenerForV6 extends TestSuite implements TestListenerInterface { private $suite; private $trait; public function __construct(TestSuite $suite = null) { if ($suite) { $this->suite = $suite; $this->setName($suite->getName().' with polyfills enabled'); $this->addTest($suite); } $this->trait = new TestListenerTrait(); } public function startTestSuite(TestSuite $suite) { $this->trait->startTestSuite($suite); } public function addError(Test $test, \Exception $e, $time) { $this->trait->addError($test, $e, $time); } public function addWarning(Test $test, Warning $e, $time) { } public function addFailure(Test $test, AssertionFailedError $e, $time) { $this->trait->addError($test, $e, $time); } public function addIncompleteTest(Test $test, \Exception $e, $time) { } public function addRiskyTest(Test $test, \Exception $e, $time) { } public function addSkippedTest(Test $test, \Exception $e, $time) { } public function endTestSuite(TestSuite $suite) { } public function startTest(Test $test) { } public function endTest(Test $test, $time) { } public static function warning($message) { return parent::warning($message); } protected function setUp() { TestListenerTrait::$enabledPolyfills = $this->suite->getName(); } protected function tearDown() { TestListenerTrait::$enabledPolyfills = false; } } db/login/vendor/symfony/polyfill-util/BinaryOnFuncOverload.php000064400000003147151502156020020613 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; /** * Binary safe version of string functions overloaded when MB_OVERLOAD_STRING is enabled. * * @author Nicolas Grekas * * @internal */ class BinaryOnFuncOverload { public static function strlen($s) { return mb_strlen($s, '8bit'); } public static function strpos($haystack, $needle, $offset = 0) { return mb_strpos($haystack, $needle, $offset, '8bit'); } public static function strrpos($haystack, $needle, $offset = 0) { return mb_strrpos($haystack, $needle, $offset, '8bit'); } public static function substr($string, $start, $length = 2147483647) { return mb_substr($string, $start, $length, '8bit'); } public static function stripos($s, $needle, $offset = 0) { return mb_stripos($s, $needle, $offset, '8bit'); } public static function stristr($s, $needle, $part = false) { return mb_stristr($s, $needle, $part, '8bit'); } public static function strrchr($s, $needle, $part = false) { return mb_strrchr($s, $needle, $part, '8bit'); } public static function strripos($s, $needle, $offset = 0) { return mb_strripos($s, $needle, $offset, '8bit'); } public static function strstr($s, $needle, $part = false) { return mb_strstr($s, $needle, $part, '8bit'); } } db/login/vendor/symfony/polyfill-util/composer.json000064400000001560151502156020016570 0ustar00{ "name": "symfony/polyfill-util", "type": "library", "description": "Symfony utilities for portability of PHP codes", "keywords": ["polyfill", "shim", "compat", "compatibility"], "homepage": "https://symfony.com", "license": "MIT", "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "require": { "php": ">=5.3.3" }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Util\\": "" } }, "minimum-stability": "dev", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } } } db/login/vendor/symfony/polyfill-util/Binary.php000064400000000664151502156020016007 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; if (\extension_loaded('mbstring')) { class Binary extends BinaryOnFuncOverload { } } else { class Binary extends BinaryNoFuncOverload { } } db/login/vendor/symfony/polyfill-util/TestListenerForV7.php000064400000004376151502156020020100 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; use PHPUnit\Framework\AssertionFailedError; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestListener as TestListenerInterface; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; use PHPUnit\Framework\WarningTestCase; /** * @author Ion Bazan */ class TestListenerForV7 extends TestSuite implements TestListenerInterface { private $suite; private $trait; public function __construct(TestSuite $suite = null) { if ($suite) { $this->suite = $suite; $this->setName($suite->getName().' with polyfills enabled'); $this->addTest($suite); } $this->trait = new TestListenerTrait(); } public function startTestSuite(TestSuite $suite): void { $this->trait->startTestSuite($suite); } public function addError(Test $test, \Throwable $t, float $time): void { $this->trait->addError($test, $t, $time); } public function addWarning(Test $test, Warning $e, float $time): void { } public function addFailure(Test $test, AssertionFailedError $e, float $time): void { $this->trait->addError($test, $e, $time); } public function addIncompleteTest(Test $test, \Throwable $t, float $time): void { } public function addRiskyTest(Test $test, \Throwable $t, float $time): void { } public function addSkippedTest(Test $test, \Throwable $t, float $time): void { } public function endTestSuite(TestSuite $suite): void { } public function startTest(Test $test): void { } public function endTest(Test $test, float $time): void { } public static function warning($message): WarningTestCase { return new WarningTestCase($message); } protected function setUp(): void { TestListenerTrait::$enabledPolyfills = $this->suite->getName(); } protected function tearDown(): void { TestListenerTrait::$enabledPolyfills = false; } } db/login/vendor/symfony/polyfill-util/TestListenerTrait.php000064400000011740151502156020020211 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; /** * @author Nicolas Grekas */ class TestListenerTrait { public static $enabledPolyfills; public function startTestSuite($mainSuite) { if (null !== self::$enabledPolyfills) { return; } self::$enabledPolyfills = false; $SkippedTestError = class_exists('PHPUnit\Framework\SkippedTestError') ? 'PHPUnit\Framework\SkippedTestError' : 'PHPUnit_Framework_SkippedTestError'; foreach ($mainSuite->tests() as $suite) { $testClass = $suite->getName(); if (!$tests = $suite->tests()) { continue; } $testedClass = new \ReflectionClass($testClass); if (preg_match('{^ \* @requires PHP (.*)}mi', $testedClass->getDocComment(), $m) && version_compare($m[1], \PHP_VERSION, '>')) { continue; } if (!preg_match('/^(.+)\\\\Tests(\\\\.*)Test$/', $testClass, $m)) { $mainSuite->addTest(TestListener::warning('Unknown naming convention for '.$testClass)); continue; } if (!class_exists($m[1].$m[2])) { continue; } $testedClass = new \ReflectionClass($m[1].$m[2]); $bootstrap = new \SplFileObject(\dirname($testedClass->getFileName()).'/bootstrap.php'); $warnings = array(); $defLine = null; foreach (new \RegexIterator($bootstrap, '/define\(\'/') as $defLine) { preg_match('/define\(\'(?P.+)\'/', $defLine, $matches); if (\defined($matches['name'])) { continue; } try { eval($defLine); } catch (\PHPUnit_Framework_Exception $ex){ $warnings[] = TestListener::warning($ex->getMessage()); } catch (\PHPUnit\Framework\Exception $ex) { $warnings[] = TestListener::warning($ex->getMessage()); } } $bootstrap->rewind(); foreach (new \RegexIterator($bootstrap, '/return p\\\\'.$testedClass->getShortName().'::/') as $defLine) { if (!preg_match('/^\s*function (?P[^\(]++)(?P\(.*\)(?: ?: [^ ]++)?) \{ (?return p\\\\'.$testedClass->getShortName().'::[^\(]++)(?P\([^\)]*+\)); \}$/', $defLine, $f)) { $warnings[] = TestListener::warning('Invalid line in bootstrap.php: '.trim($defLine)); continue; } $testNamespace = substr($testClass, 0, strrpos($testClass, '\\')); if (\function_exists($testNamespace.'\\'.$f['name'])) { continue; } try { $r = new \ReflectionFunction($f['name']); if ($r->isUserDefined()) { throw new \ReflectionException(); } if ('idn_to_ascii' === $f['name'] || 'idn_to_utf8' === $f['name']) { $defLine = sprintf('return INTL_IDNA_VARIANT_2003 === $variant ? \\%s($domain, $options, $variant) : \\%1$s%s', $f['name'], $f['args']); } elseif (false !== strpos($f['signature'], '&') && 'idn_to_ascii' !== $f['name'] && 'idn_to_utf8' !== $f['name']) { $defLine = sprintf('return \\%s%s', $f['name'], $f['args']); } else { $defLine = sprintf("return \\call_user_func_array('%s', \\func_get_args())", $f['name']); } } catch (\ReflectionException $e) { $defLine = sprintf("throw new \\{$SkippedTestError}('Internal function not found: %s')", $f['name']); } eval(<<getNamespaceName()} as p; function {$f['name']}{$f['signature']} { if ('{$testClass}' === TestListenerTrait::\$enabledPolyfills) { {$f['return']}{$f['args']}; } {$defLine}; } EOPHP ); } if (!$warnings && null === $defLine) { $warnings[] = new $SkippedTestError('No Polyfills found in bootstrap.php for '.$testClass); } else { $mainSuite->addTest(new TestListener($suite)); } } foreach ($warnings as $w) { $mainSuite->addTest($w); } } public function addError($test, \Exception $e, $time) { if (false !== self::$enabledPolyfills) { $r = new \ReflectionProperty('Exception', 'message'); $r->setAccessible(true); $r->setValue($e, 'Polyfills enabled, '.$r->getValue($e)); } } } db/login/vendor/symfony/polyfill-util/TestListener.php000064400000002023151502156020017177 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; if (class_exists('PHPUnit_Runner_Version') && version_compare(\PHPUnit_Runner_Version::id(), '6.0.0', '<')) { class_alias('Symfony\Polyfill\Util\TestListenerForV5', 'Symfony\Polyfill\Util\TestListener'); // Using an early return instead of a else does not work when using the PHPUnit phar due to some weird PHP behavior (the class // gets defined without executing the code before it and so the definition is not properly conditional) } elseif (version_compare(\PHPUnit\Runner\Version::id(), '7.0.0', '<')) { class_alias('Symfony\Polyfill\Util\TestListenerForV6', 'Symfony\Polyfill\Util\TestListener'); } else { class_alias('Symfony\Polyfill\Util\TestListenerForV7', 'Symfony\Polyfill\Util\TestListener'); } if (false) { class TestListener { } } db/login/vendor/symfony/polyfill-util/BinaryNoFuncOverload.php000064400000002651151502156020020612 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; /** * @author Nicolas Grekas * * @internal */ class BinaryNoFuncOverload { public static function strlen($s) { return \strlen($s); } public static function strpos($haystack, $needle, $offset = 0) { return strpos($haystack, $needle, $offset); } public static function strrpos($haystack, $needle, $offset = 0) { return strrpos($haystack, $needle, $offset); } public static function substr($string, $start, $length = PHP_INT_MAX) { return substr($string, $start, $length); } public static function stripos($s, $needle, $offset = 0) { return stripos($s, $needle, $offset); } public static function stristr($s, $needle, $part = false) { return stristr($s, $needle, $part); } public static function strrchr($s, $needle, $part = false) { return strrchr($s, $needle, $part); } public static function strripos($s, $needle, $offset = 0) { return strripos($s, $needle, $offset); } public static function strstr($s, $needle, $part = false) { return strstr($s, $needle, $part); } } db/login/vendor/symfony/polyfill-util/LICENSE000064400000002051151502156020015047 0ustar00Copyright (c) 2015-2019 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. db/login/vendor/symfony/polyfill-util/TestListenerForV5.php000064400000004235151502156020020070 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Util; /** * @author Nicolas Grekas */ class TestListenerForV5 extends \PHPUnit_Framework_TestSuite implements \PHPUnit_Framework_TestListener { private $suite; private $trait; public function __construct(\PHPUnit_Framework_TestSuite $suite = null) { if ($suite) { $this->suite = $suite; $this->setName($suite->getName().' with polyfills enabled'); $this->addTest($suite); } $this->trait = new TestListenerTrait(); } public function startTestSuite(\PHPUnit_Framework_TestSuite $suite) { $this->trait->startTestSuite($suite); } public function addError(\PHPUnit_Framework_Test $test, \Exception $e, $time) { $this->trait->addError($test, $e, $time); } public function addWarning(\PHPUnit_Framework_Test $test, \PHPUnit_Framework_Warning $e, $time) { } public function addFailure(\PHPUnit_Framework_Test $test, \PHPUnit_Framework_AssertionFailedError $e, $time) { $this->trait->addError($test, $e, $time); } public function addIncompleteTest(\PHPUnit_Framework_Test $test, \Exception $e, $time) { } public function addRiskyTest(\PHPUnit_Framework_Test $test, \Exception $e, $time) { } public function addSkippedTest(\PHPUnit_Framework_Test $test, \Exception $e, $time) { } public function endTestSuite(\PHPUnit_Framework_TestSuite $suite) { } public function startTest(\PHPUnit_Framework_Test $test) { } public function endTest(\PHPUnit_Framework_Test $test, $time) { } public static function warning($message) { return parent::warning($message); } protected function setUp() { TestListenerTrait::$enabledPolyfills = $this->suite->getName(); } protected function tearDown() { TestListenerTrait::$enabledPolyfills = false; } } db/login/vendor/symfony/polyfill-mbstring/README.md000064400000000564151502156020016200 0ustar00Symfony Polyfill / Mbstring =========================== This component provides a partial, native PHP implementation for the [Mbstring](https://php.net/mbstring) extension. More information can be found in the [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). License ======= This library is released under the [MIT license](LICENSE). db/login/vendor/symfony/polyfill-mbstring/bootstrap.php000064400000014657151502156020017457 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Mbstring as p; if (!function_exists('mb_convert_encoding')) { function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); } } if (!function_exists('mb_decode_mimeheader')) { function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); } } if (!function_exists('mb_encode_mimeheader')) { function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); } } if (!function_exists('mb_decode_numericentity')) { function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); } } if (!function_exists('mb_encode_numericentity')) { function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); } } if (!function_exists('mb_convert_case')) { function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); } } if (!function_exists('mb_internal_encoding')) { function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); } } if (!function_exists('mb_language')) { function mb_language($lang = null) { return p\Mbstring::mb_language($lang); } } if (!function_exists('mb_list_encodings')) { function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } } if (!function_exists('mb_encoding_aliases')) { function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } } if (!function_exists('mb_check_encoding')) { function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); } } if (!function_exists('mb_detect_encoding')) { function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); } } if (!function_exists('mb_detect_order')) { function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); } } if (!function_exists('mb_parse_str')) { function mb_parse_str($s, &$result = array()) { parse_str($s, $result); } } if (!function_exists('mb_strlen')) { function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); } } if (!function_exists('mb_strpos')) { function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); } } if (!function_exists('mb_strtolower')) { function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); } } if (!function_exists('mb_strtoupper')) { function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); } } if (!function_exists('mb_substitute_character')) { function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); } } if (!function_exists('mb_substr')) { function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); } } if (!function_exists('mb_stripos')) { function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); } } if (!function_exists('mb_stristr')) { function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); } } if (!function_exists('mb_strrchr')) { function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); } } if (!function_exists('mb_strrichr')) { function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); } } if (!function_exists('mb_strripos')) { function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); } } if (!function_exists('mb_strrpos')) { function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); } } if (!function_exists('mb_strstr')) { function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); } } if (!function_exists('mb_get_info')) { function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } } if (!function_exists('mb_http_output')) { function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); } } if (!function_exists('mb_strwidth')) { function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); } } if (!function_exists('mb_substr_count')) { function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); } } if (!function_exists('mb_output_handler')) { function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); } } if (!function_exists('mb_http_input')) { function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); } } if (!function_exists('mb_convert_variables')) { function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); } } if (!function_exists('mb_ord')) { function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); } } if (!function_exists('mb_chr')) { function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); } } if (!function_exists('mb_scrub')) { function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); } } if (!function_exists('mb_str_split')) { function mb_str_split($string, $split_length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $split_length, $encoding); } } if (extension_loaded('mbstring')) { return; } if (!defined('MB_CASE_UPPER')) { define('MB_CASE_UPPER', 0); } if (!defined('MB_CASE_LOWER')) { define('MB_CASE_LOWER', 1); } if (!defined('MB_CASE_TITLE')) { define('MB_CASE_TITLE', 2); } db/login/vendor/symfony/polyfill-mbstring/composer.json000064400000001760151502156020017442 0ustar00{ "name": "symfony/polyfill-mbstring", "type": "library", "description": "Symfony polyfill for the Mbstring extension", "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], "homepage": "https://symfony.com", "license": "MIT", "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "require": { "php": ">=5.3.3" }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" ] }, "suggest": { "ext-mbstring": "For best performance" }, "minimum-stability": "dev", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } } } db/login/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php000064400000057731151502156020022765 0ustar00 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z', 'À' => 'à', 'Á' => 'á', 'Â' => 'â', 'Ã' => 'ã', 'Ä' => 'ä', 'Å' => 'å', 'Æ' => 'æ', 'Ç' => 'ç', 'È' => 'è', 'É' => 'é', 'Ê' => 'ê', 'Ë' => 'ë', 'Ì' => 'ì', 'Í' => 'í', 'Î' => 'î', 'Ï' => 'ï', 'Ð' => 'ð', 'Ñ' => 'ñ', 'Ò' => 'ò', 'Ó' => 'ó', 'Ô' => 'ô', 'Õ' => 'õ', 'Ö' => 'ö', 'Ø' => 'ø', 'Ù' => 'ù', 'Ú' => 'ú', 'Û' => 'û', 'Ü' => 'ü', 'Ý' => 'ý', 'Þ' => 'þ', 'Ā' => 'ā', 'Ă' => 'ă', 'Ą' => 'ą', 'Ć' => 'ć', 'Ĉ' => 'ĉ', 'Ċ' => 'ċ', 'Č' => 'č', 'Ď' => 'ď', 'Đ' => 'đ', 'Ē' => 'ē', 'Ĕ' => 'ĕ', 'Ė' => 'ė', 'Ę' => 'ę', 'Ě' => 'ě', 'Ĝ' => 'ĝ', 'Ğ' => 'ğ', 'Ġ' => 'ġ', 'Ģ' => 'ģ', 'Ĥ' => 'ĥ', 'Ħ' => 'ħ', 'Ĩ' => 'ĩ', 'Ī' => 'ī', 'Ĭ' => 'ĭ', 'Į' => 'į', 'İ' => 'i', 'IJ' => 'ij', 'Ĵ' => 'ĵ', 'Ķ' => 'ķ', 'Ĺ' => 'ĺ', 'Ļ' => 'ļ', 'Ľ' => 'ľ', 'Ŀ' => 'ŀ', 'Ł' => 'ł', 'Ń' => 'ń', 'Ņ' => 'ņ', 'Ň' => 'ň', 'Ŋ' => 'ŋ', 'Ō' => 'ō', 'Ŏ' => 'ŏ', 'Ő' => 'ő', 'Œ' => 'œ', 'Ŕ' => 'ŕ', 'Ŗ' => 'ŗ', 'Ř' => 'ř', 'Ś' => 'ś', 'Ŝ' => 'ŝ', 'Ş' => 'ş', 'Š' => 'š', 'Ţ' => 'ţ', 'Ť' => 'ť', 'Ŧ' => 'ŧ', 'Ũ' => 'ũ', 'Ū' => 'ū', 'Ŭ' => 'ŭ', 'Ů' => 'ů', 'Ű' => 'ű', 'Ų' => 'ų', 'Ŵ' => 'ŵ', 'Ŷ' => 'ŷ', 'Ÿ' => 'ÿ', 'Ź' => 'ź', 'Ż' => 'ż', 'Ž' => 'ž', 'Ɓ' => 'ɓ', 'Ƃ' => 'ƃ', 'Ƅ' => 'ƅ', 'Ɔ' => 'ɔ', 'Ƈ' => 'ƈ', 'Ɖ' => 'ɖ', 'Ɗ' => 'ɗ', 'Ƌ' => 'ƌ', 'Ǝ' => 'ǝ', 'Ə' => 'ə', 'Ɛ' => 'ɛ', 'Ƒ' => 'ƒ', 'Ɠ' => 'ɠ', 'Ɣ' => 'ɣ', 'Ɩ' => 'ɩ', 'Ɨ' => 'ɨ', 'Ƙ' => 'ƙ', 'Ɯ' => 'ɯ', 'Ɲ' => 'ɲ', 'Ɵ' => 'ɵ', 'Ơ' => 'ơ', 'Ƣ' => 'ƣ', 'Ƥ' => 'ƥ', 'Ʀ' => 'ʀ', 'Ƨ' => 'ƨ', 'Ʃ' => 'ʃ', 'Ƭ' => 'ƭ', 'Ʈ' => 'ʈ', 'Ư' => 'ư', 'Ʊ' => 'ʊ', 'Ʋ' => 'ʋ', 'Ƴ' => 'ƴ', 'Ƶ' => 'ƶ', 'Ʒ' => 'ʒ', 'Ƹ' => 'ƹ', 'Ƽ' => 'ƽ', 'DŽ' => 'dž', 'Dž' => 'dž', 'LJ' => 'lj', 'Lj' => 'lj', 'NJ' => 'nj', 'Nj' => 'nj', 'Ǎ' => 'ǎ', 'Ǐ' => 'ǐ', 'Ǒ' => 'ǒ', 'Ǔ' => 'ǔ', 'Ǖ' => 'ǖ', 'Ǘ' => 'ǘ', 'Ǚ' => 'ǚ', 'Ǜ' => 'ǜ', 'Ǟ' => 'ǟ', 'Ǡ' => 'ǡ', 'Ǣ' => 'ǣ', 'Ǥ' => 'ǥ', 'Ǧ' => 'ǧ', 'Ǩ' => 'ǩ', 'Ǫ' => 'ǫ', 'Ǭ' => 'ǭ', 'Ǯ' => 'ǯ', 'DZ' => 'dz', 'Dz' => 'dz', 'Ǵ' => 'ǵ', 'Ƕ' => 'ƕ', 'Ƿ' => 'ƿ', 'Ǹ' => 'ǹ', 'Ǻ' => 'ǻ', 'Ǽ' => 'ǽ', 'Ǿ' => 'ǿ', 'Ȁ' => 'ȁ', 'Ȃ' => 'ȃ', 'Ȅ' => 'ȅ', 'Ȇ' => 'ȇ', 'Ȉ' => 'ȉ', 'Ȋ' => 'ȋ', 'Ȍ' => 'ȍ', 'Ȏ' => 'ȏ', 'Ȑ' => 'ȑ', 'Ȓ' => 'ȓ', 'Ȕ' => 'ȕ', 'Ȗ' => 'ȗ', 'Ș' => 'ș', 'Ț' => 'ț', 'Ȝ' => 'ȝ', 'Ȟ' => 'ȟ', 'Ƞ' => 'ƞ', 'Ȣ' => 'ȣ', 'Ȥ' => 'ȥ', 'Ȧ' => 'ȧ', 'Ȩ' => 'ȩ', 'Ȫ' => 'ȫ', 'Ȭ' => 'ȭ', 'Ȯ' => 'ȯ', 'Ȱ' => 'ȱ', 'Ȳ' => 'ȳ', 'Ⱥ' => 'ⱥ', 'Ȼ' => 'ȼ', 'Ƚ' => 'ƚ', 'Ⱦ' => 'ⱦ', 'Ɂ' => 'ɂ', 'Ƀ' => 'ƀ', 'Ʉ' => 'ʉ', 'Ʌ' => 'ʌ', 'Ɇ' => 'ɇ', 'Ɉ' => 'ɉ', 'Ɋ' => 'ɋ', 'Ɍ' => 'ɍ', 'Ɏ' => 'ɏ', 'Ͱ' => 'ͱ', 'Ͳ' => 'ͳ', 'Ͷ' => 'ͷ', 'Ϳ' => 'ϳ', 'Ά' => 'ά', 'Έ' => 'έ', 'Ή' => 'ή', 'Ί' => 'ί', 'Ό' => 'ό', 'Ύ' => 'ύ', 'Ώ' => 'ώ', 'Α' => 'α', 'Β' => 'β', 'Γ' => 'γ', 'Δ' => 'δ', 'Ε' => 'ε', 'Ζ' => 'ζ', 'Η' => 'η', 'Θ' => 'θ', 'Ι' => 'ι', 'Κ' => 'κ', 'Λ' => 'λ', 'Μ' => 'μ', 'Ν' => 'ν', 'Ξ' => 'ξ', 'Ο' => 'ο', 'Π' => 'π', 'Ρ' => 'ρ', 'Σ' => 'σ', 'Τ' => 'τ', 'Υ' => 'υ', 'Φ' => 'φ', 'Χ' => 'χ', 'Ψ' => 'ψ', 'Ω' => 'ω', 'Ϊ' => 'ϊ', 'Ϋ' => 'ϋ', 'Ϗ' => 'ϗ', 'Ϙ' => 'ϙ', 'Ϛ' => 'ϛ', 'Ϝ' => 'ϝ', 'Ϟ' => 'ϟ', 'Ϡ' => 'ϡ', 'Ϣ' => 'ϣ', 'Ϥ' => 'ϥ', 'Ϧ' => 'ϧ', 'Ϩ' => 'ϩ', 'Ϫ' => 'ϫ', 'Ϭ' => 'ϭ', 'Ϯ' => 'ϯ', 'ϴ' => 'θ', 'Ϸ' => 'ϸ', 'Ϲ' => 'ϲ', 'Ϻ' => 'ϻ', 'Ͻ' => 'ͻ', 'Ͼ' => 'ͼ', 'Ͽ' => 'ͽ', 'Ѐ' => 'ѐ', 'Ё' => 'ё', 'Ђ' => 'ђ', 'Ѓ' => 'ѓ', 'Є' => 'є', 'Ѕ' => 'ѕ', 'І' => 'і', 'Ї' => 'ї', 'Ј' => 'ј', 'Љ' => 'љ', 'Њ' => 'њ', 'Ћ' => 'ћ', 'Ќ' => 'ќ', 'Ѝ' => 'ѝ', 'Ў' => 'ў', 'Џ' => 'џ', 'А' => 'а', 'Б' => 'б', 'В' => 'в', 'Г' => 'г', 'Д' => 'д', 'Е' => 'е', 'Ж' => 'ж', 'З' => 'з', 'И' => 'и', 'Й' => 'й', 'К' => 'к', 'Л' => 'л', 'М' => 'м', 'Н' => 'н', 'О' => 'о', 'П' => 'п', 'Р' => 'р', 'С' => 'с', 'Т' => 'т', 'У' => 'у', 'Ф' => 'ф', 'Х' => 'х', 'Ц' => 'ц', 'Ч' => 'ч', 'Ш' => 'ш', 'Щ' => 'щ', 'Ъ' => 'ъ', 'Ы' => 'ы', 'Ь' => 'ь', 'Э' => 'э', 'Ю' => 'ю', 'Я' => 'я', 'Ѡ' => 'ѡ', 'Ѣ' => 'ѣ', 'Ѥ' => 'ѥ', 'Ѧ' => 'ѧ', 'Ѩ' => 'ѩ', 'Ѫ' => 'ѫ', 'Ѭ' => 'ѭ', 'Ѯ' => 'ѯ', 'Ѱ' => 'ѱ', 'Ѳ' => 'ѳ', 'Ѵ' => 'ѵ', 'Ѷ' => 'ѷ', 'Ѹ' => 'ѹ', 'Ѻ' => 'ѻ', 'Ѽ' => 'ѽ', 'Ѿ' => 'ѿ', 'Ҁ' => 'ҁ', 'Ҋ' => 'ҋ', 'Ҍ' => 'ҍ', 'Ҏ' => 'ҏ', 'Ґ' => 'ґ', 'Ғ' => 'ғ', 'Ҕ' => 'ҕ', 'Җ' => 'җ', 'Ҙ' => 'ҙ', 'Қ' => 'қ', 'Ҝ' => 'ҝ', 'Ҟ' => 'ҟ', 'Ҡ' => 'ҡ', 'Ң' => 'ң', 'Ҥ' => 'ҥ', 'Ҧ' => 'ҧ', 'Ҩ' => 'ҩ', 'Ҫ' => 'ҫ', 'Ҭ' => 'ҭ', 'Ү' => 'ү', 'Ұ' => 'ұ', 'Ҳ' => 'ҳ', 'Ҵ' => 'ҵ', 'Ҷ' => 'ҷ', 'Ҹ' => 'ҹ', 'Һ' => 'һ', 'Ҽ' => 'ҽ', 'Ҿ' => 'ҿ', 'Ӏ' => 'ӏ', 'Ӂ' => 'ӂ', 'Ӄ' => 'ӄ', 'Ӆ' => 'ӆ', 'Ӈ' => 'ӈ', 'Ӊ' => 'ӊ', 'Ӌ' => 'ӌ', 'Ӎ' => 'ӎ', 'Ӑ' => 'ӑ', 'Ӓ' => 'ӓ', 'Ӕ' => 'ӕ', 'Ӗ' => 'ӗ', 'Ә' => 'ә', 'Ӛ' => 'ӛ', 'Ӝ' => 'ӝ', 'Ӟ' => 'ӟ', 'Ӡ' => 'ӡ', 'Ӣ' => 'ӣ', 'Ӥ' => 'ӥ', 'Ӧ' => 'ӧ', 'Ө' => 'ө', 'Ӫ' => 'ӫ', 'Ӭ' => 'ӭ', 'Ӯ' => 'ӯ', 'Ӱ' => 'ӱ', 'Ӳ' => 'ӳ', 'Ӵ' => 'ӵ', 'Ӷ' => 'ӷ', 'Ӹ' => 'ӹ', 'Ӻ' => 'ӻ', 'Ӽ' => 'ӽ', 'Ӿ' => 'ӿ', 'Ԁ' => 'ԁ', 'Ԃ' => 'ԃ', 'Ԅ' => 'ԅ', 'Ԇ' => 'ԇ', 'Ԉ' => 'ԉ', 'Ԋ' => 'ԋ', 'Ԍ' => 'ԍ', 'Ԏ' => 'ԏ', 'Ԑ' => 'ԑ', 'Ԓ' => 'ԓ', 'Ԕ' => 'ԕ', 'Ԗ' => 'ԗ', 'Ԙ' => 'ԙ', 'Ԛ' => 'ԛ', 'Ԝ' => 'ԝ', 'Ԟ' => 'ԟ', 'Ԡ' => 'ԡ', 'Ԣ' => 'ԣ', 'Ԥ' => 'ԥ', 'Ԧ' => 'ԧ', 'Ԩ' => 'ԩ', 'Ԫ' => 'ԫ', 'Ԭ' => 'ԭ', 'Ԯ' => 'ԯ', 'Ա' => 'ա', 'Բ' => 'բ', 'Գ' => 'գ', 'Դ' => 'դ', 'Ե' => 'ե', 'Զ' => 'զ', 'Է' => 'է', 'Ը' => 'ը', 'Թ' => 'թ', 'Ժ' => 'ժ', 'Ի' => 'ի', 'Լ' => 'լ', 'Խ' => 'խ', 'Ծ' => 'ծ', 'Կ' => 'կ', 'Հ' => 'հ', 'Ձ' => 'ձ', 'Ղ' => 'ղ', 'Ճ' => 'ճ', 'Մ' => 'մ', 'Յ' => 'յ', 'Ն' => 'ն', 'Շ' => 'շ', 'Ո' => 'ո', 'Չ' => 'չ', 'Պ' => 'պ', 'Ջ' => 'ջ', 'Ռ' => 'ռ', 'Ս' => 'ս', 'Վ' => 'վ', 'Տ' => 'տ', 'Ր' => 'ր', 'Ց' => 'ց', 'Ւ' => 'ւ', 'Փ' => 'փ', 'Ք' => 'ք', 'Օ' => 'օ', 'Ֆ' => 'ֆ', 'Ⴀ' => 'ⴀ', 'Ⴁ' => 'ⴁ', 'Ⴂ' => 'ⴂ', 'Ⴃ' => 'ⴃ', 'Ⴄ' => 'ⴄ', 'Ⴅ' => 'ⴅ', 'Ⴆ' => 'ⴆ', 'Ⴇ' => 'ⴇ', 'Ⴈ' => 'ⴈ', 'Ⴉ' => 'ⴉ', 'Ⴊ' => 'ⴊ', 'Ⴋ' => 'ⴋ', 'Ⴌ' => 'ⴌ', 'Ⴍ' => 'ⴍ', 'Ⴎ' => 'ⴎ', 'Ⴏ' => 'ⴏ', 'Ⴐ' => 'ⴐ', 'Ⴑ' => 'ⴑ', 'Ⴒ' => 'ⴒ', 'Ⴓ' => 'ⴓ', 'Ⴔ' => 'ⴔ', 'Ⴕ' => 'ⴕ', 'Ⴖ' => 'ⴖ', 'Ⴗ' => 'ⴗ', 'Ⴘ' => 'ⴘ', 'Ⴙ' => 'ⴙ', 'Ⴚ' => 'ⴚ', 'Ⴛ' => 'ⴛ', 'Ⴜ' => 'ⴜ', 'Ⴝ' => 'ⴝ', 'Ⴞ' => 'ⴞ', 'Ⴟ' => 'ⴟ', 'Ⴠ' => 'ⴠ', 'Ⴡ' => 'ⴡ', 'Ⴢ' => 'ⴢ', 'Ⴣ' => 'ⴣ', 'Ⴤ' => 'ⴤ', 'Ⴥ' => 'ⴥ', 'Ⴧ' => 'ⴧ', 'Ⴭ' => 'ⴭ', 'Ꭰ' => 'ꭰ', 'Ꭱ' => 'ꭱ', 'Ꭲ' => 'ꭲ', 'Ꭳ' => 'ꭳ', 'Ꭴ' => 'ꭴ', 'Ꭵ' => 'ꭵ', 'Ꭶ' => 'ꭶ', 'Ꭷ' => 'ꭷ', 'Ꭸ' => 'ꭸ', 'Ꭹ' => 'ꭹ', 'Ꭺ' => 'ꭺ', 'Ꭻ' => 'ꭻ', 'Ꭼ' => 'ꭼ', 'Ꭽ' => 'ꭽ', 'Ꭾ' => 'ꭾ', 'Ꭿ' => 'ꭿ', 'Ꮀ' => 'ꮀ', 'Ꮁ' => 'ꮁ', 'Ꮂ' => 'ꮂ', 'Ꮃ' => 'ꮃ', 'Ꮄ' => 'ꮄ', 'Ꮅ' => 'ꮅ', 'Ꮆ' => 'ꮆ', 'Ꮇ' => 'ꮇ', 'Ꮈ' => 'ꮈ', 'Ꮉ' => 'ꮉ', 'Ꮊ' => 'ꮊ', 'Ꮋ' => 'ꮋ', 'Ꮌ' => 'ꮌ', 'Ꮍ' => 'ꮍ', 'Ꮎ' => 'ꮎ', 'Ꮏ' => 'ꮏ', 'Ꮐ' => 'ꮐ', 'Ꮑ' => 'ꮑ', 'Ꮒ' => 'ꮒ', 'Ꮓ' => 'ꮓ', 'Ꮔ' => 'ꮔ', 'Ꮕ' => 'ꮕ', 'Ꮖ' => 'ꮖ', 'Ꮗ' => 'ꮗ', 'Ꮘ' => 'ꮘ', 'Ꮙ' => 'ꮙ', 'Ꮚ' => 'ꮚ', 'Ꮛ' => 'ꮛ', 'Ꮜ' => 'ꮜ', 'Ꮝ' => 'ꮝ', 'Ꮞ' => 'ꮞ', 'Ꮟ' => 'ꮟ', 'Ꮠ' => 'ꮠ', 'Ꮡ' => 'ꮡ', 'Ꮢ' => 'ꮢ', 'Ꮣ' => 'ꮣ', 'Ꮤ' => 'ꮤ', 'Ꮥ' => 'ꮥ', 'Ꮦ' => 'ꮦ', 'Ꮧ' => 'ꮧ', 'Ꮨ' => 'ꮨ', 'Ꮩ' => 'ꮩ', 'Ꮪ' => 'ꮪ', 'Ꮫ' => 'ꮫ', 'Ꮬ' => 'ꮬ', 'Ꮭ' => 'ꮭ', 'Ꮮ' => 'ꮮ', 'Ꮯ' => 'ꮯ', 'Ꮰ' => 'ꮰ', 'Ꮱ' => 'ꮱ', 'Ꮲ' => 'ꮲ', 'Ꮳ' => 'ꮳ', 'Ꮴ' => 'ꮴ', 'Ꮵ' => 'ꮵ', 'Ꮶ' => 'ꮶ', 'Ꮷ' => 'ꮷ', 'Ꮸ' => 'ꮸ', 'Ꮹ' => 'ꮹ', 'Ꮺ' => 'ꮺ', 'Ꮻ' => 'ꮻ', 'Ꮼ' => 'ꮼ', 'Ꮽ' => 'ꮽ', 'Ꮾ' => 'ꮾ', 'Ꮿ' => 'ꮿ', 'Ᏸ' => 'ᏸ', 'Ᏹ' => 'ᏹ', 'Ᏺ' => 'ᏺ', 'Ᏻ' => 'ᏻ', 'Ᏼ' => 'ᏼ', 'Ᏽ' => 'ᏽ', 'Ა' => 'ა', 'Ბ' => 'ბ', 'Გ' => 'გ', 'Დ' => 'დ', 'Ე' => 'ე', 'Ვ' => 'ვ', 'Ზ' => 'ზ', 'Თ' => 'თ', 'Ი' => 'ი', 'Კ' => 'კ', 'Ლ' => 'ლ', 'Მ' => 'მ', 'Ნ' => 'ნ', 'Ო' => 'ო', 'Პ' => 'პ', 'Ჟ' => 'ჟ', 'Რ' => 'რ', 'Ს' => 'ს', 'Ტ' => 'ტ', 'Უ' => 'უ', 'Ფ' => 'ფ', 'Ქ' => 'ქ', 'Ღ' => 'ღ', 'Ყ' => 'ყ', 'Შ' => 'შ', 'Ჩ' => 'ჩ', 'Ც' => 'ც', 'Ძ' => 'ძ', 'Წ' => 'წ', 'Ჭ' => 'ჭ', 'Ხ' => 'ხ', 'Ჯ' => 'ჯ', 'Ჰ' => 'ჰ', 'Ჱ' => 'ჱ', 'Ჲ' => 'ჲ', 'Ჳ' => 'ჳ', 'Ჴ' => 'ჴ', 'Ჵ' => 'ჵ', 'Ჶ' => 'ჶ', 'Ჷ' => 'ჷ', 'Ჸ' => 'ჸ', 'Ჹ' => 'ჹ', 'Ჺ' => 'ჺ', 'Ჽ' => 'ჽ', 'Ჾ' => 'ჾ', 'Ჿ' => 'ჿ', 'Ḁ' => 'ḁ', 'Ḃ' => 'ḃ', 'Ḅ' => 'ḅ', 'Ḇ' => 'ḇ', 'Ḉ' => 'ḉ', 'Ḋ' => 'ḋ', 'Ḍ' => 'ḍ', 'Ḏ' => 'ḏ', 'Ḑ' => 'ḑ', 'Ḓ' => 'ḓ', 'Ḕ' => 'ḕ', 'Ḗ' => 'ḗ', 'Ḙ' => 'ḙ', 'Ḛ' => 'ḛ', 'Ḝ' => 'ḝ', 'Ḟ' => 'ḟ', 'Ḡ' => 'ḡ', 'Ḣ' => 'ḣ', 'Ḥ' => 'ḥ', 'Ḧ' => 'ḧ', 'Ḩ' => 'ḩ', 'Ḫ' => 'ḫ', 'Ḭ' => 'ḭ', 'Ḯ' => 'ḯ', 'Ḱ' => 'ḱ', 'Ḳ' => 'ḳ', 'Ḵ' => 'ḵ', 'Ḷ' => 'ḷ', 'Ḹ' => 'ḹ', 'Ḻ' => 'ḻ', 'Ḽ' => 'ḽ', 'Ḿ' => 'ḿ', 'Ṁ' => 'ṁ', 'Ṃ' => 'ṃ', 'Ṅ' => 'ṅ', 'Ṇ' => 'ṇ', 'Ṉ' => 'ṉ', 'Ṋ' => 'ṋ', 'Ṍ' => 'ṍ', 'Ṏ' => 'ṏ', 'Ṑ' => 'ṑ', 'Ṓ' => 'ṓ', 'Ṕ' => 'ṕ', 'Ṗ' => 'ṗ', 'Ṙ' => 'ṙ', 'Ṛ' => 'ṛ', 'Ṝ' => 'ṝ', 'Ṟ' => 'ṟ', 'Ṡ' => 'ṡ', 'Ṣ' => 'ṣ', 'Ṥ' => 'ṥ', 'Ṧ' => 'ṧ', 'Ṩ' => 'ṩ', 'Ṫ' => 'ṫ', 'Ṭ' => 'ṭ', 'Ṯ' => 'ṯ', 'Ṱ' => 'ṱ', 'Ṳ' => 'ṳ', 'Ṵ' => 'ṵ', 'Ṷ' => 'ṷ', 'Ṹ' => 'ṹ', 'Ṻ' => 'ṻ', 'Ṽ' => 'ṽ', 'Ṿ' => 'ṿ', 'Ẁ' => 'ẁ', 'Ẃ' => 'ẃ', 'Ẅ' => 'ẅ', 'Ẇ' => 'ẇ', 'Ẉ' => 'ẉ', 'Ẋ' => 'ẋ', 'Ẍ' => 'ẍ', 'Ẏ' => 'ẏ', 'Ẑ' => 'ẑ', 'Ẓ' => 'ẓ', 'Ẕ' => 'ẕ', 'ẞ' => 'ß', 'Ạ' => 'ạ', 'Ả' => 'ả', 'Ấ' => 'ấ', 'Ầ' => 'ầ', 'Ẩ' => 'ẩ', 'Ẫ' => 'ẫ', 'Ậ' => 'ậ', 'Ắ' => 'ắ', 'Ằ' => 'ằ', 'Ẳ' => 'ẳ', 'Ẵ' => 'ẵ', 'Ặ' => 'ặ', 'Ẹ' => 'ẹ', 'Ẻ' => 'ẻ', 'Ẽ' => 'ẽ', 'Ế' => 'ế', 'Ề' => 'ề', 'Ể' => 'ể', 'Ễ' => 'ễ', 'Ệ' => 'ệ', 'Ỉ' => 'ỉ', 'Ị' => 'ị', 'Ọ' => 'ọ', 'Ỏ' => 'ỏ', 'Ố' => 'ố', 'Ồ' => 'ồ', 'Ổ' => 'ổ', 'Ỗ' => 'ỗ', 'Ộ' => 'ộ', 'Ớ' => 'ớ', 'Ờ' => 'ờ', 'Ở' => 'ở', 'Ỡ' => 'ỡ', 'Ợ' => 'ợ', 'Ụ' => 'ụ', 'Ủ' => 'ủ', 'Ứ' => 'ứ', 'Ừ' => 'ừ', 'Ử' => 'ử', 'Ữ' => 'ữ', 'Ự' => 'ự', 'Ỳ' => 'ỳ', 'Ỵ' => 'ỵ', 'Ỷ' => 'ỷ', 'Ỹ' => 'ỹ', 'Ỻ' => 'ỻ', 'Ỽ' => 'ỽ', 'Ỿ' => 'ỿ', 'Ἀ' => 'ἀ', 'Ἁ' => 'ἁ', 'Ἂ' => 'ἂ', 'Ἃ' => 'ἃ', 'Ἄ' => 'ἄ', 'Ἅ' => 'ἅ', 'Ἆ' => 'ἆ', 'Ἇ' => 'ἇ', 'Ἐ' => 'ἐ', 'Ἑ' => 'ἑ', 'Ἒ' => 'ἒ', 'Ἓ' => 'ἓ', 'Ἔ' => 'ἔ', 'Ἕ' => 'ἕ', 'Ἠ' => 'ἠ', 'Ἡ' => 'ἡ', 'Ἢ' => 'ἢ', 'Ἣ' => 'ἣ', 'Ἤ' => 'ἤ', 'Ἥ' => 'ἥ', 'Ἦ' => 'ἦ', 'Ἧ' => 'ἧ', 'Ἰ' => 'ἰ', 'Ἱ' => 'ἱ', 'Ἲ' => 'ἲ', 'Ἳ' => 'ἳ', 'Ἴ' => 'ἴ', 'Ἵ' => 'ἵ', 'Ἶ' => 'ἶ', 'Ἷ' => 'ἷ', 'Ὀ' => 'ὀ', 'Ὁ' => 'ὁ', 'Ὂ' => 'ὂ', 'Ὃ' => 'ὃ', 'Ὄ' => 'ὄ', 'Ὅ' => 'ὅ', 'Ὑ' => 'ὑ', 'Ὓ' => 'ὓ', 'Ὕ' => 'ὕ', 'Ὗ' => 'ὗ', 'Ὠ' => 'ὠ', 'Ὡ' => 'ὡ', 'Ὢ' => 'ὢ', 'Ὣ' => 'ὣ', 'Ὤ' => 'ὤ', 'Ὥ' => 'ὥ', 'Ὦ' => 'ὦ', 'Ὧ' => 'ὧ', 'ᾈ' => 'ᾀ', 'ᾉ' => 'ᾁ', 'ᾊ' => 'ᾂ', 'ᾋ' => 'ᾃ', 'ᾌ' => 'ᾄ', 'ᾍ' => 'ᾅ', 'ᾎ' => 'ᾆ', 'ᾏ' => 'ᾇ', 'ᾘ' => 'ᾐ', 'ᾙ' => 'ᾑ', 'ᾚ' => 'ᾒ', 'ᾛ' => 'ᾓ', 'ᾜ' => 'ᾔ', 'ᾝ' => 'ᾕ', 'ᾞ' => 'ᾖ', 'ᾟ' => 'ᾗ', 'ᾨ' => 'ᾠ', 'ᾩ' => 'ᾡ', 'ᾪ' => 'ᾢ', 'ᾫ' => 'ᾣ', 'ᾬ' => 'ᾤ', 'ᾭ' => 'ᾥ', 'ᾮ' => 'ᾦ', 'ᾯ' => 'ᾧ', 'Ᾰ' => 'ᾰ', 'Ᾱ' => 'ᾱ', 'Ὰ' => 'ὰ', 'Ά' => 'ά', 'ᾼ' => 'ᾳ', 'Ὲ' => 'ὲ', 'Έ' => 'έ', 'Ὴ' => 'ὴ', 'Ή' => 'ή', 'ῌ' => 'ῃ', 'Ῐ' => 'ῐ', 'Ῑ' => 'ῑ', 'Ὶ' => 'ὶ', 'Ί' => 'ί', 'Ῠ' => 'ῠ', 'Ῡ' => 'ῡ', 'Ὺ' => 'ὺ', 'Ύ' => 'ύ', 'Ῥ' => 'ῥ', 'Ὸ' => 'ὸ', 'Ό' => 'ό', 'Ὼ' => 'ὼ', 'Ώ' => 'ώ', 'ῼ' => 'ῳ', 'Ω' => 'ω', 'K' => 'k', 'Å' => 'å', 'Ⅎ' => 'ⅎ', 'Ⅰ' => 'ⅰ', 'Ⅱ' => 'ⅱ', 'Ⅲ' => 'ⅲ', 'Ⅳ' => 'ⅳ', 'Ⅴ' => 'ⅴ', 'Ⅵ' => 'ⅵ', 'Ⅶ' => 'ⅶ', 'Ⅷ' => 'ⅷ', 'Ⅸ' => 'ⅸ', 'Ⅹ' => 'ⅹ', 'Ⅺ' => 'ⅺ', 'Ⅻ' => 'ⅻ', 'Ⅼ' => 'ⅼ', 'Ⅽ' => 'ⅽ', 'Ⅾ' => 'ⅾ', 'Ⅿ' => 'ⅿ', 'Ↄ' => 'ↄ', 'Ⓐ' => 'ⓐ', 'Ⓑ' => 'ⓑ', 'Ⓒ' => 'ⓒ', 'Ⓓ' => 'ⓓ', 'Ⓔ' => 'ⓔ', 'Ⓕ' => 'ⓕ', 'Ⓖ' => 'ⓖ', 'Ⓗ' => 'ⓗ', 'Ⓘ' => 'ⓘ', 'Ⓙ' => 'ⓙ', 'Ⓚ' => 'ⓚ', 'Ⓛ' => 'ⓛ', 'Ⓜ' => 'ⓜ', 'Ⓝ' => 'ⓝ', 'Ⓞ' => 'ⓞ', 'Ⓟ' => 'ⓟ', 'Ⓠ' => 'ⓠ', 'Ⓡ' => 'ⓡ', 'Ⓢ' => 'ⓢ', 'Ⓣ' => 'ⓣ', 'Ⓤ' => 'ⓤ', 'Ⓥ' => 'ⓥ', 'Ⓦ' => 'ⓦ', 'Ⓧ' => 'ⓧ', 'Ⓨ' => 'ⓨ', 'Ⓩ' => 'ⓩ', 'Ⰰ' => 'ⰰ', 'Ⰱ' => 'ⰱ', 'Ⰲ' => 'ⰲ', 'Ⰳ' => 'ⰳ', 'Ⰴ' => 'ⰴ', 'Ⰵ' => 'ⰵ', 'Ⰶ' => 'ⰶ', 'Ⰷ' => 'ⰷ', 'Ⰸ' => 'ⰸ', 'Ⰹ' => 'ⰹ', 'Ⰺ' => 'ⰺ', 'Ⰻ' => 'ⰻ', 'Ⰼ' => 'ⰼ', 'Ⰽ' => 'ⰽ', 'Ⰾ' => 'ⰾ', 'Ⰿ' => 'ⰿ', 'Ⱀ' => 'ⱀ', 'Ⱁ' => 'ⱁ', 'Ⱂ' => 'ⱂ', 'Ⱃ' => 'ⱃ', 'Ⱄ' => 'ⱄ', 'Ⱅ' => 'ⱅ', 'Ⱆ' => 'ⱆ', 'Ⱇ' => 'ⱇ', 'Ⱈ' => 'ⱈ', 'Ⱉ' => 'ⱉ', 'Ⱊ' => 'ⱊ', 'Ⱋ' => 'ⱋ', 'Ⱌ' => 'ⱌ', 'Ⱍ' => 'ⱍ', 'Ⱎ' => 'ⱎ', 'Ⱏ' => 'ⱏ', 'Ⱐ' => 'ⱐ', 'Ⱑ' => 'ⱑ', 'Ⱒ' => 'ⱒ', 'Ⱓ' => 'ⱓ', 'Ⱔ' => 'ⱔ', 'Ⱕ' => 'ⱕ', 'Ⱖ' => 'ⱖ', 'Ⱗ' => 'ⱗ', 'Ⱘ' => 'ⱘ', 'Ⱙ' => 'ⱙ', 'Ⱚ' => 'ⱚ', 'Ⱛ' => 'ⱛ', 'Ⱜ' => 'ⱜ', 'Ⱝ' => 'ⱝ', 'Ⱞ' => 'ⱞ', 'Ⱡ' => 'ⱡ', 'Ɫ' => 'ɫ', 'Ᵽ' => 'ᵽ', 'Ɽ' => 'ɽ', 'Ⱨ' => 'ⱨ', 'Ⱪ' => 'ⱪ', 'Ⱬ' => 'ⱬ', 'Ɑ' => 'ɑ', 'Ɱ' => 'ɱ', 'Ɐ' => 'ɐ', 'Ɒ' => 'ɒ', 'Ⱳ' => 'ⱳ', 'Ⱶ' => 'ⱶ', 'Ȿ' => 'ȿ', 'Ɀ' => 'ɀ', 'Ⲁ' => 'ⲁ', 'Ⲃ' => 'ⲃ', 'Ⲅ' => 'ⲅ', 'Ⲇ' => 'ⲇ', 'Ⲉ' => 'ⲉ', 'Ⲋ' => 'ⲋ', 'Ⲍ' => 'ⲍ', 'Ⲏ' => 'ⲏ', 'Ⲑ' => 'ⲑ', 'Ⲓ' => 'ⲓ', 'Ⲕ' => 'ⲕ', 'Ⲗ' => 'ⲗ', 'Ⲙ' => 'ⲙ', 'Ⲛ' => 'ⲛ', 'Ⲝ' => 'ⲝ', 'Ⲟ' => 'ⲟ', 'Ⲡ' => 'ⲡ', 'Ⲣ' => 'ⲣ', 'Ⲥ' => 'ⲥ', 'Ⲧ' => 'ⲧ', 'Ⲩ' => 'ⲩ', 'Ⲫ' => 'ⲫ', 'Ⲭ' => 'ⲭ', 'Ⲯ' => 'ⲯ', 'Ⲱ' => 'ⲱ', 'Ⲳ' => 'ⲳ', 'Ⲵ' => 'ⲵ', 'Ⲷ' => 'ⲷ', 'Ⲹ' => 'ⲹ', 'Ⲻ' => 'ⲻ', 'Ⲽ' => 'ⲽ', 'Ⲿ' => 'ⲿ', 'Ⳁ' => 'ⳁ', 'Ⳃ' => 'ⳃ', 'Ⳅ' => 'ⳅ', 'Ⳇ' => 'ⳇ', 'Ⳉ' => 'ⳉ', 'Ⳋ' => 'ⳋ', 'Ⳍ' => 'ⳍ', 'Ⳏ' => 'ⳏ', 'Ⳑ' => 'ⳑ', 'Ⳓ' => 'ⳓ', 'Ⳕ' => 'ⳕ', 'Ⳗ' => 'ⳗ', 'Ⳙ' => 'ⳙ', 'Ⳛ' => 'ⳛ', 'Ⳝ' => 'ⳝ', 'Ⳟ' => 'ⳟ', 'Ⳡ' => 'ⳡ', 'Ⳣ' => 'ⳣ', 'Ⳬ' => 'ⳬ', 'Ⳮ' => 'ⳮ', 'Ⳳ' => 'ⳳ', 'Ꙁ' => 'ꙁ', 'Ꙃ' => 'ꙃ', 'Ꙅ' => 'ꙅ', 'Ꙇ' => 'ꙇ', 'Ꙉ' => 'ꙉ', 'Ꙋ' => 'ꙋ', 'Ꙍ' => 'ꙍ', 'Ꙏ' => 'ꙏ', 'Ꙑ' => 'ꙑ', 'Ꙓ' => 'ꙓ', 'Ꙕ' => 'ꙕ', 'Ꙗ' => 'ꙗ', 'Ꙙ' => 'ꙙ', 'Ꙛ' => 'ꙛ', 'Ꙝ' => 'ꙝ', 'Ꙟ' => 'ꙟ', 'Ꙡ' => 'ꙡ', 'Ꙣ' => 'ꙣ', 'Ꙥ' => 'ꙥ', 'Ꙧ' => 'ꙧ', 'Ꙩ' => 'ꙩ', 'Ꙫ' => 'ꙫ', 'Ꙭ' => 'ꙭ', 'Ꚁ' => 'ꚁ', 'Ꚃ' => 'ꚃ', 'Ꚅ' => 'ꚅ', 'Ꚇ' => 'ꚇ', 'Ꚉ' => 'ꚉ', 'Ꚋ' => 'ꚋ', 'Ꚍ' => 'ꚍ', 'Ꚏ' => 'ꚏ', 'Ꚑ' => 'ꚑ', 'Ꚓ' => 'ꚓ', 'Ꚕ' => 'ꚕ', 'Ꚗ' => 'ꚗ', 'Ꚙ' => 'ꚙ', 'Ꚛ' => 'ꚛ', 'Ꜣ' => 'ꜣ', 'Ꜥ' => 'ꜥ', 'Ꜧ' => 'ꜧ', 'Ꜩ' => 'ꜩ', 'Ꜫ' => 'ꜫ', 'Ꜭ' => 'ꜭ', 'Ꜯ' => 'ꜯ', 'Ꜳ' => 'ꜳ', 'Ꜵ' => 'ꜵ', 'Ꜷ' => 'ꜷ', 'Ꜹ' => 'ꜹ', 'Ꜻ' => 'ꜻ', 'Ꜽ' => 'ꜽ', 'Ꜿ' => 'ꜿ', 'Ꝁ' => 'ꝁ', 'Ꝃ' => 'ꝃ', 'Ꝅ' => 'ꝅ', 'Ꝇ' => 'ꝇ', 'Ꝉ' => 'ꝉ', 'Ꝋ' => 'ꝋ', 'Ꝍ' => 'ꝍ', 'Ꝏ' => 'ꝏ', 'Ꝑ' => 'ꝑ', 'Ꝓ' => 'ꝓ', 'Ꝕ' => 'ꝕ', 'Ꝗ' => 'ꝗ', 'Ꝙ' => 'ꝙ', 'Ꝛ' => 'ꝛ', 'Ꝝ' => 'ꝝ', 'Ꝟ' => 'ꝟ', 'Ꝡ' => 'ꝡ', 'Ꝣ' => 'ꝣ', 'Ꝥ' => 'ꝥ', 'Ꝧ' => 'ꝧ', 'Ꝩ' => 'ꝩ', 'Ꝫ' => 'ꝫ', 'Ꝭ' => 'ꝭ', 'Ꝯ' => 'ꝯ', 'Ꝺ' => 'ꝺ', 'Ꝼ' => 'ꝼ', 'Ᵹ' => 'ᵹ', 'Ꝿ' => 'ꝿ', 'Ꞁ' => 'ꞁ', 'Ꞃ' => 'ꞃ', 'Ꞅ' => 'ꞅ', 'Ꞇ' => 'ꞇ', 'Ꞌ' => 'ꞌ', 'Ɥ' => 'ɥ', 'Ꞑ' => 'ꞑ', 'Ꞓ' => 'ꞓ', 'Ꞗ' => 'ꞗ', 'Ꞙ' => 'ꞙ', 'Ꞛ' => 'ꞛ', 'Ꞝ' => 'ꞝ', 'Ꞟ' => 'ꞟ', 'Ꞡ' => 'ꞡ', 'Ꞣ' => 'ꞣ', 'Ꞥ' => 'ꞥ', 'Ꞧ' => 'ꞧ', 'Ꞩ' => 'ꞩ', 'Ɦ' => 'ɦ', 'Ɜ' => 'ɜ', 'Ɡ' => 'ɡ', 'Ɬ' => 'ɬ', 'Ɪ' => 'ɪ', 'Ʞ' => 'ʞ', 'Ʇ' => 'ʇ', 'Ʝ' => 'ʝ', 'Ꭓ' => 'ꭓ', 'Ꞵ' => 'ꞵ', 'Ꞷ' => 'ꞷ', 'Ꞹ' => 'ꞹ', 'Ꞻ' => 'ꞻ', 'Ꞽ' => 'ꞽ', 'Ꞿ' => 'ꞿ', 'Ꟃ' => 'ꟃ', 'Ꞔ' => 'ꞔ', 'Ʂ' => 'ʂ', 'Ᶎ' => 'ᶎ', 'Ꟈ' => 'ꟈ', 'Ꟊ' => 'ꟊ', 'Ꟶ' => 'ꟶ', 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z', '𐐀' => '𐐨', '𐐁' => '𐐩', '𐐂' => '𐐪', '𐐃' => '𐐫', '𐐄' => '𐐬', '𐐅' => '𐐭', '𐐆' => '𐐮', '𐐇' => '𐐯', '𐐈' => '𐐰', '𐐉' => '𐐱', '𐐊' => '𐐲', '𐐋' => '𐐳', '𐐌' => '𐐴', '𐐍' => '𐐵', '𐐎' => '𐐶', '𐐏' => '𐐷', '𐐐' => '𐐸', '𐐑' => '𐐹', '𐐒' => '𐐺', '𐐓' => '𐐻', '𐐔' => '𐐼', '𐐕' => '𐐽', '𐐖' => '𐐾', '𐐗' => '𐐿', '𐐘' => '𐑀', '𐐙' => '𐑁', '𐐚' => '𐑂', '𐐛' => '𐑃', '𐐜' => '𐑄', '𐐝' => '𐑅', '𐐞' => '𐑆', '𐐟' => '𐑇', '𐐠' => '𐑈', '𐐡' => '𐑉', '𐐢' => '𐑊', '𐐣' => '𐑋', '𐐤' => '𐑌', '𐐥' => '𐑍', '𐐦' => '𐑎', '𐐧' => '𐑏', '𐒰' => '𐓘', '𐒱' => '𐓙', '𐒲' => '𐓚', '𐒳' => '𐓛', '𐒴' => '𐓜', '𐒵' => '𐓝', '𐒶' => '𐓞', '𐒷' => '𐓟', '𐒸' => '𐓠', '𐒹' => '𐓡', '𐒺' => '𐓢', '𐒻' => '𐓣', '𐒼' => '𐓤', '𐒽' => '𐓥', '𐒾' => '𐓦', '𐒿' => '𐓧', '𐓀' => '𐓨', '𐓁' => '𐓩', '𐓂' => '𐓪', '𐓃' => '𐓫', '𐓄' => '𐓬', '𐓅' => '𐓭', '𐓆' => '𐓮', '𐓇' => '𐓯', '𐓈' => '𐓰', '𐓉' => '𐓱', '𐓊' => '𐓲', '𐓋' => '𐓳', '𐓌' => '𐓴', '𐓍' => '𐓵', '𐓎' => '𐓶', '𐓏' => '𐓷', '𐓐' => '𐓸', '𐓑' => '𐓹', '𐓒' => '𐓺', '𐓓' => '𐓻', '𐲀' => '𐳀', '𐲁' => '𐳁', '𐲂' => '𐳂', '𐲃' => '𐳃', '𐲄' => '𐳄', '𐲅' => '𐳅', '𐲆' => '𐳆', '𐲇' => '𐳇', '𐲈' => '𐳈', '𐲉' => '𐳉', '𐲊' => '𐳊', '𐲋' => '𐳋', '𐲌' => '𐳌', '𐲍' => '𐳍', '𐲎' => '𐳎', '𐲏' => '𐳏', '𐲐' => '𐳐', '𐲑' => '𐳑', '𐲒' => '𐳒', '𐲓' => '𐳓', '𐲔' => '𐳔', '𐲕' => '𐳕', '𐲖' => '𐳖', '𐲗' => '𐳗', '𐲘' => '𐳘', '𐲙' => '𐳙', '𐲚' => '𐳚', '𐲛' => '𐳛', '𐲜' => '𐳜', '𐲝' => '𐳝', '𐲞' => '𐳞', '𐲟' => '𐳟', '𐲠' => '𐳠', '𐲡' => '𐳡', '𐲢' => '𐳢', '𐲣' => '𐳣', '𐲤' => '𐳤', '𐲥' => '𐳥', '𐲦' => '𐳦', '𐲧' => '𐳧', '𐲨' => '𐳨', '𐲩' => '𐳩', '𐲪' => '𐳪', '𐲫' => '𐳫', '𐲬' => '𐳬', '𐲭' => '𐳭', '𐲮' => '𐳮', '𐲯' => '𐳯', '𐲰' => '𐳰', '𐲱' => '𐳱', '𐲲' => '𐳲', '𑢠' => '𑣀', '𑢡' => '𑣁', '𑢢' => '𑣂', '𑢣' => '𑣃', '𑢤' => '𑣄', '𑢥' => '𑣅', '𑢦' => '𑣆', '𑢧' => '𑣇', '𑢨' => '𑣈', '𑢩' => '𑣉', '𑢪' => '𑣊', '𑢫' => '𑣋', '𑢬' => '𑣌', '𑢭' => '𑣍', '𑢮' => '𑣎', '𑢯' => '𑣏', '𑢰' => '𑣐', '𑢱' => '𑣑', '𑢲' => '𑣒', '𑢳' => '𑣓', '𑢴' => '𑣔', '𑢵' => '𑣕', '𑢶' => '𑣖', '𑢷' => '𑣗', '𑢸' => '𑣘', '𑢹' => '𑣙', '𑢺' => '𑣚', '𑢻' => '𑣛', '𑢼' => '𑣜', '𑢽' => '𑣝', '𑢾' => '𑣞', '𑢿' => '𑣟', '𖹀' => '𖹠', '𖹁' => '𖹡', '𖹂' => '𖹢', '𖹃' => '𖹣', '𖹄' => '𖹤', '𖹅' => '𖹥', '𖹆' => '𖹦', '𖹇' => '𖹧', '𖹈' => '𖹨', '𖹉' => '𖹩', '𖹊' => '𖹪', '𖹋' => '𖹫', '𖹌' => '𖹬', '𖹍' => '𖹭', '𖹎' => '𖹮', '𖹏' => '𖹯', '𖹐' => '𖹰', '𖹑' => '𖹱', '𖹒' => '𖹲', '𖹓' => '𖹳', '𖹔' => '𖹴', '𖹕' => '𖹵', '𖹖' => '𖹶', '𖹗' => '𖹷', '𖹘' => '𖹸', '𖹙' => '𖹹', '𖹚' => '𖹺', '𖹛' => '𖹻', '𖹜' => '𖹼', '𖹝' => '𖹽', '𖹞' => '𖹾', '𖹟' => '𖹿', '𞤀' => '𞤢', '𞤁' => '𞤣', '𞤂' => '𞤤', '𞤃' => '𞤥', '𞤄' => '𞤦', '𞤅' => '𞤧', '𞤆' => '𞤨', '𞤇' => '𞤩', '𞤈' => '𞤪', '𞤉' => '𞤫', '𞤊' => '𞤬', '𞤋' => '𞤭', '𞤌' => '𞤮', '𞤍' => '𞤯', '𞤎' => '𞤰', '𞤏' => '𞤱', '𞤐' => '𞤲', '𞤑' => '𞤳', '𞤒' => '𞤴', '𞤓' => '𞤵', '𞤔' => '𞤶', '𞤕' => '𞤷', '𞤖' => '𞤸', '𞤗' => '𞤹', '𞤘' => '𞤺', '𞤙' => '𞤻', '𞤚' => '𞤼', '𞤛' => '𞤽', '𞤜' => '𞤾', '𞤝' => '𞤿', '𞤞' => '𞥀', '𞤟' => '𞥁', '𞤠' => '𞥂', '𞤡' => '𞥃', ); db/login/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php000064400000014071151502156020024117 0ustar00 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G', 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K', 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O', 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S', 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W', 'x' => 'X', 'y' => 'Y', 'z' => 'Z', 'µ' => 'Μ', 'à' => 'À', 'á' => 'Á', 'â' => 'Â', 'ã' => 'Ã', 'ä' => 'Ä', 'å' => 'Å', 'æ' => 'Æ', 'ç' => 'Ç', 'è' => 'È', 'é' => 'É', 'ê' => 'Ê', 'ë' => 'Ë', 'ì' => 'Ì', 'í' => 'Í', 'î' => 'Î', 'ï' => 'Ï', 'ð' => 'Ð', 'ñ' => 'Ñ', 'ò' => 'Ò', 'ó' => 'Ó', 'ô' => 'Ô', 'õ' => 'Õ', 'ö' => 'Ö', 'ø' => 'Ø', 'ù' => 'Ù', 'ú' => 'Ú', 'û' => 'Û', 'ü' => 'Ü', 'ý' => 'Ý', 'þ' => 'Þ', 'ÿ' => 'Ÿ', 'ā' => 'Ā', 'ă' => 'Ă', 'ą' => 'Ą', 'ć' => 'Ć', 'ĉ' => 'Ĉ', 'ċ' => 'Ċ', 'č' => 'Č', 'ď' => 'Ď', 'đ' => 'Đ', 'ē' => 'Ē', 'ĕ' => 'Ĕ', 'ė' => 'Ė', 'ę' => 'Ę', 'ě' => 'Ě', 'ĝ' => 'Ĝ', 'ğ' => 'Ğ', 'ġ' => 'Ġ', 'ģ' => 'Ģ', 'ĥ' => 'Ĥ', 'ħ' => 'Ħ', 'ĩ' => 'Ĩ', 'ī' => 'Ī', 'ĭ' => 'Ĭ', 'į' => 'Į', 'ı' => 'I', 'ij' => 'IJ', 'ĵ' => 'Ĵ', 'ķ' => 'Ķ', 'ĺ' => 'Ĺ', 'ļ' => 'Ļ', 'ľ' => 'Ľ', 'ŀ' => 'Ŀ', 'ł' => 'Ł', 'ń' => 'Ń', 'ņ' => 'Ņ', 'ň' => 'Ň', 'ŋ' => 'Ŋ', 'ō' => 'Ō', 'ŏ' => 'Ŏ', 'ő' => 'Ő', 'œ' => 'Œ', 'ŕ' => 'Ŕ', 'ŗ' => 'Ŗ', 'ř' => 'Ř', 'ś' => 'Ś', 'ŝ' => 'Ŝ', 'ş' => 'Ş', 'š' => 'Š', 'ţ' => 'Ţ', 'ť' => 'Ť', 'ŧ' => 'Ŧ', 'ũ' => 'Ũ', 'ū' => 'Ū', 'ŭ' => 'Ŭ', 'ů' => 'Ů', 'ű' => 'Ű', 'ų' => 'Ų', 'ŵ' => 'Ŵ', 'ŷ' => 'Ŷ', 'ź' => 'Ź', 'ż' => 'Ż', 'ž' => 'Ž', 'ſ' => 'S', 'ƀ' => 'Ƀ', 'ƃ' => 'Ƃ', 'ƅ' => 'Ƅ', 'ƈ' => 'Ƈ', 'ƌ' => 'Ƌ', 'ƒ' => 'Ƒ', 'ƕ' => 'Ƕ', 'ƙ' => 'Ƙ', 'ƚ' => 'Ƚ', 'ƞ' => 'Ƞ', 'ơ' => 'Ơ', 'ƣ' => 'Ƣ', 'ƥ' => 'Ƥ', 'ƨ' => 'Ƨ', 'ƭ' => 'Ƭ', 'ư' => 'Ư', 'ƴ' => 'Ƴ', 'ƶ' => 'Ƶ', 'ƹ' => 'Ƹ', 'ƽ' => 'Ƽ', 'ƿ' => 'Ƿ', 'Dž' => 'DŽ', 'dž' => 'DŽ', 'Lj' => 'LJ', 'lj' => 'LJ', 'Nj' => 'NJ', 'nj' => 'NJ', 'ǎ' => 'Ǎ', 'ǐ' => 'Ǐ', 'ǒ' => 'Ǒ', 'ǔ' => 'Ǔ', 'ǖ' => 'Ǖ', 'ǘ' => 'Ǘ', 'ǚ' => 'Ǚ', 'ǜ' => 'Ǜ', 'ǝ' => 'Ǝ', 'ǟ' => 'Ǟ', 'ǡ' => 'Ǡ', 'ǣ' => 'Ǣ', 'ǥ' => 'Ǥ', 'ǧ' => 'Ǧ', 'ǩ' => 'Ǩ', 'ǫ' => 'Ǫ', 'ǭ' => 'Ǭ', 'ǯ' => 'Ǯ', 'Dz' => 'DZ', 'dz' => 'DZ', 'ǵ' => 'Ǵ', 'ǹ' => 'Ǹ', 'ǻ' => 'Ǻ', 'ǽ' => 'Ǽ', 'ǿ' => 'Ǿ', 'ȁ' => 'Ȁ', 'ȃ' => 'Ȃ', 'ȅ' => 'Ȅ', 'ȇ' => 'Ȇ', 'ȉ' => 'Ȉ', 'ȋ' => 'Ȋ', 'ȍ' => 'Ȍ', 'ȏ' => 'Ȏ', 'ȑ' => 'Ȑ', 'ȓ' => 'Ȓ', 'ȕ' => 'Ȕ', 'ȗ' => 'Ȗ', 'ș' => 'Ș', 'ț' => 'Ț', 'ȝ' => 'Ȝ', 'ȟ' => 'Ȟ', 'ȣ' => 'Ȣ', 'ȥ' => 'Ȥ', 'ȧ' => 'Ȧ', 'ȩ' => 'Ȩ', 'ȫ' => 'Ȫ', 'ȭ' => 'Ȭ', 'ȯ' => 'Ȯ', 'ȱ' => 'Ȱ', 'ȳ' => 'Ȳ', 'ȼ' => 'Ȼ', 'ȿ' => 'Ȿ', 'ɀ' => 'Ɀ', 'ɂ' => 'Ɂ', 'ɇ' => 'Ɇ', 'ɉ' => 'Ɉ', 'ɋ' => 'Ɋ', 'ɍ' => 'Ɍ', 'ɏ' => 'Ɏ', 'ɐ' => 'Ɐ', 'ɑ' => 'Ɑ', 'ɒ' => 'Ɒ', 'ɓ' => 'Ɓ', 'ɔ' => 'Ɔ', 'ɖ' => 'Ɖ', 'ɗ' => 'Ɗ', 'ə' => 'Ə', 'ɛ' => 'Ɛ', 'ɜ' => 'Ɜ', 'ɠ' => 'Ɠ', 'ɡ' => 'Ɡ', 'ɣ' => 'Ɣ', 'ɥ' => 'Ɥ', 'ɦ' => 'Ɦ', 'ɨ' => 'Ɨ', 'ɩ' => 'Ɩ', 'ɪ' => 'Ɪ', 'ɫ' => 'Ɫ', 'ɬ' => 'Ɬ', 'ɯ' => 'Ɯ', 'ɱ' => 'Ɱ', 'ɲ' => 'Ɲ', 'ɵ' => 'Ɵ', 'ɽ' => 'Ɽ', 'ʀ' => 'Ʀ', 'ʂ' => 'Ʂ', 'ʃ' => 'Ʃ', 'ʇ' => 'Ʇ', 'ʈ' => 'Ʈ', 'ʉ' => 'Ʉ', 'ʊ' => 'Ʊ', 'ʋ' => 'Ʋ', 'ʌ' => 'Ʌ', 'ʒ' => 'Ʒ', 'ʝ' => 'Ʝ', 'ʞ' => 'Ʞ', 'ͅ' => 'Ι', 'ͱ' => 'Ͱ', 'ͳ' => 'Ͳ', 'ͷ' => 'Ͷ', 'ͻ' => 'Ͻ', 'ͼ' => 'Ͼ', 'ͽ' => 'Ͽ', 'ά' => 'Ά', 'έ' => 'Έ', 'ή' => 'Ή', 'ί' => 'Ί', 'α' => 'Α', 'β' => 'Β', 'γ' => 'Γ', 'δ' => 'Δ', 'ε' => 'Ε', 'ζ' => 'Ζ', 'η' => 'Η', 'θ' => 'Θ', 'ι' => 'Ι', 'κ' => 'Κ', 'λ' => 'Λ', 'μ' => 'Μ', 'ν' => 'Ν', 'ξ' => 'Ξ', 'ο' => 'Ο', 'π' => 'Π', 'ρ' => 'Ρ', 'ς' => 'Σ', 'σ' => 'Σ', 'τ' => 'Τ', 'υ' => 'Υ', 'φ' => 'Φ', 'χ' => 'Χ', 'ψ' => 'Ψ', 'ω' => 'Ω', 'ϊ' => 'Ϊ', 'ϋ' => 'Ϋ', 'ό' => 'Ό', 'ύ' => 'Ύ', 'ώ' => 'Ώ', 'ϐ' => 'Β', 'ϑ' => 'Θ', 'ϕ' => 'Φ', 'ϖ' => 'Π', 'ϗ' => 'Ϗ', 'ϙ' => 'Ϙ', 'ϛ' => 'Ϛ', 'ϝ' => 'Ϝ', 'ϟ' => 'Ϟ', 'ϡ' => 'Ϡ', 'ϣ' => 'Ϣ', 'ϥ' => 'Ϥ', 'ϧ' => 'Ϧ', 'ϩ' => 'Ϩ', 'ϫ' => 'Ϫ', 'ϭ' => 'Ϭ', 'ϯ' => 'Ϯ', 'ϰ' => 'Κ', 'ϱ' => 'Ρ', 'ϲ' => 'Ϲ', 'ϳ' => 'Ϳ', 'ϵ' => 'Ε', 'ϸ' => 'Ϸ', 'ϻ' => 'Ϻ', 'а' => 'А', 'б' => 'Б', 'в' => 'В', 'г' => 'Г', 'д' => 'Д', 'е' => 'Е', 'ж' => 'Ж', 'з' => 'З', 'и' => 'И', 'й' => 'Й', 'к' => 'К', 'л' => 'Л', 'м' => 'М', 'н' => 'Н', 'о' => 'О', 'п' => 'П', 'р' => 'Р', 'с' => 'С', 'т' => 'Т', 'у' => 'У', 'ф' => 'Ф', 'х' => 'Х', 'ц' => 'Ц', 'ч' => 'Ч', 'ш' => 'Ш', 'щ' => 'Щ', 'ъ' => 'Ъ', 'ы' => 'Ы', 'ь' => 'Ь', 'э' => 'Э', 'ю' => 'Ю', 'я' => 'Я', 'ѐ' => 'Ѐ', 'ё' => 'Ё', 'ђ' => 'Ђ', 'ѓ' => 'Ѓ', 'є' => 'Є', 'ѕ' => 'Ѕ', 'і' => 'І', 'ї' => 'Ї', 'ј' => 'Ј', 'љ' => 'Љ', 'њ' => 'Њ', 'ћ' => 'Ћ', 'ќ' => 'Ќ', 'ѝ' => 'Ѝ', 'ў' => 'Ў', 'џ' => 'Џ', 'ѡ' => 'Ѡ', 'ѣ' => 'Ѣ', 'ѥ' => 'Ѥ', 'ѧ' => 'Ѧ', 'ѩ' => 'Ѩ', 'ѫ' => 'Ѫ', 'ѭ' => 'Ѭ', 'ѯ' => 'Ѯ', 'ѱ' => 'Ѱ', 'ѳ' => 'Ѳ', 'ѵ' => 'Ѵ', 'ѷ' => 'Ѷ', 'ѹ' => 'Ѹ', 'ѻ' => 'Ѻ', 'ѽ' => 'Ѽ', 'ѿ' => 'Ѿ', 'ҁ' => 'Ҁ', 'ҋ' => 'Ҋ', 'ҍ' => 'Ҍ', 'ҏ' => 'Ҏ', 'ґ' => 'Ґ', 'ғ' => 'Ғ', 'ҕ' => 'Ҕ', 'җ' => 'Җ', 'ҙ' => 'Ҙ', 'қ' => 'Қ', 'ҝ' => 'Ҝ', 'ҟ' => 'Ҟ', 'ҡ' => 'Ҡ', 'ң' => 'Ң', 'ҥ' => 'Ҥ', 'ҧ' => 'Ҧ', 'ҩ' => 'Ҩ', 'ҫ' => 'Ҫ', 'ҭ' => 'Ҭ', 'ү' => 'Ү', 'ұ' => 'Ұ', 'ҳ' => 'Ҳ', 'ҵ' => 'Ҵ', 'ҷ' => 'Ҷ', 'ҹ' => 'Ҹ', 'һ' => 'Һ', 'ҽ' => 'Ҽ', 'ҿ' => 'Ҿ', 'ӂ' => 'Ӂ', 'ӄ' => 'Ӄ', 'ӆ' => 'Ӆ', 'ӈ' => 'Ӈ', 'ӊ' => 'Ӊ', 'ӌ' => 'Ӌ', 'ӎ' => 'Ӎ', 'ӏ' => 'Ӏ', 'ӑ' => 'Ӑ', 'ӓ' => 'Ӓ', 'ӕ' => 'Ӕ', 'ӗ' => 'Ӗ', 'ә' => 'Ә', 'ӛ' => 'Ӛ', 'ӝ' => 'Ӝ', 'ӟ' => 'Ӟ', 'ӡ' => 'Ӡ', 'ӣ' => 'Ӣ', 'ӥ' => 'Ӥ', 'ӧ' => 'Ӧ', 'ө' => 'Ө', 'ӫ' => 'Ӫ', 'ӭ' => 'Ӭ', 'ӯ' => 'Ӯ', 'ӱ' => 'Ӱ', 'ӳ' => 'Ӳ', 'ӵ' => 'Ӵ', 'ӷ' => 'Ӷ', 'ӹ' => 'Ӹ', 'ӻ' => 'Ӻ', 'ӽ' => 'Ӽ', 'ӿ' => 'Ӿ', 'ԁ' => 'Ԁ', 'ԃ' => 'Ԃ', 'ԅ' => 'Ԅ', 'ԇ' => 'Ԇ', 'ԉ' => 'Ԉ', 'ԋ' => 'Ԋ', 'ԍ' => 'Ԍ', 'ԏ' => 'Ԏ', 'ԑ' => 'Ԑ', 'ԓ' => 'Ԓ', 'ԕ' => 'Ԕ', 'ԗ' => 'Ԗ', 'ԙ' => 'Ԙ', 'ԛ' => 'Ԛ', 'ԝ' => 'Ԝ', 'ԟ' => 'Ԟ', 'ԡ' => 'Ԡ', 'ԣ' => 'Ԣ', 'ԥ' => 'Ԥ', 'ԧ' => 'Ԧ', 'ԩ' => 'Ԩ', 'ԫ' => 'Ԫ', 'ԭ' => 'Ԭ', 'ԯ' => 'Ԯ', 'ա' => 'Ա', 'բ' => 'Բ', 'գ' => 'Գ', 'դ' => 'Դ', 'ե' => 'Ե', 'զ' => 'Զ', 'է' => 'Է', 'ը' => 'Ը', 'թ' => 'Թ', 'ժ' => 'Ժ', 'ի' => 'Ի', 'լ' => 'Լ', 'խ' => 'Խ', 'ծ' => 'Ծ', 'կ' => 'Կ', 'հ' => 'Հ', 'ձ' => 'Ձ', 'ղ' => 'Ղ', 'ճ' => 'Ճ', 'մ' => 'Մ', 'յ' => 'Յ', 'ն' => 'Ն', 'շ' => 'Շ', 'ո' => 'Ո', 'չ' => 'Չ', 'պ' => 'Պ', 'ջ' => 'Ջ', 'ռ' => 'Ռ', 'ս' => 'Ս', 'վ' => 'Վ', 'տ' => 'Տ', 'ր' => 'Ր', 'ց' => 'Ց', 'ւ' => 'Ւ', 'փ' => 'Փ', 'ք' => 'Ք', 'օ' => 'Օ', 'ֆ' => 'Ֆ', 'ა' => 'Ა', 'ბ' => 'Ბ', 'გ' => 'Გ', 'დ' => 'Დ', 'ე' => 'Ე', 'ვ' => 'Ვ', 'ზ' => 'Ზ', 'თ' => 'Თ', 'ი' => 'Ი', 'კ' => 'Კ', 'ლ' => 'Ლ', 'მ' => 'Მ', 'ნ' => 'Ნ', 'ო' => 'Ო', 'პ' => 'Პ', 'ჟ' => 'Ჟ', 'რ' => 'Რ', 'ს' => 'Ს', 'ტ' => 'Ტ', 'უ' => 'Უ', 'ფ' => 'Ფ', 'ქ' => 'Ქ', 'ღ' => 'Ღ', 'ყ' => 'Ყ', 'შ' => 'Შ', 'ჩ' => 'Ჩ', 'ც' => 'Ც', 'ძ' => 'Ძ', 'წ' => 'Წ', 'ჭ' => 'Ჭ', 'ხ' => 'Ხ', 'ჯ' => 'Ჯ', 'ჰ' => 'Ჰ', 'ჱ' => 'Ჱ', 'ჲ' => 'Ჲ', 'ჳ' => 'Ჳ', 'ჴ' => 'Ჴ', 'ჵ' => 'Ჵ', 'ჶ' => 'Ჶ', 'ჷ' => 'Ჷ', 'ჸ' => 'Ჸ', 'ჹ' => 'Ჹ', 'ჺ' => 'Ჺ', 'ჽ' => 'Ჽ', 'ჾ' => 'Ჾ', 'ჿ' => 'Ჿ', 'ᏸ' => 'Ᏸ', 'ᏹ' => 'Ᏹ', 'ᏺ' => 'Ᏺ', 'ᏻ' => 'Ᏻ', 'ᏼ' => 'Ᏼ', 'ᏽ' => 'Ᏽ', 'ᲀ' => 'В', 'ᲁ' => 'Д', 'ᲂ' => 'О', 'ᲃ' => 'С', 'ᲄ' => 'Т', 'ᲅ' => 'Т', 'ᲆ' => 'Ъ', 'ᲇ' => 'Ѣ', 'ᲈ' => 'Ꙋ', 'ᵹ' => 'Ᵹ', 'ᵽ' => 'Ᵽ', 'ᶎ' => 'Ᶎ', 'ḁ' => 'Ḁ', 'ḃ' => 'Ḃ', 'ḅ' => 'Ḅ', 'ḇ' => 'Ḇ', 'ḉ' => 'Ḉ', 'ḋ' => 'Ḋ', 'ḍ' => 'Ḍ', 'ḏ' => 'Ḏ', 'ḑ' => 'Ḑ', 'ḓ' => 'Ḓ', 'ḕ' => 'Ḕ', 'ḗ' => 'Ḗ', 'ḙ' => 'Ḙ', 'ḛ' => 'Ḛ', 'ḝ' => 'Ḝ', 'ḟ' => 'Ḟ', 'ḡ' => 'Ḡ', 'ḣ' => 'Ḣ', 'ḥ' => 'Ḥ', 'ḧ' => 'Ḧ', 'ḩ' => 'Ḩ', 'ḫ' => 'Ḫ', 'ḭ' => 'Ḭ', 'ḯ' => 'Ḯ', 'ḱ' => 'Ḱ', 'ḳ' => 'Ḳ', 'ḵ' => 'Ḵ', 'ḷ' => 'Ḷ', 'ḹ' => 'Ḹ', 'ḻ' => 'Ḻ', 'ḽ' => 'Ḽ', 'ḿ' => 'Ḿ', 'ṁ' => 'Ṁ', 'ṃ' => 'Ṃ', 'ṅ' => 'Ṅ', 'ṇ' => 'Ṇ', 'ṉ' => 'Ṉ', 'ṋ' => 'Ṋ', 'ṍ' => 'Ṍ', 'ṏ' => 'Ṏ', 'ṑ' => 'Ṑ', 'ṓ' => 'Ṓ', 'ṕ' => 'Ṕ', 'ṗ' => 'Ṗ', 'ṙ' => 'Ṙ', 'ṛ' => 'Ṛ', 'ṝ' => 'Ṝ', 'ṟ' => 'Ṟ', 'ṡ' => 'Ṡ', 'ṣ' => 'Ṣ', 'ṥ' => 'Ṥ', 'ṧ' => 'Ṧ', 'ṩ' => 'Ṩ', 'ṫ' => 'Ṫ', 'ṭ' => 'Ṭ', 'ṯ' => 'Ṯ', 'ṱ' => 'Ṱ', 'ṳ' => 'Ṳ', 'ṵ' => 'Ṵ', 'ṷ' => 'Ṷ', 'ṹ' => 'Ṹ', 'ṻ' => 'Ṻ', 'ṽ' => 'Ṽ', 'ṿ' => 'Ṿ', 'ẁ' => 'Ẁ', 'ẃ' => 'Ẃ', 'ẅ' => 'Ẅ', 'ẇ' => 'Ẇ', 'ẉ' => 'Ẉ', 'ẋ' => 'Ẋ', 'ẍ' => 'Ẍ', 'ẏ' => 'Ẏ', 'ẑ' => 'Ẑ', 'ẓ' => 'Ẓ', 'ẕ' => 'Ẕ', 'ẛ' => 'Ṡ', 'ạ' => 'Ạ', 'ả' => 'Ả', 'ấ' => 'Ấ', 'ầ' => 'Ầ', 'ẩ' => 'Ẩ', 'ẫ' => 'Ẫ', 'ậ' => 'Ậ', 'ắ' => 'Ắ', 'ằ' => 'Ằ', 'ẳ' => 'Ẳ', 'ẵ' => 'Ẵ', 'ặ' => 'Ặ', 'ẹ' => 'Ẹ', 'ẻ' => 'Ẻ', 'ẽ' => 'Ẽ', 'ế' => 'Ế', 'ề' => 'Ề', 'ể' => 'Ể', 'ễ' => 'Ễ', 'ệ' => 'Ệ', 'ỉ' => 'Ỉ', 'ị' => 'Ị', 'ọ' => 'Ọ', 'ỏ' => 'Ỏ', 'ố' => 'Ố', 'ồ' => 'Ồ', 'ổ' => 'Ổ', 'ỗ' => 'Ỗ', 'ộ' => 'Ộ', 'ớ' => 'Ớ', 'ờ' => 'Ờ', 'ở' => 'Ở', 'ỡ' => 'Ỡ', 'ợ' => 'Ợ', 'ụ' => 'Ụ', 'ủ' => 'Ủ', 'ứ' => 'Ứ', 'ừ' => 'Ừ', 'ử' => 'Ử', 'ữ' => 'Ữ', 'ự' => 'Ự', 'ỳ' => 'Ỳ', 'ỵ' => 'Ỵ', 'ỷ' => 'Ỷ', 'ỹ' => 'Ỹ', 'ỻ' => 'Ỻ', 'ỽ' => 'Ỽ', 'ỿ' => 'Ỿ', 'ἀ' => 'Ἀ', 'ἁ' => 'Ἁ', 'ἂ' => 'Ἂ', 'ἃ' => 'Ἃ', 'ἄ' => 'Ἄ', 'ἅ' => 'Ἅ', 'ἆ' => 'Ἆ', 'ἇ' => 'Ἇ', 'ἐ' => 'Ἐ', 'ἑ' => 'Ἑ', 'ἒ' => 'Ἒ', 'ἓ' => 'Ἓ', 'ἔ' => 'Ἔ', 'ἕ' => 'Ἕ', 'ἠ' => 'Ἠ', 'ἡ' => 'Ἡ', 'ἢ' => 'Ἢ', 'ἣ' => 'Ἣ', 'ἤ' => 'Ἤ', 'ἥ' => 'Ἥ', 'ἦ' => 'Ἦ', 'ἧ' => 'Ἧ', 'ἰ' => 'Ἰ', 'ἱ' => 'Ἱ', 'ἲ' => 'Ἲ', 'ἳ' => 'Ἳ', 'ἴ' => 'Ἴ', 'ἵ' => 'Ἵ', 'ἶ' => 'Ἶ', 'ἷ' => 'Ἷ', 'ὀ' => 'Ὀ', 'ὁ' => 'Ὁ', 'ὂ' => 'Ὂ', 'ὃ' => 'Ὃ', 'ὄ' => 'Ὄ', 'ὅ' => 'Ὅ', 'ὑ' => 'Ὑ', 'ὓ' => 'Ὓ', 'ὕ' => 'Ὕ', 'ὗ' => 'Ὗ', 'ὠ' => 'Ὠ', 'ὡ' => 'Ὡ', 'ὢ' => 'Ὢ', 'ὣ' => 'Ὣ', 'ὤ' => 'Ὤ', 'ὥ' => 'Ὥ', 'ὦ' => 'Ὦ', 'ὧ' => 'Ὧ', 'ὰ' => 'Ὰ', 'ά' => 'Ά', 'ὲ' => 'Ὲ', 'έ' => 'Έ', 'ὴ' => 'Ὴ', 'ή' => 'Ή', 'ὶ' => 'Ὶ', 'ί' => 'Ί', 'ὸ' => 'Ὸ', 'ό' => 'Ό', 'ὺ' => 'Ὺ', 'ύ' => 'Ύ', 'ὼ' => 'Ὼ', 'ώ' => 'Ώ', 'ᾀ' => 'ᾈ', 'ᾁ' => 'ᾉ', 'ᾂ' => 'ᾊ', 'ᾃ' => 'ᾋ', 'ᾄ' => 'ᾌ', 'ᾅ' => 'ᾍ', 'ᾆ' => 'ᾎ', 'ᾇ' => 'ᾏ', 'ᾐ' => 'ᾘ', 'ᾑ' => 'ᾙ', 'ᾒ' => 'ᾚ', 'ᾓ' => 'ᾛ', 'ᾔ' => 'ᾜ', 'ᾕ' => 'ᾝ', 'ᾖ' => 'ᾞ', 'ᾗ' => 'ᾟ', 'ᾠ' => 'ᾨ', 'ᾡ' => 'ᾩ', 'ᾢ' => 'ᾪ', 'ᾣ' => 'ᾫ', 'ᾤ' => 'ᾬ', 'ᾥ' => 'ᾭ', 'ᾦ' => 'ᾮ', 'ᾧ' => 'ᾯ', 'ᾰ' => 'Ᾰ', 'ᾱ' => 'Ᾱ', 'ᾳ' => 'ᾼ', 'ι' => 'Ι', 'ῃ' => 'ῌ', 'ῐ' => 'Ῐ', 'ῑ' => 'Ῑ', 'ῠ' => 'Ῠ', 'ῡ' => 'Ῡ', 'ῥ' => 'Ῥ', 'ῳ' => 'ῼ', 'ⅎ' => 'Ⅎ', 'ⅰ' => 'Ⅰ', 'ⅱ' => 'Ⅱ', 'ⅲ' => 'Ⅲ', 'ⅳ' => 'Ⅳ', 'ⅴ' => 'Ⅴ', 'ⅵ' => 'Ⅵ', 'ⅶ' => 'Ⅶ', 'ⅷ' => 'Ⅷ', 'ⅸ' => 'Ⅸ', 'ⅹ' => 'Ⅹ', 'ⅺ' => 'Ⅺ', 'ⅻ' => 'Ⅻ', 'ⅼ' => 'Ⅼ', 'ⅽ' => 'Ⅽ', 'ⅾ' => 'Ⅾ', 'ⅿ' => 'Ⅿ', 'ↄ' => 'Ↄ', 'ⓐ' => 'Ⓐ', 'ⓑ' => 'Ⓑ', 'ⓒ' => 'Ⓒ', 'ⓓ' => 'Ⓓ', 'ⓔ' => 'Ⓔ', 'ⓕ' => 'Ⓕ', 'ⓖ' => 'Ⓖ', 'ⓗ' => 'Ⓗ', 'ⓘ' => 'Ⓘ', 'ⓙ' => 'Ⓙ', 'ⓚ' => 'Ⓚ', 'ⓛ' => 'Ⓛ', 'ⓜ' => 'Ⓜ', 'ⓝ' => 'Ⓝ', 'ⓞ' => 'Ⓞ', 'ⓟ' => 'Ⓟ', 'ⓠ' => 'Ⓠ', 'ⓡ' => 'Ⓡ', 'ⓢ' => 'Ⓢ', 'ⓣ' => 'Ⓣ', 'ⓤ' => 'Ⓤ', 'ⓥ' => 'Ⓥ', 'ⓦ' => 'Ⓦ', 'ⓧ' => 'Ⓧ', 'ⓨ' => 'Ⓨ', 'ⓩ' => 'Ⓩ', 'ⰰ' => 'Ⰰ', 'ⰱ' => 'Ⰱ', 'ⰲ' => 'Ⰲ', 'ⰳ' => 'Ⰳ', 'ⰴ' => 'Ⰴ', 'ⰵ' => 'Ⰵ', 'ⰶ' => 'Ⰶ', 'ⰷ' => 'Ⰷ', 'ⰸ' => 'Ⰸ', 'ⰹ' => 'Ⰹ', 'ⰺ' => 'Ⰺ', 'ⰻ' => 'Ⰻ', 'ⰼ' => 'Ⰼ', 'ⰽ' => 'Ⰽ', 'ⰾ' => 'Ⰾ', 'ⰿ' => 'Ⰿ', 'ⱀ' => 'Ⱀ', 'ⱁ' => 'Ⱁ', 'ⱂ' => 'Ⱂ', 'ⱃ' => 'Ⱃ', 'ⱄ' => 'Ⱄ', 'ⱅ' => 'Ⱅ', 'ⱆ' => 'Ⱆ', 'ⱇ' => 'Ⱇ', 'ⱈ' => 'Ⱈ', 'ⱉ' => 'Ⱉ', 'ⱊ' => 'Ⱊ', 'ⱋ' => 'Ⱋ', 'ⱌ' => 'Ⱌ', 'ⱍ' => 'Ⱍ', 'ⱎ' => 'Ⱎ', 'ⱏ' => 'Ⱏ', 'ⱐ' => 'Ⱐ', 'ⱑ' => 'Ⱑ', 'ⱒ' => 'Ⱒ', 'ⱓ' => 'Ⱓ', 'ⱔ' => 'Ⱔ', 'ⱕ' => 'Ⱕ', 'ⱖ' => 'Ⱖ', 'ⱗ' => 'Ⱗ', 'ⱘ' => 'Ⱘ', 'ⱙ' => 'Ⱙ', 'ⱚ' => 'Ⱚ', 'ⱛ' => 'Ⱛ', 'ⱜ' => 'Ⱜ', 'ⱝ' => 'Ⱝ', 'ⱞ' => 'Ⱞ', 'ⱡ' => 'Ⱡ', 'ⱥ' => 'Ⱥ', 'ⱦ' => 'Ⱦ', 'ⱨ' => 'Ⱨ', 'ⱪ' => 'Ⱪ', 'ⱬ' => 'Ⱬ', 'ⱳ' => 'Ⱳ', 'ⱶ' => 'Ⱶ', 'ⲁ' => 'Ⲁ', 'ⲃ' => 'Ⲃ', 'ⲅ' => 'Ⲅ', 'ⲇ' => 'Ⲇ', 'ⲉ' => 'Ⲉ', 'ⲋ' => 'Ⲋ', 'ⲍ' => 'Ⲍ', 'ⲏ' => 'Ⲏ', 'ⲑ' => 'Ⲑ', 'ⲓ' => 'Ⲓ', 'ⲕ' => 'Ⲕ', 'ⲗ' => 'Ⲗ', 'ⲙ' => 'Ⲙ', 'ⲛ' => 'Ⲛ', 'ⲝ' => 'Ⲝ', 'ⲟ' => 'Ⲟ', 'ⲡ' => 'Ⲡ', 'ⲣ' => 'Ⲣ', 'ⲥ' => 'Ⲥ', 'ⲧ' => 'Ⲧ', 'ⲩ' => 'Ⲩ', 'ⲫ' => 'Ⲫ', 'ⲭ' => 'Ⲭ', 'ⲯ' => 'Ⲯ', 'ⲱ' => 'Ⲱ', 'ⲳ' => 'Ⲳ', 'ⲵ' => 'Ⲵ', 'ⲷ' => 'Ⲷ', 'ⲹ' => 'Ⲹ', 'ⲻ' => 'Ⲻ', 'ⲽ' => 'Ⲽ', 'ⲿ' => 'Ⲿ', 'ⳁ' => 'Ⳁ', 'ⳃ' => 'Ⳃ', 'ⳅ' => 'Ⳅ', 'ⳇ' => 'Ⳇ', 'ⳉ' => 'Ⳉ', 'ⳋ' => 'Ⳋ', 'ⳍ' => 'Ⳍ', 'ⳏ' => 'Ⳏ', 'ⳑ' => 'Ⳑ', 'ⳓ' => 'Ⳓ', 'ⳕ' => 'Ⳕ', 'ⳗ' => 'Ⳗ', 'ⳙ' => 'Ⳙ', 'ⳛ' => 'Ⳛ', 'ⳝ' => 'Ⳝ', 'ⳟ' => 'Ⳟ', 'ⳡ' => 'Ⳡ', 'ⳣ' => 'Ⳣ', 'ⳬ' => 'Ⳬ', 'ⳮ' => 'Ⳮ', 'ⳳ' => 'Ⳳ', 'ⴀ' => 'Ⴀ', 'ⴁ' => 'Ⴁ', 'ⴂ' => 'Ⴂ', 'ⴃ' => 'Ⴃ', 'ⴄ' => 'Ⴄ', 'ⴅ' => 'Ⴅ', 'ⴆ' => 'Ⴆ', 'ⴇ' => 'Ⴇ', 'ⴈ' => 'Ⴈ', 'ⴉ' => 'Ⴉ', 'ⴊ' => 'Ⴊ', 'ⴋ' => 'Ⴋ', 'ⴌ' => 'Ⴌ', 'ⴍ' => 'Ⴍ', 'ⴎ' => 'Ⴎ', 'ⴏ' => 'Ⴏ', 'ⴐ' => 'Ⴐ', 'ⴑ' => 'Ⴑ', 'ⴒ' => 'Ⴒ', 'ⴓ' => 'Ⴓ', 'ⴔ' => 'Ⴔ', 'ⴕ' => 'Ⴕ', 'ⴖ' => 'Ⴖ', 'ⴗ' => 'Ⴗ', 'ⴘ' => 'Ⴘ', 'ⴙ' => 'Ⴙ', 'ⴚ' => 'Ⴚ', 'ⴛ' => 'Ⴛ', 'ⴜ' => 'Ⴜ', 'ⴝ' => 'Ⴝ', 'ⴞ' => 'Ⴞ', 'ⴟ' => 'Ⴟ', 'ⴠ' => 'Ⴠ', 'ⴡ' => 'Ⴡ', 'ⴢ' => 'Ⴢ', 'ⴣ' => 'Ⴣ', 'ⴤ' => 'Ⴤ', 'ⴥ' => 'Ⴥ', 'ⴧ' => 'Ⴧ', 'ⴭ' => 'Ⴭ', 'ꙁ' => 'Ꙁ', 'ꙃ' => 'Ꙃ', 'ꙅ' => 'Ꙅ', 'ꙇ' => 'Ꙇ', 'ꙉ' => 'Ꙉ', 'ꙋ' => 'Ꙋ', 'ꙍ' => 'Ꙍ', 'ꙏ' => 'Ꙏ', 'ꙑ' => 'Ꙑ', 'ꙓ' => 'Ꙓ', 'ꙕ' => 'Ꙕ', 'ꙗ' => 'Ꙗ', 'ꙙ' => 'Ꙙ', 'ꙛ' => 'Ꙛ', 'ꙝ' => 'Ꙝ', 'ꙟ' => 'Ꙟ', 'ꙡ' => 'Ꙡ', 'ꙣ' => 'Ꙣ', 'ꙥ' => 'Ꙥ', 'ꙧ' => 'Ꙧ', 'ꙩ' => 'Ꙩ', 'ꙫ' => 'Ꙫ', 'ꙭ' => 'Ꙭ', 'ꚁ' => 'Ꚁ', 'ꚃ' => 'Ꚃ', 'ꚅ' => 'Ꚅ', 'ꚇ' => 'Ꚇ', 'ꚉ' => 'Ꚉ', 'ꚋ' => 'Ꚋ', 'ꚍ' => 'Ꚍ', 'ꚏ' => 'Ꚏ', 'ꚑ' => 'Ꚑ', 'ꚓ' => 'Ꚓ', 'ꚕ' => 'Ꚕ', 'ꚗ' => 'Ꚗ', 'ꚙ' => 'Ꚙ', 'ꚛ' => 'Ꚛ', 'ꜣ' => 'Ꜣ', 'ꜥ' => 'Ꜥ', 'ꜧ' => 'Ꜧ', 'ꜩ' => 'Ꜩ', 'ꜫ' => 'Ꜫ', 'ꜭ' => 'Ꜭ', 'ꜯ' => 'Ꜯ', 'ꜳ' => 'Ꜳ', 'ꜵ' => 'Ꜵ', 'ꜷ' => 'Ꜷ', 'ꜹ' => 'Ꜹ', 'ꜻ' => 'Ꜻ', 'ꜽ' => 'Ꜽ', 'ꜿ' => 'Ꜿ', 'ꝁ' => 'Ꝁ', 'ꝃ' => 'Ꝃ', 'ꝅ' => 'Ꝅ', 'ꝇ' => 'Ꝇ', 'ꝉ' => 'Ꝉ', 'ꝋ' => 'Ꝋ', 'ꝍ' => 'Ꝍ', 'ꝏ' => 'Ꝏ', 'ꝑ' => 'Ꝑ', 'ꝓ' => 'Ꝓ', 'ꝕ' => 'Ꝕ', 'ꝗ' => 'Ꝗ', 'ꝙ' => 'Ꝙ', 'ꝛ' => 'Ꝛ', 'ꝝ' => 'Ꝝ', 'ꝟ' => 'Ꝟ', 'ꝡ' => 'Ꝡ', 'ꝣ' => 'Ꝣ', 'ꝥ' => 'Ꝥ', 'ꝧ' => 'Ꝧ', 'ꝩ' => 'Ꝩ', 'ꝫ' => 'Ꝫ', 'ꝭ' => 'Ꝭ', 'ꝯ' => 'Ꝯ', 'ꝺ' => 'Ꝺ', 'ꝼ' => 'Ꝼ', 'ꝿ' => 'Ꝿ', 'ꞁ' => 'Ꞁ', 'ꞃ' => 'Ꞃ', 'ꞅ' => 'Ꞅ', 'ꞇ' => 'Ꞇ', 'ꞌ' => 'Ꞌ', 'ꞑ' => 'Ꞑ', 'ꞓ' => 'Ꞓ', 'ꞔ' => 'Ꞔ', 'ꞗ' => 'Ꞗ', 'ꞙ' => 'Ꞙ', 'ꞛ' => 'Ꞛ', 'ꞝ' => 'Ꞝ', 'ꞟ' => 'Ꞟ', 'ꞡ' => 'Ꞡ', 'ꞣ' => 'Ꞣ', 'ꞥ' => 'Ꞥ', 'ꞧ' => 'Ꞧ', 'ꞩ' => 'Ꞩ', 'ꞵ' => 'Ꞵ', 'ꞷ' => 'Ꞷ', 'ꞹ' => 'Ꞹ', 'ꞻ' => 'Ꞻ', 'ꞽ' => 'Ꞽ', 'ꞿ' => 'Ꞿ', 'ꟃ' => 'Ꟃ', 'ꟈ' => 'Ꟈ', 'ꟊ' => 'Ꟊ', 'ꟶ' => 'Ꟶ', 'ꭓ' => 'Ꭓ', 'ꭰ' => 'Ꭰ', 'ꭱ' => 'Ꭱ', 'ꭲ' => 'Ꭲ', 'ꭳ' => 'Ꭳ', 'ꭴ' => 'Ꭴ', 'ꭵ' => 'Ꭵ', 'ꭶ' => 'Ꭶ', 'ꭷ' => 'Ꭷ', 'ꭸ' => 'Ꭸ', 'ꭹ' => 'Ꭹ', 'ꭺ' => 'Ꭺ', 'ꭻ' => 'Ꭻ', 'ꭼ' => 'Ꭼ', 'ꭽ' => 'Ꭽ', 'ꭾ' => 'Ꭾ', 'ꭿ' => 'Ꭿ', 'ꮀ' => 'Ꮀ', 'ꮁ' => 'Ꮁ', 'ꮂ' => 'Ꮂ', 'ꮃ' => 'Ꮃ', 'ꮄ' => 'Ꮄ', 'ꮅ' => 'Ꮅ', 'ꮆ' => 'Ꮆ', 'ꮇ' => 'Ꮇ', 'ꮈ' => 'Ꮈ', 'ꮉ' => 'Ꮉ', 'ꮊ' => 'Ꮊ', 'ꮋ' => 'Ꮋ', 'ꮌ' => 'Ꮌ', 'ꮍ' => 'Ꮍ', 'ꮎ' => 'Ꮎ', 'ꮏ' => 'Ꮏ', 'ꮐ' => 'Ꮐ', 'ꮑ' => 'Ꮑ', 'ꮒ' => 'Ꮒ', 'ꮓ' => 'Ꮓ', 'ꮔ' => 'Ꮔ', 'ꮕ' => 'Ꮕ', 'ꮖ' => 'Ꮖ', 'ꮗ' => 'Ꮗ', 'ꮘ' => 'Ꮘ', 'ꮙ' => 'Ꮙ', 'ꮚ' => 'Ꮚ', 'ꮛ' => 'Ꮛ', 'ꮜ' => 'Ꮜ', 'ꮝ' => 'Ꮝ', 'ꮞ' => 'Ꮞ', 'ꮟ' => 'Ꮟ', 'ꮠ' => 'Ꮠ', 'ꮡ' => 'Ꮡ', 'ꮢ' => 'Ꮢ', 'ꮣ' => 'Ꮣ', 'ꮤ' => 'Ꮤ', 'ꮥ' => 'Ꮥ', 'ꮦ' => 'Ꮦ', 'ꮧ' => 'Ꮧ', 'ꮨ' => 'Ꮨ', 'ꮩ' => 'Ꮩ', 'ꮪ' => 'Ꮪ', 'ꮫ' => 'Ꮫ', 'ꮬ' => 'Ꮬ', 'ꮭ' => 'Ꮭ', 'ꮮ' => 'Ꮮ', 'ꮯ' => 'Ꮯ', 'ꮰ' => 'Ꮰ', 'ꮱ' => 'Ꮱ', 'ꮲ' => 'Ꮲ', 'ꮳ' => 'Ꮳ', 'ꮴ' => 'Ꮴ', 'ꮵ' => 'Ꮵ', 'ꮶ' => 'Ꮶ', 'ꮷ' => 'Ꮷ', 'ꮸ' => 'Ꮸ', 'ꮹ' => 'Ꮹ', 'ꮺ' => 'Ꮺ', 'ꮻ' => 'Ꮻ', 'ꮼ' => 'Ꮼ', 'ꮽ' => 'Ꮽ', 'ꮾ' => 'Ꮾ', 'ꮿ' => 'Ꮿ', 'a' => 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G', 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K', 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O', 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S', 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W', 'x' => 'X', 'y' => 'Y', 'z' => 'Z', '𐐨' => '𐐀', '𐐩' => '𐐁', '𐐪' => '𐐂', '𐐫' => '𐐃', '𐐬' => '𐐄', '𐐭' => '𐐅', '𐐮' => '𐐆', '𐐯' => '𐐇', '𐐰' => '𐐈', '𐐱' => '𐐉', '𐐲' => '𐐊', '𐐳' => '𐐋', '𐐴' => '𐐌', '𐐵' => '𐐍', '𐐶' => '𐐎', '𐐷' => '𐐏', '𐐸' => '𐐐', '𐐹' => '𐐑', '𐐺' => '𐐒', '𐐻' => '𐐓', '𐐼' => '𐐔', '𐐽' => '𐐕', '𐐾' => '𐐖', '𐐿' => '𐐗', '𐑀' => '𐐘', '𐑁' => '𐐙', '𐑂' => '𐐚', '𐑃' => '𐐛', '𐑄' => '𐐜', '𐑅' => '𐐝', '𐑆' => '𐐞', '𐑇' => '𐐟', '𐑈' => '𐐠', '𐑉' => '𐐡', '𐑊' => '𐐢', '𐑋' => '𐐣', '𐑌' => '𐐤', '𐑍' => '𐐥', '𐑎' => '𐐦', '𐑏' => '𐐧', '𐓘' => '𐒰', '𐓙' => '𐒱', '𐓚' => '𐒲', '𐓛' => '𐒳', '𐓜' => '𐒴', '𐓝' => '𐒵', '𐓞' => '𐒶', '𐓟' => '𐒷', '𐓠' => '𐒸', '𐓡' => '𐒹', '𐓢' => '𐒺', '𐓣' => '𐒻', '𐓤' => '𐒼', '𐓥' => '𐒽', '𐓦' => '𐒾', '𐓧' => '𐒿', '𐓨' => '𐓀', '𐓩' => '𐓁', '𐓪' => '𐓂', '𐓫' => '𐓃', '𐓬' => '𐓄', '𐓭' => '𐓅', '𐓮' => '𐓆', '𐓯' => '𐓇', '𐓰' => '𐓈', '𐓱' => '𐓉', '𐓲' => '𐓊', '𐓳' => '𐓋', '𐓴' => '𐓌', '𐓵' => '𐓍', '𐓶' => '𐓎', '𐓷' => '𐓏', '𐓸' => '𐓐', '𐓹' => '𐓑', '𐓺' => '𐓒', '𐓻' => '𐓓', '𐳀' => '𐲀', '𐳁' => '𐲁', '𐳂' => '𐲂', '𐳃' => '𐲃', '𐳄' => '𐲄', '𐳅' => '𐲅', '𐳆' => '𐲆', '𐳇' => '𐲇', '𐳈' => '𐲈', '𐳉' => '𐲉', '𐳊' => '𐲊', '𐳋' => '𐲋', '𐳌' => '𐲌', '𐳍' => '𐲍', '𐳎' => '𐲎', '𐳏' => '𐲏', '𐳐' => '𐲐', '𐳑' => '𐲑', '𐳒' => '𐲒', '𐳓' => '𐲓', '𐳔' => '𐲔', '𐳕' => '𐲕', '𐳖' => '𐲖', '𐳗' => '𐲗', '𐳘' => '𐲘', '𐳙' => '𐲙', '𐳚' => '𐲚', '𐳛' => '𐲛', '𐳜' => '𐲜', '𐳝' => '𐲝', '𐳞' => '𐲞', '𐳟' => '𐲟', '𐳠' => '𐲠', '𐳡' => '𐲡', '𐳢' => '𐲢', '𐳣' => '𐲣', '𐳤' => '𐲤', '𐳥' => '𐲥', '𐳦' => '𐲦', '𐳧' => '𐲧', '𐳨' => '𐲨', '𐳩' => '𐲩', '𐳪' => '𐲪', '𐳫' => '𐲫', '𐳬' => '𐲬', '𐳭' => '𐲭', '𐳮' => '𐲮', '𐳯' => '𐲯', '𐳰' => '𐲰', '𐳱' => '𐲱', '𐳲' => '𐲲', '𑣀' => '𑢠', '𑣁' => '𑢡', '𑣂' => '𑢢', '𑣃' => '𑢣', '𑣄' => '𑢤', '𑣅' => '𑢥', '𑣆' => '𑢦', '𑣇' => '𑢧', '𑣈' => '𑢨', '𑣉' => '𑢩', '𑣊' => '𑢪', '𑣋' => '𑢫', '𑣌' => '𑢬', '𑣍' => '𑢭', '𑣎' => '𑢮', '𑣏' => '𑢯', '𑣐' => '𑢰', '𑣑' => '𑢱', '𑣒' => '𑢲', '𑣓' => '𑢳', '𑣔' => '𑢴', '𑣕' => '𑢵', '𑣖' => '𑢶', '𑣗' => '𑢷', '𑣘' => '𑢸', '𑣙' => '𑢹', '𑣚' => '𑢺', '𑣛' => '𑢻', '𑣜' => '𑢼', '𑣝' => '𑢽', '𑣞' => '𑢾', '𑣟' => '𑢿', '𖹠' => '𖹀', '𖹡' => '𖹁', '𖹢' => '𖹂', '𖹣' => '𖹃', '𖹤' => '𖹄', '𖹥' => '𖹅', '𖹦' => '𖹆', '𖹧' => '𖹇', '𖹨' => '𖹈', '𖹩' => '𖹉', '𖹪' => '𖹊', '𖹫' => '𖹋', '𖹬' => '𖹌', '𖹭' => '𖹍', '𖹮' => '𖹎', '𖹯' => '𖹏', '𖹰' => '𖹐', '𖹱' => '𖹑', '𖹲' => '𖹒', '𖹳' => '𖹓', '𖹴' => '𖹔', '𖹵' => '𖹕', '𖹶' => '𖹖', '𖹷' => '𖹗', '𖹸' => '𖹘', '𖹹' => '𖹙', '𖹺' => '𖹚', '𖹻' => '𖹛', '𖹼' => '𖹜', '𖹽' => '𖹝', '𖹾' => '𖹞', '𖹿' => '𖹟', '𞤢' => '𞤀', '𞤣' => '𞤁', '𞤤' => '𞤂', '𞤥' => '𞤃', '𞤦' => '𞤄', '𞤧' => '𞤅', '𞤨' => '𞤆', '𞤩' => '𞤇', '𞤪' => '𞤈', '𞤫' => '𞤉', '𞤬' => '𞤊', '𞤭' => '𞤋', '𞤮' => '𞤌', '𞤯' => '𞤍', '𞤰' => '𞤎', '𞤱' => '𞤏', '𞤲' => '𞤐', '𞤳' => '𞤑', '𞤴' => '𞤒', '𞤵' => '𞤓', '𞤶' => '𞤔', '𞤷' => '𞤕', '𞤸' => '𞤖', '𞤹' => '𞤗', '𞤺' => '𞤘', '𞤻' => '𞤙', '𞤼' => '𞤚', '𞤽' => '𞤛', '𞤾' => '𞤜', '𞤿' => '𞤝', '𞥀' => '𞤞', '𞥁' => '𞤟', '𞥂' => '𞤠', '𞥃' => '𞤡', ); db/login/vendor/symfony/polyfill-mbstring/Mbstring.php000064400000066761151502156020017232 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Mbstring; /** * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. * * Implemented: * - mb_chr - Returns a specific character from its Unicode code point * - mb_convert_encoding - Convert character encoding * - mb_convert_variables - Convert character code in variable(s) * - mb_decode_mimeheader - Decode string in MIME header field * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED * - mb_decode_numericentity - Decode HTML numeric string reference to character * - mb_encode_numericentity - Encode character to HTML numeric string reference * - mb_convert_case - Perform case folding on a string * - mb_detect_encoding - Detect character encoding * - mb_get_info - Get internal settings of mbstring * - mb_http_input - Detect HTTP input character encoding * - mb_http_output - Set/Get HTTP output character encoding * - mb_internal_encoding - Set/Get internal character encoding * - mb_list_encodings - Returns an array of all supported encodings * - mb_ord - Returns the Unicode code point of a character * - mb_output_handler - Callback function converts character encoding in output buffer * - mb_scrub - Replaces ill-formed byte sequences with substitute characters * - mb_strlen - Get string length * - mb_strpos - Find position of first occurrence of string in a string * - mb_strrpos - Find position of last occurrence of a string in a string * - mb_str_split - Convert a string to an array * - mb_strtolower - Make a string lowercase * - mb_strtoupper - Make a string uppercase * - mb_substitute_character - Set/Get substitution character * - mb_substr - Get part of string * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive * - mb_stristr - Finds first occurrence of a string within another, case insensitive * - mb_strrchr - Finds the last occurrence of a character in a string within another * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive * - mb_strstr - Finds first occurrence of a string within another * - mb_strwidth - Return width of string * - mb_substr_count - Count the number of substring occurrences * * Not implemented: * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) * - mb_ereg_* - Regular expression with multibyte support * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable * - mb_preferred_mime_name - Get MIME charset string * - mb_regex_encoding - Returns current encoding for multibyte regex as string * - mb_regex_set_options - Set/Get the default options for mbregex functions * - mb_send_mail - Send encoded mail * - mb_split - Split multibyte string using regular expression * - mb_strcut - Get part of string * - mb_strimwidth - Get truncated string with specified width * * @author Nicolas Grekas * * @internal */ final class Mbstring { const MB_CASE_FOLD = PHP_INT_MAX; private static $encodingList = array('ASCII', 'UTF-8'); private static $language = 'neutral'; private static $internalEncoding = 'UTF-8'; private static $caseFold = array( array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"), array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'), ); public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) { if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) { $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); } else { $fromEncoding = self::getEncoding($fromEncoding); } $toEncoding = self::getEncoding($toEncoding); if ('BASE64' === $fromEncoding) { $s = base64_decode($s); $fromEncoding = $toEncoding; } if ('BASE64' === $toEncoding) { return base64_encode($s); } if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { $fromEncoding = 'Windows-1252'; } if ('UTF-8' !== $fromEncoding) { $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s); } return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s); } if ('HTML-ENTITIES' === $fromEncoding) { $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8'); $fromEncoding = 'UTF-8'; } return iconv($fromEncoding, $toEncoding.'//IGNORE', $s); } public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { $vars = array(&$a, &$b, &$c, &$d, &$e, &$f); $ok = true; array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { $ok = false; } }); return $ok ? $fromEncoding : false; } public static function mb_decode_mimeheader($s) { return iconv_mime_decode($s, 2, self::$internalEncoding); } public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) { trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING); } public static function mb_decode_numericentity($s, $convmap, $encoding = null) { if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) { trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING); return null; } if (!\is_array($convmap) || !$convmap) { return false; } if (null !== $encoding && !\is_scalar($encoding)) { trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING); return ''; // Instead of null (cf. mb_encode_numericentity). } $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } $cnt = floor(\count($convmap) / 4) * 4; for ($i = 0; $i < $cnt; $i += 4) { // collector_decode_htmlnumericentity ignores $convmap[$i + 3] $convmap[$i] += $convmap[$i + 2]; $convmap[$i + 1] += $convmap[$i + 2]; } $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; for ($i = 0; $i < $cnt; $i += 4) { if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { return Mbstring::mb_chr($c - $convmap[$i + 2]); } } return $m[0]; }, $s); if (null === $encoding) { return $s; } return iconv('UTF-8', $encoding.'//IGNORE', $s); } public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) { if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) { trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING); return null; } if (!\is_array($convmap) || !$convmap) { return false; } if (null !== $encoding && !\is_scalar($encoding)) { trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING); return null; // Instead of '' (cf. mb_decode_numericentity). } if (null !== $is_hex && !\is_scalar($is_hex)) { trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING); return null; } $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4); $cnt = floor(\count($convmap) / 4) * 4; $i = 0; $len = \strlen($s); $result = ''; while ($i < $len) { $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; $c = self::mb_ord($uchr); for ($j = 0; $j < $cnt; $j += 4) { if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; continue 2; } } $result .= $uchr; } if (null === $encoding) { return $result; } return iconv('UTF-8', $encoding.'//IGNORE', $result); } public static function mb_convert_case($s, $mode, $encoding = null) { $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } if (MB_CASE_TITLE == $mode) { static $titleRegexp = null; if (null === $titleRegexp) { $titleRegexp = self::getData('titleCaseRegexp'); } $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s); } else { if (MB_CASE_UPPER == $mode) { static $upper = null; if (null === $upper) { $upper = self::getData('upperCase'); } $map = $upper; } else { if (self::MB_CASE_FOLD === $mode) { $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s); } static $lower = null; if (null === $lower) { $lower = self::getData('lowerCase'); } $map = $lower; } static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4); $i = 0; $len = \strlen($s); while ($i < $len) { $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; if (isset($map[$uchr])) { $uchr = $map[$uchr]; $nlen = \strlen($uchr); if ($nlen == $ulen) { $nlen = $i; do { $s[--$nlen] = $uchr[--$ulen]; } while ($ulen); } else { $s = substr_replace($s, $uchr, $i - $ulen, $ulen); $len += $nlen - $ulen; $i += $nlen - $ulen; } } } } if (null === $encoding) { return $s; } return iconv('UTF-8', $encoding.'//IGNORE', $s); } public static function mb_internal_encoding($encoding = null) { if (null === $encoding) { return self::$internalEncoding; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) { self::$internalEncoding = $encoding; return true; } return false; } public static function mb_language($lang = null) { if (null === $lang) { return self::$language; } switch ($lang = strtolower($lang)) { case 'uni': case 'neutral': self::$language = $lang; return true; } return false; } public static function mb_list_encodings() { return array('UTF-8'); } public static function mb_encoding_aliases($encoding) { switch (strtoupper($encoding)) { case 'UTF8': case 'UTF-8': return array('utf8'); } return false; } public static function mb_check_encoding($var = null, $encoding = null) { if (null === $encoding) { if (null === $var) { return false; } $encoding = self::$internalEncoding; } return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var); } public static function mb_detect_encoding($str, $encodingList = null, $strict = false) { if (null === $encodingList) { $encodingList = self::$encodingList; } else { if (!\is_array($encodingList)) { $encodingList = array_map('trim', explode(',', $encodingList)); } $encodingList = array_map('strtoupper', $encodingList); } foreach ($encodingList as $enc) { switch ($enc) { case 'ASCII': if (!preg_match('/[\x80-\xFF]/', $str)) { return $enc; } break; case 'UTF8': case 'UTF-8': if (preg_match('//u', $str)) { return 'UTF-8'; } break; default: if (0 === strncmp($enc, 'ISO-8859-', 9)) { return $enc; } } } return false; } public static function mb_detect_order($encodingList = null) { if (null === $encodingList) { return self::$encodingList; } if (!\is_array($encodingList)) { $encodingList = array_map('trim', explode(',', $encodingList)); } $encodingList = array_map('strtoupper', $encodingList); foreach ($encodingList as $enc) { switch ($enc) { default: if (strncmp($enc, 'ISO-8859-', 9)) { return false; } // no break case 'ASCII': case 'UTF8': case 'UTF-8': } } self::$encodingList = $encodingList; return true; } public static function mb_strlen($s, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return \strlen($s); } return @iconv_strlen($s, $encoding); } public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strpos($haystack, $needle, $offset); } $needle = (string) $needle; if ('' === $needle) { trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING); return false; } return iconv_strpos($haystack, $needle, $offset, $encoding); } public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strrpos($haystack, $needle, $offset); } if ($offset != (int) $offset) { $offset = 0; } elseif ($offset = (int) $offset) { if ($offset < 0) { if (0 > $offset += self::mb_strlen($needle)) { $haystack = self::mb_substr($haystack, 0, $offset, $encoding); } $offset = 0; } else { $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); } } $pos = iconv_strrpos($haystack, $needle, $encoding); return false !== $pos ? $offset + $pos : false; } public static function mb_str_split($string, $split_length = 1, $encoding = null) { if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) { trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING); return null; } if (1 > $split_length = (int) $split_length) { trigger_error('The length of each segment must be greater than zero', E_USER_WARNING); return false; } if (null === $encoding) { $encoding = mb_internal_encoding(); } if ('UTF-8' === $encoding = self::getEncoding($encoding)) { $rx = '/('; while (65535 < $split_length) { $rx .= '.{65535}'; $split_length -= 65535; } $rx .= '.{'.$split_length.'})/us'; return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); } $result = array(); $length = mb_strlen($string, $encoding); for ($i = 0; $i < $length; $i += $split_length) { $result[] = mb_substr($string, $i, $split_length, $encoding); } return $result; } public static function mb_strtolower($s, $encoding = null) { return self::mb_convert_case($s, MB_CASE_LOWER, $encoding); } public static function mb_strtoupper($s, $encoding = null) { return self::mb_convert_case($s, MB_CASE_UPPER, $encoding); } public static function mb_substitute_character($c = null) { if (0 === strcasecmp($c, 'none')) { return true; } return null !== $c ? false : 'none'; } public static function mb_substr($s, $start, $length = null, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return (string) substr($s, $start, null === $length ? 2147483647 : $length); } if ($start < 0) { $start = iconv_strlen($s, $encoding) + $start; if ($start < 0) { $start = 0; } } if (null === $length) { $length = 2147483647; } elseif ($length < 0) { $length = iconv_strlen($s, $encoding) + $length - $start; if ($length < 0) { return ''; } } return (string) iconv_substr($s, $start, $length, $encoding); } public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); return self::mb_strpos($haystack, $needle, $offset, $encoding); } public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) { $pos = self::mb_stripos($haystack, $needle, 0, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strrchr($haystack, $needle, $part); } $needle = self::mb_substr($needle, 0, 1, $encoding); $pos = iconv_strrpos($haystack, $needle, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) { $needle = self::mb_substr($needle, 0, 1, $encoding); $pos = self::mb_strripos($haystack, $needle, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); return self::mb_strrpos($haystack, $needle, $offset, $encoding); } public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) { $pos = strpos($haystack, $needle); if (false === $pos) { return false; } if ($part) { return substr($haystack, 0, $pos); } return substr($haystack, $pos); } public static function mb_get_info($type = 'all') { $info = array( 'internal_encoding' => self::$internalEncoding, 'http_output' => 'pass', 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', 'func_overload' => 0, 'func_overload_list' => 'no overload', 'mail_charset' => 'UTF-8', 'mail_header_encoding' => 'BASE64', 'mail_body_encoding' => 'BASE64', 'illegal_chars' => 0, 'encoding_translation' => 'Off', 'language' => self::$language, 'detect_order' => self::$encodingList, 'substitute_character' => 'none', 'strict_detection' => 'Off', ); if ('all' === $type) { return $info; } if (isset($info[$type])) { return $info[$type]; } return false; } public static function mb_http_input($type = '') { return false; } public static function mb_http_output($encoding = null) { return null !== $encoding ? 'pass' === $encoding : 'pass'; } public static function mb_strwidth($s, $encoding = null) { $encoding = self::getEncoding($encoding); if ('UTF-8' !== $encoding) { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); return ($wide << 1) + iconv_strlen($s, 'UTF-8'); } public static function mb_substr_count($haystack, $needle, $encoding = null) { return substr_count($haystack, $needle); } public static function mb_output_handler($contents, $status) { return $contents; } public static function mb_chr($code, $encoding = null) { if (0x80 > $code %= 0x200000) { $s = \chr($code); } elseif (0x800 > $code) { $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); } elseif (0x10000 > $code) { $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); } else { $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); } if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { $s = mb_convert_encoding($s, $encoding, 'UTF-8'); } return $s; } public static function mb_ord($s, $encoding = null) { if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { $s = mb_convert_encoding($s, 'UTF-8', $encoding); } if (1 === \strlen($s)) { return \ord($s); } $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; if (0xF0 <= $code) { return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; } if (0xE0 <= $code) { return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; } if (0xC0 <= $code) { return (($code - 0xC0) << 6) + $s[2] - 0x80; } return $code; } private static function getSubpart($pos, $part, $haystack, $encoding) { if (false === $pos) { return false; } if ($part) { return self::mb_substr($haystack, 0, $pos, $encoding); } return self::mb_substr($haystack, $pos, null, $encoding); } private static function html_encoding_callback(array $m) { $i = 1; $entities = ''; $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8')); while (isset($m[$i])) { if (0x80 > $m[$i]) { $entities .= \chr($m[$i++]); continue; } if (0xF0 <= $m[$i]) { $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; } elseif (0xE0 <= $m[$i]) { $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; } else { $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; } $entities .= '&#'.$c.';'; } return $entities; } private static function title_case(array $s) { return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8'); } private static function getData($file) { if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { return require $file; } return false; } private static function getEncoding($encoding) { if (null === $encoding) { return self::$internalEncoding; } if ('UTF-8' === $encoding) { return 'UTF-8'; } $encoding = strtoupper($encoding); if ('8BIT' === $encoding || 'BINARY' === $encoding) { return 'CP850'; } if ('UTF8' === $encoding) { return 'UTF-8'; } return $encoding; } } db/login/vendor/symfony/polyfill-mbstring/LICENSE000064400000002051151502156020015717 0ustar00Copyright (c) 2015-2019 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. db/login/vendor/symfony/polyfill-ctype/README.md000064400000000540151502156020015471 0ustar00Symfony Polyfill / Ctype ======================== This component provides `ctype_*` functions to users who run php versions without the ctype extension. More information can be found in the [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). License ======= This library is released under the [MIT license](LICENSE). db/login/vendor/symfony/polyfill-ctype/bootstrap.php000064400000002756151502156020016753 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Ctype as p; if (!function_exists('ctype_alnum')) { function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } } if (!function_exists('ctype_alpha')) { function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } } if (!function_exists('ctype_cntrl')) { function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } } if (!function_exists('ctype_digit')) { function ctype_digit($text) { return p\Ctype::ctype_digit($text); } } if (!function_exists('ctype_graph')) { function ctype_graph($text) { return p\Ctype::ctype_graph($text); } } if (!function_exists('ctype_lower')) { function ctype_lower($text) { return p\Ctype::ctype_lower($text); } } if (!function_exists('ctype_print')) { function ctype_print($text) { return p\Ctype::ctype_print($text); } } if (!function_exists('ctype_punct')) { function ctype_punct($text) { return p\Ctype::ctype_punct($text); } } if (!function_exists('ctype_space')) { function ctype_space($text) { return p\Ctype::ctype_space($text); } } if (!function_exists('ctype_upper')) { function ctype_upper($text) { return p\Ctype::ctype_upper($text); } } if (!function_exists('ctype_xdigit')) { function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } } db/login/vendor/symfony/polyfill-ctype/composer.json000064400000001734151502156020016742 0ustar00{ "name": "symfony/polyfill-ctype", "type": "library", "description": "Symfony polyfill for ctype functions", "keywords": ["polyfill", "compatibility", "portable", "ctype"], "homepage": "https://symfony.com", "license": "MIT", "authors": [ { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "require": { "php": ">=5.3.3" }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, "files": [ "bootstrap.php" ] }, "suggest": { "ext-ctype": "For best performance" }, "minimum-stability": "dev", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } } } db/login/vendor/symfony/polyfill-ctype/Ctype.php000064400000014175151502156020016020 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Ctype; /** * Ctype implementation through regex. * * @internal * * @author Gert de Pagter */ final class Ctype { /** * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. * * @see https://php.net/ctype-alnum * * @param string|int $text * * @return bool */ public static function ctype_alnum($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); } /** * Returns TRUE if every character in text is a letter, FALSE otherwise. * * @see https://php.net/ctype-alpha * * @param string|int $text * * @return bool */ public static function ctype_alpha($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); } /** * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. * * @see https://php.net/ctype-cntrl * * @param string|int $text * * @return bool */ public static function ctype_cntrl($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); } /** * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. * * @see https://php.net/ctype-digit * * @param string|int $text * * @return bool */ public static function ctype_digit($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); } /** * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. * * @see https://php.net/ctype-graph * * @param string|int $text * * @return bool */ public static function ctype_graph($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); } /** * Returns TRUE if every character in text is a lowercase letter. * * @see https://php.net/ctype-lower * * @param string|int $text * * @return bool */ public static function ctype_lower($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); } /** * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. * * @see https://php.net/ctype-print * * @param string|int $text * * @return bool */ public static function ctype_print($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); } /** * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. * * @see https://php.net/ctype-punct * * @param string|int $text * * @return bool */ public static function ctype_punct($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); } /** * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. * * @see https://php.net/ctype-space * * @param string|int $text * * @return bool */ public static function ctype_space($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); } /** * Returns TRUE if every character in text is an uppercase letter. * * @see https://php.net/ctype-upper * * @param string|int $text * * @return bool */ public static function ctype_upper($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); } /** * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. * * @see https://php.net/ctype-xdigit * * @param string|int $text * * @return bool */ public static function ctype_xdigit($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); } /** * Converts integers to their char versions according to normal ctype behaviour, if needed. * * If an integer between -128 and 255 inclusive is provided, * it is interpreted as the ASCII value of a single character * (negative values have 256 added in order to allow characters in the Extended ASCII range). * Any other integer is interpreted as a string containing the decimal digits of the integer. * * @param string|int $int * * @return mixed */ private static function convert_int_to_char_for_ctype($int) { if (!\is_int($int)) { return $int; } if ($int < -128 || $int > 255) { return (string) $int; } if ($int < 0) { $int += 256; } return \chr($int); } } db/login/vendor/symfony/polyfill-ctype/LICENSE000064400000002051151502156020015216 0ustar00Copyright (c) 2018-2019 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. db/login/vendor/twig/twig/README.rst000064400000001442151502156020013147 0ustar00Twig, the flexible, fast, and secure template language for PHP ============================================================== Twig is a template language for PHP, released under the new BSD license (code and documentation). Twig uses a syntax similar to the Django and Jinja template languages which inspired the Twig runtime environment. Sponsors -------- .. raw:: html Blackfire.io More Information ---------------- Read the `documentation`_ for more information. .. _documentation: https://twig.symfony.com/documentation db/login/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php000064400000000277151502156020020677 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_TokenParserBrokerInterface { /** * Gets a TokenParser suitable for a tag. * * @param string $tag A tag name * * @return TokenParserInterface|null A Twig_TokenParserInterface or null if no suitable TokenParser was found */ public function getTokenParser($tag); /** * Calls Twig\TokenParser\TokenParserInterface::setParser on all parsers the implementation knows of. */ public function setParser(Twig_ParserInterface $parser); /** * Gets the Twig_ParserInterface. * * @return Twig_ParserInterface|null A Twig_ParserInterface instance or null */ public function getParser(); } db/login/vendor/twig/twig/lib/Twig/LexerInterface.php000064400000001432151502156020016550 0ustar00 * * @deprecated since 1.12 (to be removed in 3.0) */ interface Twig_LexerInterface { /** * Tokenizes a source code. * * @param string|Source $code The source code * @param string $name A unique identifier for the source code * * @return TokenStream * * @throws SyntaxError When the code is syntactically wrong */ public function tokenize($code, $name = null); } db/login/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php000064400000000257151502156020017306 0ustar00 * * @deprecated since 1.23 and will be removed in 2.0. */ class Twig_Node_Expression_ExtensionReference extends AbstractExpression { public function __construct($name, $lineno, $tag = null) { parent::__construct([], ['name' => $name], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name'))); } } db/login/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php000064400000000332151502156020021135 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_TestInterface { /** * Compiles a test. * * @return string The PHP code for the test */ public function compile(); } db/login/vendor/twig/twig/lib/Twig/CompilerInterface.php000064400000001230151502156020017237 0ustar00 * * @deprecated since 1.12 (to be removed in 3.0) */ interface Twig_CompilerInterface { /** * Compiles a node. * * @return $this */ public function compile(Twig_NodeInterface $node); /** * Gets the current PHP code after compilation. * * @return string The PHP code */ public function getSource(); } db/login/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php000064400000000272151502156020017703 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Filter_Node extends Twig_Filter { protected $class; public function __construct($class, array $options = []) { parent::__construct($options); $this->class = $class; } public function getClass() { return $this->class; } public function compile() { } } db/login/vendor/twig/twig/lib/Twig/Filter/Method.php000064400000002130151502156020016311 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Filter_Method extends Twig_Filter { protected $extension; protected $method; public function __construct(ExtensionInterface $extension, $method, array $options = []) { $options['callable'] = [$extension, $method]; parent::__construct($options); $this->extension = $extension; $this->method = $method; } public function compile() { return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method); } } db/login/vendor/twig/twig/lib/Twig/Filter/Function.php000064400000001605151502156020016664 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Filter_Function extends Twig_Filter { protected $function; public function __construct($function, array $options = []) { $options['callable'] = $function; parent::__construct($options); $this->function = $function; } public function compile() { return $this->function; } } db/login/vendor/twig/twig/lib/Twig/Lexer.php000064400000000164151502156020014730 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Function_Node extends Twig_Function { protected $class; public function __construct($class, array $options = []) { parent::__construct($options); $this->class = $class; } public function getClass() { return $this->class; } public function compile() { } } db/login/vendor/twig/twig/lib/Twig/Function/Method.php000064400000002173151502156020016660 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Function_Method extends Twig_Function { protected $extension; protected $method; public function __construct(ExtensionInterface $extension, $method, array $options = []) { $options['callable'] = [$extension, $method]; parent::__construct($options); $this->extension = $extension; $this->method = $method; } public function compile() { return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method); } } db/login/vendor/twig/twig/lib/Twig/Function/Function.php000064400000001650151502156020017224 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Function_Function extends Twig_Function { protected $function; public function __construct($function, array $options = []) { $options['callable'] = $function; parent::__construct($options); $this->function = $function; } public function compile() { return $this->function; } } db/login/vendor/twig/twig/lib/Twig/TokenParserBroker.php000064400000007000151502156020017247 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface { protected $parser; protected $parsers = []; protected $brokers = []; /** * @param array|\Traversable $parsers A \Traversable of Twig_TokenParserInterface instances * @param array|\Traversable $brokers A \Traversable of Twig_TokenParserBrokerInterface instances * @param bool $triggerDeprecationError */ public function __construct($parsers = [], $brokers = [], $triggerDeprecationError = true) { if ($triggerDeprecationError) { @trigger_error('The '.__CLASS__.' class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED); } foreach ($parsers as $parser) { if (!$parser instanceof TokenParserInterface) { throw new \LogicException('$parsers must a an array of Twig_TokenParserInterface.'); } $this->parsers[$parser->getTag()] = $parser; } foreach ($brokers as $broker) { if (!$broker instanceof Twig_TokenParserBrokerInterface) { throw new \LogicException('$brokers must a an array of Twig_TokenParserBrokerInterface.'); } $this->brokers[] = $broker; } } public function addTokenParser(TokenParserInterface $parser) { $this->parsers[$parser->getTag()] = $parser; } public function removeTokenParser(TokenParserInterface $parser) { $name = $parser->getTag(); if (isset($this->parsers[$name]) && $parser === $this->parsers[$name]) { unset($this->parsers[$name]); } } public function addTokenParserBroker(self $broker) { $this->brokers[] = $broker; } public function removeTokenParserBroker(self $broker) { if (false !== $pos = array_search($broker, $this->brokers)) { unset($this->brokers[$pos]); } } /** * Gets a suitable TokenParser for a tag. * * First looks in parsers, then in brokers. * * @param string $tag A tag name * * @return TokenParserInterface|null A Twig_TokenParserInterface or null if no suitable TokenParser was found */ public function getTokenParser($tag) { if (isset($this->parsers[$tag])) { return $this->parsers[$tag]; } $broker = end($this->brokers); while (false !== $broker) { $parser = $broker->getTokenParser($tag); if (null !== $parser) { return $parser; } $broker = prev($this->brokers); } } public function getParsers() { return $this->parsers; } public function getParser() { return $this->parser; } public function setParser(Twig_ParserInterface $parser) { $this->parser = $parser; foreach ($this->parsers as $tokenParser) { $tokenParser->setParser($parser); } foreach ($this->brokers as $broker) { $broker->setParser($parser); } } } db/login/vendor/twig/twig/lib/Twig/Error/Syntax.php000064400000000231151502156020016223 0ustar00 * * @deprecated since 1.12 (to be removed in 3.0) */ interface Twig_TemplateInterface { const ANY_CALL = 'any'; const ARRAY_CALL = 'array'; const METHOD_CALL = 'method'; /** * Renders the template with the given context and returns it as string. * * @param array $context An array of parameters to pass to the template * * @return string The rendered template */ public function render(array $context); /** * Displays the template with the given context. * * @param array $context An array of parameters to pass to the template * @param array $blocks An array of blocks to pass to the template */ public function display(array $context, array $blocks = []); /** * Returns the bound environment for this template. * * @return Environment */ public function getEnvironment(); } db/login/vendor/twig/twig/lib/Twig/TestCallableInterface.php000064400000000656151502156020020037 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_TestCallableInterface { public function getCallable(); } db/login/vendor/twig/twig/lib/Twig/Test.php000064400000001564151502156020014575 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface { protected $options; protected $arguments = []; public function __construct(array $options = []) { $this->options = array_merge([ 'callable' => null, ], $options); } public function getCallable() { return $this->options['callable']; } } db/login/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php000064400000000300151502156020016701 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ abstract class Twig_Filter implements Twig_FilterInterface, Twig_FilterCallableInterface { protected $options; protected $arguments = []; public function __construct(array $options = []) { $this->options = array_merge([ 'needs_environment' => false, 'needs_context' => false, 'pre_escape' => null, 'preserves_safety' => null, 'callable' => null, ], $options); } public function setArguments($arguments) { $this->arguments = $arguments; } public function getArguments() { return $this->arguments; } public function needsEnvironment() { return $this->options['needs_environment']; } public function needsContext() { return $this->options['needs_context']; } public function getSafe(Node $filterArgs) { if (isset($this->options['is_safe'])) { return $this->options['is_safe']; } if (isset($this->options['is_safe_callback'])) { return \call_user_func($this->options['is_safe_callback'], $filterArgs); } } public function getPreservesSafety() { return $this->options['preserves_safety']; } public function getPreEscape() { return $this->options['pre_escape']; } public function getCallable() { return $this->options['callable']; } } db/login/vendor/twig/twig/lib/Twig/FilterInterface.php000064400000001533151502156020016720 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_FilterInterface { /** * Compiles a filter. * * @return string The PHP code for the filter */ public function compile(); public function needsEnvironment(); public function needsContext(); public function getSafe(Node $filterArgs); public function getPreservesSafety(); public function getPreEscape(); public function setArguments($arguments); public function getArguments(); } db/login/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php000064400000000324151502156020020264 0ustar00 * * @deprecated since 1.21 and will be removed in 2.0. Use Composer instead. 2.0. */ class Twig_Autoloader { /** * Registers Twig_Autoloader as an SPL autoloader. * * @param bool $prepend whether to prepend the autoloader or not */ public static function register($prepend = false) { @trigger_error('Using Twig_Autoloader is deprecated since version 1.21. Use Composer instead.', E_USER_DEPRECATED); spl_autoload_register([__CLASS__, 'autoload'], true, $prepend); } /** * Handles autoloading of classes. * * @param string $class a class name */ public static function autoload($class) { if (0 !== strpos($class, 'Twig')) { return; } if (is_file($file = __DIR__.'/../'.str_replace(['_', "\0"], ['/', ''], $class).'.php')) { require $file; } elseif (is_file($file = __DIR__.'/../../src/'.str_replace(['Twig\\', '\\', "\0"], ['', '/', ''], $class).'.php')) { require $file; } } } db/login/vendor/twig/twig/lib/Twig/ParserInterface.php000064400000001305151502156020016724 0ustar00 * * @deprecated since 1.12 (to be removed in 3.0) */ interface Twig_ParserInterface { /** * Converts a token stream to a node tree. * * @return ModuleNode * * @throws SyntaxError When the token stream is syntactically or semantically wrong */ public function parse(TokenStream $stream); } db/login/vendor/twig/twig/lib/Twig/NodeInterface.php000064400000001241151502156020016354 0ustar00 * * @deprecated since 1.12 (to be removed in 3.0) */ interface Twig_NodeInterface extends \Countable, \IteratorAggregate { /** * Compiles the node to PHP. */ public function compile(Compiler $compiler); /** * @deprecated since 1.27 (to be removed in 2.0) */ public function getLine(); public function getNodeTag(); } db/login/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php000064400000000324151502156020021620 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_FunctionInterface { /** * Compiles a function. * * @return string The PHP code for the function */ public function compile(); public function needsEnvironment(); public function needsContext(); public function getSafe(Node $filterArgs); public function setArguments($arguments); public function getArguments(); } db/login/vendor/twig/twig/lib/Twig/FilterCallableInterface.php000064400000000726151502156020020343 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_FilterCallableInterface { public function getCallable(); } db/login/vendor/twig/twig/lib/Twig/Parser.php000064400000000170151502156020015102 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ interface Twig_FunctionCallableInterface { public function getCallable(); } db/login/vendor/twig/twig/lib/Twig/ExtensionInterface.php000064400000000274151502156020017450 0ustar00 */ class Twig_Loader_String implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface { public function getSource($name) { @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED); return $name; } public function getSourceContext($name) { return new Source($name, $name); } public function exists($name) { return true; } public function getCacheKey($name) { return $name; } public function isFresh($name, $time) { return true; } } db/login/vendor/twig/twig/lib/Twig/SimpleTest.php000064400000000202151502156020015733 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface { protected $options; protected $arguments = []; public function __construct(array $options = []) { $this->options = array_merge([ 'needs_environment' => false, 'needs_context' => false, 'callable' => null, ], $options); } public function setArguments($arguments) { $this->arguments = $arguments; } public function getArguments() { return $this->arguments; } public function needsEnvironment() { return $this->options['needs_environment']; } public function needsContext() { return $this->options['needs_context']; } public function getSafe(Node $functionArgs) { if (isset($this->options['is_safe'])) { return $this->options['is_safe']; } if (isset($this->options['is_safe_callback'])) { return \call_user_func($this->options['is_safe_callback'], $functionArgs); } return []; } public function getCallable() { return $this->options['callable']; } } db/login/vendor/twig/twig/lib/Twig/Extension.php000064400000000260151502156020015622 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Test_Node extends Twig_Test { protected $class; public function __construct($class, array $options = []) { parent::__construct($options); $this->class = $class; } public function getClass() { return $this->class; } public function compile() { } } db/login/vendor/twig/twig/lib/Twig/Test/Method.php000064400000002052151502156020016006 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Test_Method extends Twig_Test { protected $extension; protected $method; public function __construct(ExtensionInterface $extension, $method, array $options = []) { $options['callable'] = [$extension, $method]; parent::__construct($options); $this->extension = $extension; $this->method = $method; } public function compile() { return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method); } } db/login/vendor/twig/twig/lib/Twig/Test/Function.php000064400000001527151502156020016361 0ustar00 * * @deprecated since 1.12 (to be removed in 2.0) */ class Twig_Test_Function extends Twig_Test { protected $function; public function __construct($function, array $options = []) { $options['callable'] = $function; parent::__construct($options); $this->function = $function; } public function compile() { return $this->function; } } db/login/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php000064400000000237151502156020017112 0ustar00> web/sites/default/settings.php php ./web/core/scripts/drupal install --no-interaction demo_umami > output perl -p -i -e 's/^([A-Za-z]+)\: (.+)$/export DRUPAL_\1=\2/' output source output wget https://get.symfony.com/cli/installer -O - | bash export PATH="$HOME/.symfony/bin:$PATH" symfony server:start -d --no-tls curl -OLsS https://get.blackfire.io/blackfire-player.phar chmod +x blackfire-player.phar cat > drupal-tests.bkf < | +----------------------------------------------------------------------+ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "php_twig.h" #include "ext/standard/php_var.h" #include "ext/standard/php_string.h" #include "ext/standard/php_smart_str.h" #include "ext/spl/spl_exceptions.h" #include "Zend/zend_object_handlers.h" #include "Zend/zend_interfaces.h" #include "Zend/zend_exceptions.h" #ifndef Z_ADDREF_P #define Z_ADDREF_P(pz) (pz)->refcount++ #endif #ifndef E_USER_DEPRECATED #define E_USER_DEPRECATED (1<<14L) #endif #define FREE_DTOR(z) \ zval_dtor(z); \ efree(z); #if PHP_VERSION_ID >= 50300 #define APPLY_TSRMLS_DC TSRMLS_DC #define APPLY_TSRMLS_CC TSRMLS_CC #define APPLY_TSRMLS_FETCH() #else #define APPLY_TSRMLS_DC #define APPLY_TSRMLS_CC #define APPLY_TSRMLS_FETCH() TSRMLS_FETCH() #endif ZEND_BEGIN_ARG_INFO_EX(twig_template_get_attribute_args, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 6) ZEND_ARG_INFO(0, template) ZEND_ARG_INFO(0, object) ZEND_ARG_INFO(0, item) ZEND_ARG_INFO(0, arguments) ZEND_ARG_INFO(0, type) ZEND_ARG_INFO(0, isDefinedTest) ZEND_END_ARG_INFO() #ifndef PHP_FE_END #define PHP_FE_END { NULL, NULL, NULL} #endif static const zend_function_entry twig_functions[] = { PHP_FE(twig_template_get_attributes, twig_template_get_attribute_args) PHP_FE_END }; PHP_RSHUTDOWN_FUNCTION(twig) { #if ZEND_DEBUG CG(unclean_shutdown) = 0; /* get rid of PHPUnit's exit() and report memleaks */ #endif return SUCCESS; } zend_module_entry twig_module_entry = { STANDARD_MODULE_HEADER, "twig", twig_functions, NULL, NULL, NULL, PHP_RSHUTDOWN(twig), NULL, PHP_TWIG_VERSION, STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_TWIG ZEND_GET_MODULE(twig) #endif static int TWIG_ARRAY_KEY_EXISTS(zval *array, zval *key) { if (Z_TYPE_P(array) != IS_ARRAY) { return 0; } switch (Z_TYPE_P(key)) { case IS_NULL: return zend_hash_exists(Z_ARRVAL_P(array), "", 1); case IS_BOOL: case IS_DOUBLE: convert_to_long(key); case IS_LONG: return zend_hash_index_exists(Z_ARRVAL_P(array), Z_LVAL_P(key)); default: convert_to_string(key); return zend_symtable_exists(Z_ARRVAL_P(array), Z_STRVAL_P(key), Z_STRLEN_P(key) + 1); } } static int TWIG_INSTANCE_OF(zval *object, zend_class_entry *interface TSRMLS_DC) { if (Z_TYPE_P(object) != IS_OBJECT) { return 0; } return instanceof_function(Z_OBJCE_P(object), interface TSRMLS_CC); } static int TWIG_INSTANCE_OF_USERLAND(zval *object, char *interface TSRMLS_DC) { zend_class_entry **pce; if (Z_TYPE_P(object) != IS_OBJECT) { return 0; } if (zend_lookup_class(interface, strlen(interface), &pce TSRMLS_CC) == FAILURE) { return 0; } return instanceof_function(Z_OBJCE_P(object), *pce TSRMLS_CC); } static zval *TWIG_GET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset TSRMLS_DC) { zend_class_entry *ce = Z_OBJCE_P(object); zval *retval; if (Z_TYPE_P(object) == IS_OBJECT) { SEPARATE_ARG_IF_REF(offset); zend_call_method_with_1_params(&object, ce, NULL, "offsetget", &retval, offset); zval_ptr_dtor(&offset); if (!retval) { if (!EG(exception)) { zend_error(E_ERROR, "Undefined offset for object of type %s used as array.", ce->name); } return NULL; } return retval; } return NULL; } static int TWIG_ISSET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset TSRMLS_DC) { zend_class_entry *ce = Z_OBJCE_P(object); zval *retval; if (Z_TYPE_P(object) == IS_OBJECT) { SEPARATE_ARG_IF_REF(offset); zend_call_method_with_1_params(&object, ce, NULL, "offsetexists", &retval, offset); zval_ptr_dtor(&offset); if (!retval) { if (!EG(exception)) { zend_error(E_ERROR, "Undefined offset for object of type %s used as array.", ce->name); } return 0; } return (retval && Z_TYPE_P(retval) == IS_BOOL && Z_LVAL_P(retval)); } return 0; } static char *TWIG_STRTOLOWER(const char *str, int str_len) { char *item_dup; item_dup = estrndup(str, str_len); php_strtolower(item_dup, str_len); return item_dup; } static zval *TWIG_CALL_USER_FUNC_ARRAY(zval *object, char *function, zval *arguments TSRMLS_DC) { zend_fcall_info fci; zval ***args = NULL; int arg_count = 0; HashTable *table; HashPosition pos; int i = 0; zval *retval_ptr; zval *zfunction; if (arguments) { table = HASH_OF(arguments); args = safe_emalloc(sizeof(zval **), table->nNumOfElements, 0); zend_hash_internal_pointer_reset_ex(table, &pos); while (zend_hash_get_current_data_ex(table, (void **)&args[i], &pos) == SUCCESS) { i++; zend_hash_move_forward_ex(table, &pos); } arg_count = table->nNumOfElements; } MAKE_STD_ZVAL(zfunction); ZVAL_STRING(zfunction, function, 1); fci.size = sizeof(fci); fci.function_table = EG(function_table); fci.function_name = zfunction; fci.symbol_table = NULL; #if PHP_VERSION_ID >= 50300 fci.object_ptr = object; #else fci.object_pp = &object; #endif fci.retval_ptr_ptr = &retval_ptr; fci.param_count = arg_count; fci.params = args; fci.no_separation = 0; if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) { ALLOC_INIT_ZVAL(retval_ptr); ZVAL_BOOL(retval_ptr, 0); } if (args) { efree(fci.params); } FREE_DTOR(zfunction); return retval_ptr; } static int TWIG_CALL_BOOLEAN(zval *object, char *functionName TSRMLS_DC) { zval *ret; int res; ret = TWIG_CALL_USER_FUNC_ARRAY(object, functionName, NULL TSRMLS_CC); res = Z_LVAL_P(ret); zval_ptr_dtor(&ret); return res; } static zval *TWIG_GET_STATIC_PROPERTY(zval *class, char *prop_name TSRMLS_DC) { zval **tmp_zval; zend_class_entry *ce; if (class == NULL || Z_TYPE_P(class) != IS_OBJECT) { return NULL; } ce = zend_get_class_entry(class TSRMLS_CC); #if PHP_VERSION_ID >= 50400 tmp_zval = zend_std_get_static_property(ce, prop_name, strlen(prop_name), 0, NULL TSRMLS_CC); #else tmp_zval = zend_std_get_static_property(ce, prop_name, strlen(prop_name), 0 TSRMLS_CC); #endif return *tmp_zval; } static zval *TWIG_GET_ARRAY_ELEMENT_ZVAL(zval *class, zval *prop_name TSRMLS_DC) { zval **tmp_zval; if (class == NULL || Z_TYPE_P(class) != IS_ARRAY) { if (class != NULL && Z_TYPE_P(class) == IS_OBJECT && TWIG_INSTANCE_OF(class, zend_ce_arrayaccess TSRMLS_CC)) { // array access object return TWIG_GET_ARRAYOBJECT_ELEMENT(class, prop_name TSRMLS_CC); } return NULL; } switch(Z_TYPE_P(prop_name)) { case IS_NULL: zend_hash_find(HASH_OF(class), "", 1, (void**) &tmp_zval); return *tmp_zval; case IS_BOOL: case IS_DOUBLE: convert_to_long(prop_name); case IS_LONG: zend_hash_index_find(HASH_OF(class), Z_LVAL_P(prop_name), (void **) &tmp_zval); return *tmp_zval; case IS_STRING: zend_symtable_find(HASH_OF(class), Z_STRVAL_P(prop_name), Z_STRLEN_P(prop_name) + 1, (void**) &tmp_zval); return *tmp_zval; } return NULL; } static zval *TWIG_GET_ARRAY_ELEMENT(zval *class, char *prop_name, int prop_name_length TSRMLS_DC) { zval **tmp_zval; if (class == NULL/* || Z_TYPE_P(class) != IS_ARRAY*/) { return NULL; } if (class != NULL && Z_TYPE_P(class) == IS_OBJECT && TWIG_INSTANCE_OF(class, zend_ce_arrayaccess TSRMLS_CC)) { // array access object zval *tmp_name_zval; zval *tmp_ret_zval; ALLOC_INIT_ZVAL(tmp_name_zval); ZVAL_STRING(tmp_name_zval, prop_name, 1); tmp_ret_zval = TWIG_GET_ARRAYOBJECT_ELEMENT(class, tmp_name_zval TSRMLS_CC); FREE_DTOR(tmp_name_zval); return tmp_ret_zval; } if (zend_symtable_find(HASH_OF(class), prop_name, prop_name_length+1, (void**)&tmp_zval) == SUCCESS) { return *tmp_zval; } return NULL; } static zval *TWIG_PROPERTY(zval *object, zval *propname TSRMLS_DC) { zval *tmp = NULL; if (Z_OBJ_HT_P(object)->read_property) { #if PHP_VERSION_ID >= 50400 tmp = Z_OBJ_HT_P(object)->read_property(object, propname, BP_VAR_IS, NULL TSRMLS_CC); #else tmp = Z_OBJ_HT_P(object)->read_property(object, propname, BP_VAR_IS TSRMLS_CC); #endif if (tmp == EG(uninitialized_zval_ptr)) { ZVAL_NULL(tmp); } } return tmp; } static int TWIG_HAS_PROPERTY(zval *object, zval *propname TSRMLS_DC) { if (Z_OBJ_HT_P(object)->has_property) { #if PHP_VERSION_ID >= 50400 return Z_OBJ_HT_P(object)->has_property(object, propname, 0, NULL TSRMLS_CC); #else return Z_OBJ_HT_P(object)->has_property(object, propname, 0 TSRMLS_CC); #endif } return 0; } static int TWIG_HAS_DYNAMIC_PROPERTY(zval *object, char *prop, int prop_len TSRMLS_DC) { if (Z_OBJ_HT_P(object)->get_properties) { return zend_hash_quick_exists( Z_OBJ_HT_P(object)->get_properties(object TSRMLS_CC), // the properties hash prop, // property name prop_len + 1, // property length zend_get_hash_value(prop, prop_len + 1) // hash value ); } return 0; } static zval *TWIG_PROPERTY_CHAR(zval *object, char *propname TSRMLS_DC) { zval *tmp_name_zval, *tmp; ALLOC_INIT_ZVAL(tmp_name_zval); ZVAL_STRING(tmp_name_zval, propname, 1); tmp = TWIG_PROPERTY(object, tmp_name_zval TSRMLS_CC); FREE_DTOR(tmp_name_zval); return tmp; } static zval *TWIG_CALL_S(zval *object, char *method, char *arg0 TSRMLS_DC) { zend_fcall_info fci; zval **args[1]; zval *argument; zval *zfunction; zval *retval_ptr; MAKE_STD_ZVAL(argument); ZVAL_STRING(argument, arg0, 1); args[0] = &argument; MAKE_STD_ZVAL(zfunction); ZVAL_STRING(zfunction, method, 1); fci.size = sizeof(fci); fci.function_table = EG(function_table); fci.function_name = zfunction; fci.symbol_table = NULL; #if PHP_VERSION_ID >= 50300 fci.object_ptr = object; #else fci.object_pp = &object; #endif fci.retval_ptr_ptr = &retval_ptr; fci.param_count = 1; fci.params = args; fci.no_separation = 0; if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) { FREE_DTOR(zfunction); zval_ptr_dtor(&argument); return 0; } FREE_DTOR(zfunction); zval_ptr_dtor(&argument); return retval_ptr; } static int TWIG_CALL_SB(zval *object, char *method, char *arg0 TSRMLS_DC) { zval *retval_ptr; int success; retval_ptr = TWIG_CALL_S(object, method, arg0 TSRMLS_CC); success = (retval_ptr && (Z_TYPE_P(retval_ptr) == IS_BOOL) && Z_LVAL_P(retval_ptr)); if (retval_ptr) { zval_ptr_dtor(&retval_ptr); } return success; } static int TWIG_CALL_ZZ(zval *object, char *method, zval *arg1, zval *arg2 TSRMLS_DC) { zend_fcall_info fci; zval **args[2]; zval *zfunction; zval *retval_ptr; int success; args[0] = &arg1; args[1] = &arg2; MAKE_STD_ZVAL(zfunction); ZVAL_STRING(zfunction, method, 1); fci.size = sizeof(fci); fci.function_table = EG(function_table); fci.function_name = zfunction; fci.symbol_table = NULL; #if PHP_VERSION_ID >= 50300 fci.object_ptr = object; #else fci.object_pp = &object; #endif fci.retval_ptr_ptr = &retval_ptr; fci.param_count = 2; fci.params = args; fci.no_separation = 0; if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) { FREE_DTOR(zfunction); return 0; } FREE_DTOR(zfunction); success = (retval_ptr && (Z_TYPE_P(retval_ptr) == IS_BOOL) && Z_LVAL_P(retval_ptr)); if (retval_ptr) { zval_ptr_dtor(&retval_ptr); } return success; } #ifndef Z_SET_REFCOUNT_P # define Z_SET_REFCOUNT_P(pz, rc) pz->refcount = rc # define Z_UNSET_ISREF_P(pz) pz->is_ref = 0 #endif static void TWIG_NEW(zval *object, char *class, zval *arg0, zval *arg1 TSRMLS_DC) { zend_class_entry **pce; if (zend_lookup_class(class, strlen(class), &pce TSRMLS_CC) == FAILURE) { return; } Z_TYPE_P(object) = IS_OBJECT; object_init_ex(object, *pce); Z_SET_REFCOUNT_P(object, 1); Z_UNSET_ISREF_P(object); TWIG_CALL_ZZ(object, "__construct", arg0, arg1 TSRMLS_CC); } static int twig_add_array_key_to_string(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) { smart_str *buf; char *joiner; APPLY_TSRMLS_FETCH(); buf = va_arg(args, smart_str*); joiner = va_arg(args, char*); if (buf->len != 0) { smart_str_appends(buf, joiner); } if (hash_key->nKeyLength == 0) { smart_str_append_long(buf, (long) hash_key->h); } else { char *key, *tmp_str; int key_len, tmp_len; key = php_addcslashes(hash_key->arKey, hash_key->nKeyLength - 1, &key_len, 0, "'\\", 2 TSRMLS_CC); tmp_str = php_str_to_str_ex(key, key_len, "\0", 1, "' . \"\\0\" . '", 12, &tmp_len, 0, NULL); smart_str_appendl(buf, tmp_str, tmp_len); efree(key); efree(tmp_str); } return 0; } static char *TWIG_IMPLODE_ARRAY_KEYS(char *joiner, zval *array TSRMLS_DC) { smart_str collector = { 0, 0, 0 }; smart_str_appendl(&collector, "", 0); zend_hash_apply_with_arguments(HASH_OF(array) APPLY_TSRMLS_CC, twig_add_array_key_to_string, 2, &collector, joiner); smart_str_0(&collector); return collector.c; } static void TWIG_RUNTIME_ERROR(zval *template TSRMLS_DC, char *message, ...) { char *buffer; va_list args; zend_class_entry **pce; zval *ex; zval *constructor; zval *zmessage; zval *lineno; zval *filename_func; zval *filename; zval *constructor_args[3]; zval *constructor_retval; if (zend_lookup_class("Twig_Error_Runtime", strlen("Twig_Error_Runtime"), &pce TSRMLS_CC) == FAILURE) { return; } va_start(args, message); vspprintf(&buffer, 0, message, args); va_end(args); MAKE_STD_ZVAL(ex); object_init_ex(ex, *pce); // Call Twig_Error constructor MAKE_STD_ZVAL(constructor); MAKE_STD_ZVAL(zmessage); MAKE_STD_ZVAL(lineno); MAKE_STD_ZVAL(filename); MAKE_STD_ZVAL(filename_func); MAKE_STD_ZVAL(constructor_retval); ZVAL_STRINGL(constructor, "__construct", sizeof("__construct")-1, 1); ZVAL_STRING(zmessage, buffer, 1); ZVAL_LONG(lineno, -1); // Get template filename ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1); call_user_function(EG(function_table), &template, filename_func, filename, 0, 0 TSRMLS_CC); constructor_args[0] = zmessage; constructor_args[1] = lineno; constructor_args[2] = filename; call_user_function(EG(function_table), &ex, constructor, constructor_retval, 3, constructor_args TSRMLS_CC); zval_ptr_dtor(&constructor_retval); zval_ptr_dtor(&zmessage); zval_ptr_dtor(&lineno); zval_ptr_dtor(&filename); FREE_DTOR(constructor); FREE_DTOR(filename_func); efree(buffer); zend_throw_exception_object(ex TSRMLS_CC); } static char *TWIG_GET_CLASS_NAME(zval *object TSRMLS_DC) { char *class_name; zend_uint class_name_len; if (Z_TYPE_P(object) != IS_OBJECT) { return ""; } #if PHP_API_VERSION >= 20100412 zend_get_object_classname(object, (const char **) &class_name, &class_name_len TSRMLS_CC); #else zend_get_object_classname(object, &class_name, &class_name_len TSRMLS_CC); #endif return class_name; } static int twig_add_method_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) { zend_class_entry *ce; zval *retval; char *item; size_t item_len; zend_function *mptr = (zend_function *) pDest; APPLY_TSRMLS_FETCH(); if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC)) { return 0; } ce = *va_arg(args, zend_class_entry**); retval = va_arg(args, zval*); item_len = strlen(mptr->common.function_name); item = estrndup(mptr->common.function_name, item_len); php_strtolower(item, item_len); if (strcmp("getenvironment", item) == 0) { zend_class_entry **twig_template_ce; if (zend_lookup_class("Twig_Template", strlen("Twig_Template"), &twig_template_ce TSRMLS_CC) == FAILURE) { return 0; } if (instanceof_function(ce, *twig_template_ce TSRMLS_CC)) { return 0; } } add_assoc_stringl_ex(retval, item, item_len+1, item, item_len, 0); return 0; } static int twig_add_property_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) { zend_class_entry *ce; zval *retval; char *class_name, *prop_name; zend_property_info *pptr = (zend_property_info *) pDest; APPLY_TSRMLS_FETCH(); if (!(pptr->flags & ZEND_ACC_PUBLIC) || (pptr->flags & ZEND_ACC_STATIC)) { return 0; } ce = *va_arg(args, zend_class_entry**); retval = va_arg(args, zval*); #if PHP_API_VERSION >= 20100412 zend_unmangle_property_name(pptr->name, pptr->name_length, (const char **) &class_name, (const char **) &prop_name); #else zend_unmangle_property_name(pptr->name, pptr->name_length, &class_name, &prop_name); #endif add_assoc_string(retval, prop_name, prop_name, 1); return 0; } static void twig_add_class_to_cache(zval *cache, zval *object, char *class_name TSRMLS_DC) { zval *class_info, *class_methods, *class_properties; zend_class_entry *class_ce; class_ce = zend_get_class_entry(object TSRMLS_CC); ALLOC_INIT_ZVAL(class_info); ALLOC_INIT_ZVAL(class_methods); ALLOC_INIT_ZVAL(class_properties); array_init(class_info); array_init(class_methods); array_init(class_properties); // add all methods to self::cache[$class]['methods'] zend_hash_apply_with_arguments(&class_ce->function_table APPLY_TSRMLS_CC, twig_add_method_to_class, 2, &class_ce, class_methods); zend_hash_apply_with_arguments(&class_ce->properties_info APPLY_TSRMLS_CC, twig_add_property_to_class, 2, &class_ce, class_properties); add_assoc_zval(class_info, "methods", class_methods); add_assoc_zval(class_info, "properties", class_properties); add_assoc_zval(cache, class_name, class_info); } /* {{{ proto mixed twig_template_get_attributes(TwigTemplate template, mixed object, mixed item, array arguments, string type, boolean isDefinedTest, boolean ignoreStrictCheck) A C implementation of TwigTemplate::getAttribute() */ PHP_FUNCTION(twig_template_get_attributes) { zval *template; zval *object; char *item; int item_len; zval *zitem, ztmpitem; zval *arguments = NULL; zval *ret = NULL; char *type = NULL; int type_len = 0; zend_bool isDefinedTest = 0; zend_bool ignoreStrictCheck = 0; int free_ret = 0; zval *tmp_self_cache; char *class_name = NULL; zval *tmp_class; char *type_name; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ozz|asbb", &template, &object, &zitem, &arguments, &type, &type_len, &isDefinedTest, &ignoreStrictCheck) == FAILURE) { return; } // convert the item to a string ztmpitem = *zitem; zval_copy_ctor(&ztmpitem); convert_to_string(&ztmpitem); item_len = Z_STRLEN(ztmpitem); item = estrndup(Z_STRVAL(ztmpitem), item_len); zval_dtor(&ztmpitem); if (!type) { type = "any"; } /* // array if (\Twig\Template::METHOD_CALL !== $type) { $arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; if ((is_array($object) && array_key_exists($arrayItem, $object)) || ($object instanceof ArrayAccess && isset($object[$arrayItem])) ) { if ($isDefinedTest) { return true; } return $object[$arrayItem]; } */ if (strcmp("method", type) != 0) { if ((TWIG_ARRAY_KEY_EXISTS(object, zitem)) || (TWIG_INSTANCE_OF(object, zend_ce_arrayaccess TSRMLS_CC) && TWIG_ISSET_ARRAYOBJECT_ELEMENT(object, zitem TSRMLS_CC)) ) { if (isDefinedTest) { efree(item); RETURN_TRUE; } ret = TWIG_GET_ARRAY_ELEMENT_ZVAL(object, zitem TSRMLS_CC); if (!ret) { ret = &EG(uninitialized_zval); } RETVAL_ZVAL(ret, 1, 0); if (free_ret) { zval_ptr_dtor(&ret); } efree(item); return; } /* if (\Twig\Template::ARRAY_CALL === $type) { if ($isDefinedTest) { return false; } if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return null; } */ if (strcmp("array", type) == 0 || Z_TYPE_P(object) != IS_OBJECT) { if (isDefinedTest) { efree(item); RETURN_FALSE; } if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { efree(item); return; } /* if ($object instanceof ArrayAccess) { $message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist', $arrayItem, get_class($object)); } elseif (is_object($object)) { $message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object)); } elseif (is_array($object)) { if (empty($object)) { $message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem); } else { $message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object))); } } elseif (\Twig\Template::ARRAY_CALL === $type) { if (null === $object) { $message = sprintf('Impossible to access a key ("%s") on a null variable', $item); } else { $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object); } } elseif (null === $object) { $message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item); } else { $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object); } throw new \Twig\Error\RuntimeError($message, -1, $this->getTemplateName()); } } */ if (TWIG_INSTANCE_OF(object, zend_ce_arrayaccess TSRMLS_CC)) { TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" in object with ArrayAccess of class \"%s\" does not exist.", item, TWIG_GET_CLASS_NAME(object TSRMLS_CC)); } else if (Z_TYPE_P(object) == IS_OBJECT) { TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to access a key \"%s\" on an object of class \"%s\" that does not implement ArrayAccess interface.", item, TWIG_GET_CLASS_NAME(object TSRMLS_CC)); } else if (Z_TYPE_P(object) == IS_ARRAY) { if (0 == zend_hash_num_elements(Z_ARRVAL_P(object))) { TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" does not exist as the array is empty.", item); } else { char *array_keys = TWIG_IMPLODE_ARRAY_KEYS(", ", object TSRMLS_CC); TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" for array with keys \"%s\" does not exist.", item, array_keys); efree(array_keys); } } else { char *type_name = zend_zval_type_name(object); Z_ADDREF_P(object); if (Z_TYPE_P(object) == IS_NULL) { convert_to_string(object); TWIG_RUNTIME_ERROR(template TSRMLS_CC, (strcmp("array", type) == 0) ? "Impossible to access a key (\"%s\") on a %s variable." : "Impossible to access an attribute (\"%s\") on a %s variable.", item, type_name); } else { convert_to_string(object); TWIG_RUNTIME_ERROR(template TSRMLS_CC, (strcmp("array", type) == 0) ? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")." : "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\").", item, type_name, Z_STRVAL_P(object)); } zval_ptr_dtor(&object); } efree(item); return; } } /* if (!is_object($object)) { if ($isDefinedTest) { return false; } */ if (Z_TYPE_P(object) != IS_OBJECT) { if (isDefinedTest) { efree(item); RETURN_FALSE; } /* if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return null; } if (null === $object) { $message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item); } elseif (is_array($object)) { $message = sprintf('Impossible to invoke a method ("%s") on an array.', $item); } else { $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object); } throw new \Twig\Error\RuntimeError($message, -1, $this->getTemplateName()); } */ if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { efree(item); return; } type_name = zend_zval_type_name(object); Z_ADDREF_P(object); if (Z_TYPE_P(object) == IS_NULL) { TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a null variable.", item); } else if (Z_TYPE_P(object) == IS_ARRAY) { TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on an array.", item); } else { convert_to_string_ex(&object); TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\").", item, type_name, Z_STRVAL_P(object)); } zval_ptr_dtor(&object); efree(item); return; } /* $class = get_class($object); */ class_name = TWIG_GET_CLASS_NAME(object TSRMLS_CC); tmp_self_cache = TWIG_GET_STATIC_PROPERTY(template, "cache" TSRMLS_CC); tmp_class = TWIG_GET_ARRAY_ELEMENT(tmp_self_cache, class_name, strlen(class_name) TSRMLS_CC); if (!tmp_class) { twig_add_class_to_cache(tmp_self_cache, object, class_name TSRMLS_CC); tmp_class = TWIG_GET_ARRAY_ELEMENT(tmp_self_cache, class_name, strlen(class_name) TSRMLS_CC); } efree(class_name); /* // object property if (\Twig\Template::METHOD_CALL !== $type && !$object instanceof \Twig\Template) { if (isset($object->$item) || array_key_exists((string) $item, $object)) { if ($isDefinedTest) { return true; } if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) { $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkPropertyAllowed($object, $item); } return $object->$item; } } */ if (strcmp("method", type) != 0 && !TWIG_INSTANCE_OF_USERLAND(object, "Twig_Template" TSRMLS_CC)) { zval *tmp_properties, *tmp_item; tmp_properties = TWIG_GET_ARRAY_ELEMENT(tmp_class, "properties", strlen("properties") TSRMLS_CC); tmp_item = TWIG_GET_ARRAY_ELEMENT(tmp_properties, item, item_len TSRMLS_CC); if (tmp_item || TWIG_HAS_PROPERTY(object, zitem TSRMLS_CC) || TWIG_HAS_DYNAMIC_PROPERTY(object, item, item_len TSRMLS_CC)) { if (isDefinedTest) { efree(item); RETURN_TRUE; } if (TWIG_CALL_SB(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "hasExtension", "Twig_Extension_Sandbox" TSRMLS_CC)) { TWIG_CALL_ZZ(TWIG_CALL_S(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getExtension", "Twig_Extension_Sandbox" TSRMLS_CC), "checkPropertyAllowed", object, zitem TSRMLS_CC); } if (EG(exception)) { efree(item); return; } ret = TWIG_PROPERTY(object, zitem TSRMLS_CC); efree(item); RETURN_ZVAL(ret, 1, 0); } } /* // object method if (!isset(self::$cache[$class]['methods'])) { if ($object instanceof self) { $ref = new \ReflectionClass($class); $methods = []; foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) { $methodName = strtolower($refMethod->name); // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment if ('getenvironment' !== $methodName) { $methods[$methodName] = true; } } self::$cache[$class]['methods'] = $methods; } else { self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object))); } } $call = false; $lcItem = strtolower($item); if (isset(self::$cache[$class]['methods'][$lcItem])) { $method = (string) $item; } elseif (isset(self::$cache[$class]['methods']['get'.$lcItem])) { $method = 'get'.$item; } elseif (isset(self::$cache[$class]['methods']['is'.$lcItem])) { $method = 'is'.$item; } elseif (isset(self::$cache[$class]['methods']['__call'])) { $method = (string) $item; $call = true; */ { int call = 0; char *lcItem = TWIG_STRTOLOWER(item, item_len); int lcItem_length; char *method = NULL; char *methodForDeprecation = NULL; char *tmp_method_name_get; char *tmp_method_name_is; zval *zmethod; zval *tmp_methods; lcItem_length = strlen(lcItem); tmp_method_name_get = emalloc(4 + lcItem_length); tmp_method_name_is = emalloc(3 + lcItem_length); sprintf(tmp_method_name_get, "get%s", lcItem); sprintf(tmp_method_name_is, "is%s", lcItem); tmp_methods = TWIG_GET_ARRAY_ELEMENT(tmp_class, "methods", strlen("methods") TSRMLS_CC); methodForDeprecation = emalloc(item_len + 1); sprintf(methodForDeprecation, "%s", item); if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, lcItem, lcItem_length TSRMLS_CC)) { method = item; } else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, tmp_method_name_get, lcItem_length + 3 TSRMLS_CC)) { method = tmp_method_name_get; } else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, tmp_method_name_is, lcItem_length + 2 TSRMLS_CC)) { method = tmp_method_name_is; } else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, "__call", 6 TSRMLS_CC)) { method = item; call = 1; /* } else { if ($isDefinedTest) { return false; } if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return null; } throw new \Twig\Error\RuntimeError(sprintf('Method "%s" for object "%s" does not exist.', $item, get_class($object)), -1, $this->getTemplateName()); } if ($isDefinedTest) { return true; } */ } else { efree(tmp_method_name_get); efree(tmp_method_name_is); efree(lcItem); if (isDefinedTest) { efree(item); RETURN_FALSE; } if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { efree(item); return; } TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Neither the property \"%s\" nor one of the methods \"%s()\", \"get%s()\"/\"is%s()\" or \"__call()\" exist and have public access in class \"%s\".", item, item, item, item, TWIG_GET_CLASS_NAME(object TSRMLS_CC)); efree(item); return; } if (isDefinedTest) { efree(tmp_method_name_get); efree(tmp_method_name_is); efree(lcItem);efree(item); RETURN_TRUE; } /* if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) { $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkMethodAllowed($object, $method); } */ MAKE_STD_ZVAL(zmethod); ZVAL_STRING(zmethod, method, 1); if (TWIG_CALL_SB(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "hasExtension", "Twig_Extension_Sandbox" TSRMLS_CC)) { TWIG_CALL_ZZ(TWIG_CALL_S(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getExtension", "Twig_Extension_Sandbox" TSRMLS_CC), "checkMethodAllowed", object, zmethod TSRMLS_CC); } zval_ptr_dtor(&zmethod); if (EG(exception)) { efree(tmp_method_name_get); efree(tmp_method_name_is); efree(lcItem);efree(item); return; } /* // Some objects throw exceptions when they have __call, and the method we try // to call is not supported. If ignoreStrictCheck is true, we should return null. try { $ret = call_user_func_array([$object, $method], $arguments); } catch (\BadMethodCallException $e) { if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { return null; } throw $e; } */ ret = TWIG_CALL_USER_FUNC_ARRAY(object, method, arguments TSRMLS_CC); if (EG(exception) && TWIG_INSTANCE_OF(EG(exception), spl_ce_BadMethodCallException TSRMLS_CC)) { if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { efree(tmp_method_name_get); efree(tmp_method_name_is); efree(lcItem);efree(item); zend_clear_exception(TSRMLS_C); return; } } free_ret = 1; efree(tmp_method_name_get); efree(tmp_method_name_is); efree(lcItem); /* // @deprecated in 1.28 if ($object instanceof Twig_TemplateInterface) { $self = $object->getTemplateName() === $this->getTemplateName(); $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName()); if ('renderBlock' === $method || 'displayBlock' === $method) { $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template'); } elseif ('hasBlock' === $method) { $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template'); } elseif ('render' === $method || 'display' === $method) { $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName()); } @trigger_error($message, E_USER_DEPRECATED); return $ret === '' ? '' : new \Twig\Markup($ret, $this->env->getCharset()); } return $ret; */ efree(item); // ret can be null, if e.g. the called method throws an exception if (ret) { if (TWIG_INSTANCE_OF_USERLAND(object, "Twig_TemplateInterface" TSRMLS_CC)) { int self; int old_error_reporting; zval *object_filename; zval *this_filename; zval *filename_func; char *deprecation_message_complement = NULL; char *deprecation_message = NULL; MAKE_STD_ZVAL(object_filename); MAKE_STD_ZVAL(this_filename); MAKE_STD_ZVAL(filename_func); // Get templates names ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1); call_user_function(EG(function_table), &object, filename_func, object_filename, 0, 0 TSRMLS_CC); ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1); call_user_function(EG(function_table), &template, filename_func, this_filename, 0, 0 TSRMLS_CC); self = (strcmp(Z_STRVAL_P(object_filename), Z_STRVAL_P(this_filename)) == 0); if (strcmp(methodForDeprecation, "renderBlock") == 0 || strcmp(methodForDeprecation, "displayBlock") == 0) { zval **arg0; zend_hash_index_find(HASH_OF(arguments), 0, (void **) &arg0); asprintf( &deprecation_message_complement, " Use block(\"%s\"%s) instead).", Z_STRVAL_PP(arg0), self ? "" : ", template" ); } else if (strcmp(methodForDeprecation, "hasBlock") == 0) { zval **arg0; zend_hash_index_find(HASH_OF(arguments), 0, (void **) &arg0); asprintf( &deprecation_message_complement, " Use \"block(\"%s\"%s) is defined\" instead).", Z_STRVAL_PP(arg0), self ? "" : ", template" ); } else if (strcmp(methodForDeprecation, "render") == 0 || strcmp(methodForDeprecation, "display") == 0) { asprintf( &deprecation_message_complement, " Use include(\"%s\") instead).", Z_STRVAL_P(object_filename) ); } else { deprecation_message_complement = (char*)calloc(0, sizeof(char)); } asprintf( &deprecation_message, "Calling \"%s\" on template \"%s\" from template \"%s\" is deprecated since version 1.28 and won't be supported anymore in 2.0.%s", methodForDeprecation, Z_STRVAL_P(object_filename), Z_STRVAL_P(this_filename), deprecation_message_complement ); old_error_reporting = EG(error_reporting); EG(error_reporting) = 0; zend_error(E_USER_DEPRECATED, "%s", deprecation_message); EG(error_reporting) = old_error_reporting; FREE_DTOR(filename_func) FREE_DTOR(object_filename) FREE_DTOR(this_filename) free(deprecation_message); free(deprecation_message_complement); if (Z_STRLEN_P(ret) != 0) { zval *charset = TWIG_CALL_USER_FUNC_ARRAY(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getCharset", NULL TSRMLS_CC); TWIG_NEW(return_value, "Twig_Markup", ret, charset TSRMLS_CC); zval_ptr_dtor(&charset); if (ret) { zval_ptr_dtor(&ret); } efree(methodForDeprecation); return; } } RETVAL_ZVAL(ret, 1, 0); if (free_ret) { zval_ptr_dtor(&ret); } } efree(methodForDeprecation); } } db/login/vendor/twig/twig/ext/twig/config.m4000064400000000335151502156020014741 0ustar00dnl config.m4 for extension twig PHP_ARG_ENABLE(twig, whether to enable twig support, [ --enable-twig Enable twig support]) if test "$PHP_TWIG" != "no"; then PHP_NEW_EXTENSION(twig, twig.c, $ext_shared) fi db/login/vendor/twig/twig/ext/twig/config.w32000064400000000225151502156020015032 0ustar00// vim:ft=javascript ARG_ENABLE("twig", "Twig support", "no"); if (PHP_TWIG != "no") { AC_DEFINE('HAVE_TWIG', 1); EXTENSION('twig', 'twig.c'); } db/login/vendor/twig/twig/ext/twig/php_twig.h000064400000002271151502156020015225 0ustar00/* +----------------------------------------------------------------------+ | Twig Extension | +----------------------------------------------------------------------+ | Copyright (c) 2011 Derick Rethans | +----------------------------------------------------------------------+ | Redistribution and use in source and binary forms, with or without | | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met (BSD-3-Clause). | +----------------------------------------------------------------------+ | Author: Derick Rethans | +----------------------------------------------------------------------+ */ #ifndef PHP_TWIG_H #define PHP_TWIG_H #define PHP_TWIG_VERSION "1.42.5-DEV" #include "php.h" extern zend_module_entry twig_module_entry; #define phpext_twig_ptr &twig_module_entry #ifndef PHP_WIN32 zend_module_entry *get_module(void); #endif #ifdef ZTS #include "TSRM.h" #endif PHP_FUNCTION(twig_template_get_attributes); PHP_RSHUTDOWN_FUNCTION(twig); #endif db/login/vendor/twig/twig/composer.json000064400000002323151502156020014201 0ustar00{ "name": "twig/twig", "type": "library", "description": "Twig, the flexible, fast, and secure template language for PHP", "keywords": ["templating"], "homepage": "https://twig.symfony.com", "license": "BSD-3-Clause", "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com", "homepage": "http://fabien.potencier.org", "role": "Lead Developer" }, { "name": "Twig Team", "role": "Contributors" }, { "name": "Armin Ronacher", "email": "armin.ronacher@active-4.com", "role": "Project Founder" } ], "require": { "php": ">=5.5.0", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "symfony/phpunit-bridge": "^4.4|^5.0", "psr/container": "^1.0" }, "autoload": { "psr-0" : { "Twig_" : "lib/" }, "psr-4" : { "Twig\\" : "src/" } }, "autoload-dev": { "psr-4" : { "Twig\\Tests\\" : "tests" } }, "extra": { "branch-alias": { "dev-master": "1.42-dev" } } } db/login/vendor/twig/twig/.editorconfig000064400000000340151502156020014131 0ustar00; top-most EditorConfig file root = true ; Unix-style newlines [*] end_of_line = LF [*.php] indent_style = space indent_size = 4 [*.test] indent_style = space indent_size = 4 [*.rst] indent_style = space indent_size = 4 db/login/vendor/twig/twig/CHANGELOG000064400000141433151502156020012677 0ustar00* 1.42.5 (2020-02-11) * Fix implementation of case-insensitivity for method names * 1.42.4 (2019-11-11) * optimized "block('foo') ?? 'bar" * added supported for exponential numbers * 1.42.3 (2019-08-24) * fixed the "split" filter when the delimiter is "0" * fixed the "empty" test on Traversable instances * fixed cache when opcache is installed but disabled * fixed PHP 7.4 compatibility * bumped the minimal PHP version to 5.5 * 1.42.2 (2019-06-18) * Display partial output (PHP buffer) when an error occurs in debug mode * 1.42.1 (2019-06-04) * added support for "Twig\Markup" instances in the "in" test (again) * allowed string operators as variables names in assignments * 1.42.0 (2019-05-31) * fixed the "filter" filter when the argument is \Traversable but does not implement \Iterator (\SimpleXmlElement for instance) * fixed a PHP fatal error when calling a macro imported in a block in a nested block * fixed a PHP fatal error when calling a macro imported in the template in another macro * fixed wrong error message on "import" and "from" * 1.41.0 (2019-05-14) * fixed support for PHP 7.4 * added "filter", "map", and "reduce" filters (and support for arrow functions) * fixed partial output leak when a PHP fatal error occurs * optimized context access on PHP 7.4 * 1.40.1 (2019-04-29) * fixed regression in NodeTraverser * 1.40.0 (2019-04-28) * allowed Twig\NodeVisitor\NodeVisitorInterface::leaveNode() to return "null" instead of "false" (same meaning) * added the "apply" tag as a replacement for the "filter" tag * allowed Twig\Loader\FilesystemLoader::findTemplate() to return "null" instead of "false" (same meaning) * added support for "Twig\Markup" instances in the "in" test * fixed Lexer when using custom options containing the # char * fixed "import" when macros are stored in a template string * 1.39.1 (2019-04-16) * fixed EscaperNodeVisitor * 1.39.0 (2019-04-16) * added Traversable support for the length filter * fixed some wrong location in error messages * made exception creation faster * made escaping on ternary expressions (?: and ??) more fine-grained * added the possibility to give a nice name to string templates (template_from_string function) * fixed the "with" behavior to always include the globals (for consistency with the "include" and "embed" tags) * fixed "include" with "ignore missing" when an error loading occurs in the included template * added support for a new whitespace trimming option ({%~ ~%}, {{~ ~}}, {#~ ~#}) * 1.38.4 (2019-03-23) * fixed CheckToStringNode implementation (broken when a function/filter is variadic) * 1.38.3 (2019-03-21) * fixed the spaceless filter so that it behaves like the spaceless tag * fixed BC break on Environment::resolveTemplate() * fixed the bundled Autoloader to also load namespaced classes * allowed Traversable objects to be used in the "with" tag * allowed Traversable objects to be used in the "with" argument of the "include" and "embed" tags * 1.38.2 (2019-03-12) * added TemplateWrapper::getTemplateName() * 1.38.1 (2019-03-12) * fixed class aliases * 1.38.0 (2019-03-12) * fixed sandbox security issue (under some circumstances, calling the __toString() method on an object was possible even if not allowed by the security policy) * fixed batch filter clobbers array keys when fill parameter is used * added preserveKeys support for the batch filter * fixed "embed" support when used from "template_from_string" * added the possibility to pass a TemplateWrapper to Twig\Environment::load() * improved the performance of the sandbox * added a spaceless filter * added max value to the "random" function * made namespace classes the default classes (PSR-0 ones are aliases now) * removed duplicated directory separator in FilesystemLoader * added Twig\Loader\ChainLoader::getLoaders() * changed internal code to use the namespaced classes as much as possible * 1.37.1 (2019-01-14) * fixed regression (key exists check for non ArrayObject objects) * fixed logic in TemplateWrapper * 1.37.0 (2019-01-14) * fixed ArrayObject access with a null value * fixed embedded templates starting with a BOM * fixed using a Twig_TemplateWrapper instance as an argument to extends * switched generated code to use the PHP short array notation * dropped PHP 5.3 support * fixed float representation in compiled templates * added a second argument to the join filter (last separator configuration) * 1.36.0 (2018-12-16) * made sure twig_include returns a string * fixed multi-byte UFT-8 in escape('html_attr') * added the "deprecated" tag * added support for dynamically named tests * fixed GlobalsInterface extended class * fixed filesystem loader throwing an exception instead of returning false * 1.35.4 (2018-07-13) * ensured that syntax errors are triggered with the right line * added the Symfony ctype polyfill as a dependency * "js" filter now produces valid JSON * 1.35.3 (2018-03-20) * fixed block names unicity * fixed counting children of SimpleXMLElement objects * added missing else clause to avoid infinite loops * fixed .. (range operator) in sandbox policy * 1.35.2 (2018-03-03) * fixed a regression in the way the profiler is registered in templates * 1.35.1 (2018-03-02) * added an exception when using "===" instead of "same as" * fixed possible array to string conversion concealing actual error * made variable names deterministic in compiled templates * fixed length filter when passing an instance of IteratorAggregate * fixed Environment::resolveTemplate to accept instances of TemplateWrapper * 1.35.0 (2017-09-27) * added Twig_Profiler_Profile::reset() * fixed use TokenParser to return an empty Node * added RuntimeExtensionInterface * added circular reference detection when loading templates * 1.34.4 (2017-07-04) * added support for runtime loaders in IntegrationTestCase * fixed deprecation when using Twig_Profiler_Dumper_Html * 1.34.3 (2017-06-07) * fixed namespaces introduction * 1.34.2 (2017-06-05) * fixed namespaces introduction * 1.34.1 (2017-06-05) * fixed namespaces introduction * 1.34.0 (2017-06-05) * added support for PHPUnit 6 when testing extensions * fixed PHP 7.2 compatibility * fixed template name generation in Twig_Environment::createTemplate() * removed final tag on Twig_TokenParser_Include * added namespaced aliases for all (non-deprecated) classes and interfaces * dropped HHVM support * dropped PHP 5.2 support * 1.33.2 (2017-04-20) * fixed edge case in the method cache for Twig attributes * 1.33.1 (2017-04-18) * fixed the empty() test * 1.33.0 (2017-03-22) * fixed a race condition handling when writing cache files * "length" filter now returns string length when applied to an object that does not implement \Countable but provides __toString() * "empty" test will now consider the return value of the __toString() method for objects implement __toString() but not \Countable * fixed JS escaping for unicode characters with higher code points * 1.32.0 (2017-02-26) * fixed deprecation notice in Twig_Util_DeprecationCollector * added a PSR-11 compatible runtime loader * added `side` argument to `trim` to allow left or right trimming only. * 1.31.0 (2017-01-11) * added Twig_NodeCaptureInterface for nodes that capture all output * fixed marking the environment as initialized too early * fixed C89 compat for the C extension * turned fatal error into exception when a previously generated cache is corrupted * fixed offline cache warm-ups for embedded templates * 1.30.0 (2016-12-23) * added Twig_FactoryRuntimeLoader * deprecated function/test/filter/tag overriding * deprecated the "disable_c_ext" attribute on Twig_Node_Expression_GetAttr * 1.29.0 (2016-12-13) * fixed sandbox being left enabled if an exception is thrown while rendering * marked some classes as being final (via @final) * made Twig_Error report real source path when possible * added support for {{ _self }} to provide an upgrade path from 1.x to 2.0 (replaces {{ _self.templateName }}) * deprecated silent display of undefined blocks * deprecated support for mbstring.func_overload != 0 * 1.28.2 (2016-11-23) * fixed precedence between getFoo() and isFoo() in Twig_Template::getAttribute() * improved a deprecation message * 1.28.1 (2016-11-18) * fixed block() function when used with a template argument * 1.28.0 (2016-11-17) * added support for the PHP 7 null coalescing operator for the ?? Twig implementation * exposed a way to access template data and methods in a portable way * changed context access to use the PHP 7 null coalescing operator when available * added the "with" tag * added support for a custom template on the block() function * added "is defined" support for block() and constant() * optimized the way attributes are fetched * 1.27.0 (2016-10-25) * deprecated Twig_Parser::getEnvironment() * deprecated Twig_Parser::addHandler() and Twig_Parser::addNodeVisitor() * deprecated Twig_Compiler::addIndentation() * fixed regression when registering two extensions having the same class name * deprecated Twig_LoaderInterface::getSource() (implement Twig_SourceContextLoaderInterface instead) * fixed the filesystem loader with relative paths * deprecated Twig_Node::getLine() in favor of Twig_Node::getTemplateLine() * deprecated Twig_Template::getSource() in favor of Twig_Template::getSourceContext() * deprecated Twig_Node::getFilename() in favor of Twig_Node::getTemplateName() * deprecated the "filename" escaping strategy (use "name" instead) * added Twig_Source to hold information about the original template * deprecated Twig_Error::getTemplateFile() and Twig_Error::setTemplateFile() in favor of Twig_Error::getTemplateName() and Twig_Error::setTemplateName() * deprecated Parser::getFilename() * fixed template paths when a template name contains a protocol like vfs:// * improved debugging with Twig_Sandbox_SecurityError exceptions for disallowed methods and properties * 1.26.1 (2016-10-05) * removed template source code from generated template classes when debug is disabled * fixed default implementation of Twig_Template::getDebugInfo() for better BC * fixed regression on static calls for functions/filters/tests * 1.26.0 (2016-10-02) * added template cache invalidation based on more environment options * added a missing deprecation notice * fixed template paths when a template is stored in a PHAR file * allowed filters/functions/tests implementation to use a different class than the extension they belong to * deprecated Twig_ExtensionInterface::getName() * 1.25.0 (2016-09-21) * changed the way we store template source in template classes * removed usage of realpath in cache keys * fixed Twig cache sharing when used with different versions of PHP * removed embed parent workaround for simple use cases * deprecated the ability to store non Node instances in Node::$nodes * deprecated Twig_Environment::getLexer(), Twig_Environment::getParser(), Twig_Environment::getCompiler() * deprecated Twig_Compiler::getFilename() * 1.24.2 (2016-09-01) * fixed static callables * fixed a potential PHP warning when loading the cache * fixed a case where the autoescaping does not work as expected * 1.24.1 (2016-05-30) * fixed reserved keywords (forbids true, false, null and none keywords for variables names) * fixed support for PHP7 (Throwable support) * marked the following methods as being internals on Twig_Environment: getFunctions(), getFilters(), getTests(), getFunction(), getFilter(), getTest(), getTokenParsers(), getTags(), getNodeVisitors(), getUnaryOperators(), getBinaryOperators(), getFunctions(), getFilters(), getGlobals(), initGlobals(), initExtensions(), and initExtension() * 1.24.0 (2016-01-25) * adding support for the ?? operator * fixed the defined test when used on a constant, a map, or a sequence * undeprecated _self (should only be used to get the template name, not the template instance) * fixed parsing on PHP7 * 1.23.3 (2016-01-11) * fixed typo * 1.23.2 (2015-01-11) * added versions in deprecated messages * made file cache tolerant for trailing (back)slashes on directory configuration * deprecated unused Twig_Node_Expression_ExtensionReference class * 1.23.1 (2015-11-05) * fixed some exception messages which triggered PHP warnings * fixed BC on Twig_Test_NodeTestCase * 1.23.0 (2015-10-29) * deprecated the possibility to override an extension by registering another one with the same name * deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC) * deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC) * deprecated Twig_Environment::computeAlternatives() * 1.22.3 (2015-10-13) * fixed regression when using null as a cache strategy * improved performance when checking template freshness * fixed warnings when loaded templates do not exist * fixed template class name generation to prevent possible collisions * fixed logic for custom escapers to call them even on integers and null values * changed template cache names to take into account the Twig C extension * 1.22.2 (2015-09-22) * fixed a race condition in template loading * 1.22.1 (2015-09-15) * fixed regression in template_from_string * 1.22.0 (2015-09-13) * made Twig_Test_IntegrationTestCase more flexible * added an option to force PHP bytecode invalidation when writing a compiled template into the cache * fixed the profiler duration for the root node * changed template cache names to take into account enabled extensions * deprecated Twig_Environment::clearCacheFiles(), Twig_Environment::getCacheFilename(), Twig_Environment::writeCacheFile(), and Twig_Environment::getTemplateClassPrefix() * added a way to override the filesystem template cache system * added a way to get the original template source from Twig_Template * 1.21.2 (2015-09-09) * fixed variable names for the deprecation triggering code * fixed escaping strategy detection based on filename * added Traversable support for replace, merge, and sort * deprecated support for character by character replacement for the "replace" filter * 1.21.1 (2015-08-26) * fixed regression when using the deprecated Twig_Test_* classes * 1.21.0 (2015-08-24) * added deprecation notices for deprecated features * added a deprecation "framework" for filters/functions/tests and test fixtures * 1.20.0 (2015-08-12) * forbid access to the Twig environment from templates and internal parts of Twig_Template * fixed limited RCEs when in sandbox mode * deprecated Twig_Template::getEnvironment() * deprecated the _self variable for usage outside of the from and import tags * added Twig_BaseNodeVisitor to ease the compatibility of node visitors between 1.x and 2.x * 1.19.0 (2015-07-31) * fixed wrong error message when including an undefined template in a child template * added support for variadic filters, functions, and tests * added support for extra positional arguments in macros * added ignore_missing flag to the source function * fixed batch filter with zero items * deprecated Twig_Environment::clearTemplateCache() * fixed sandbox disabling when using the include function * 1.18.2 (2015-06-06) * fixed template/line guessing in exceptions for nested templates * optimized the number of inodes and the size of realpath cache when using the cache * 1.18.1 (2015-04-19) * fixed memory leaks in the C extension * deprecated Twig_Loader_String * fixed the slice filter when used with a SimpleXMLElement object * fixed filesystem loader when trying to load non-files (like directories) * 1.18.0 (2015-01-25) * fixed some error messages where the line was wrong (unknown variables or argument names) * added a new way to customize the main Module node (via empty nodes) * added Twig_Environment::createTemplate() to create a template from a string * added a profiler * fixed filesystem loader cache when different file paths are used for the same template * 1.17.0 (2015-01-14) * added a 'filename' autoescaping strategy, which dynamically chooses the autoescaping strategy for a template based on template file extension. * 1.16.3 (2014-12-25) * fixed regression for dynamic parent templates * fixed cache management with statcache * fixed a regression in the slice filter * 1.16.2 (2014-10-17) * fixed timezone on dates as strings * fixed 2-words test names when a custom node class is not used * fixed macros when using an argument named like a PHP super global (like GET or POST) * fixed date_modify when working with DateTimeImmutable * optimized for loops * fixed multi-byte characters handling in the split filter * fixed a regression in the in operator * fixed a regression in the slice filter * 1.16.1 (2014-10-10) * improved error reporting in a sandboxed template * fixed missing error file/line information under certain circumstances * fixed wrong error line number in some error messages * fixed the in operator to use strict comparisons * sped up the slice filter * fixed for mb function overload mb_substr acting different * fixed the attribute() function when passing a variable for the arguments * 1.16.0 (2014-07-05) * changed url_encode to always encode according to RFC 3986 * fixed inheritance in a 'use'-hierarchy * removed the __toString policy check when the sandbox is disabled * fixed recursively calling blocks in templates with inheritance * 1.15.1 (2014-02-13) * fixed the conversion of the special '0000-00-00 00:00' date * added an error message when trying to import an undefined block from a trait * fixed a C extension crash when accessing defined but uninitialized property. * 1.15.0 (2013-12-06) * made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException * added min and max functions * added the round filter * fixed a bug that prevented the optimizers to be enabled/disabled selectively * fixed first and last filters for UTF-8 strings * added a source function to include the content of a template without rendering it * fixed the C extension sandbox behavior when get or set is prepend to method name * 1.14.2 (2013-10-30) * fixed error filename/line when an error occurs in an included file * allowed operators that contain whitespaces to have more than one whitespace * allowed tests to be made of 1 or 2 words (like "same as" or "divisible by") * 1.14.1 (2013-10-15) * made it possible to use named operators as variables * fixed the possibility to have a variable named 'matches' * added support for PHP 5.5 DateTimeInterface * 1.14.0 (2013-10-03) * fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy * added new operators: ends with, starts with, and matches * fixed some compatibility issues with HHVM * added a way to add custom escaping strategies * fixed the C extension compilation on Windows * fixed the batch filter when using a fill argument with an exact match of elements to batch * fixed the filesystem loader cache when a template name exists in several namespaces * fixed template_from_string when the template includes or extends other ones * fixed a crash of the C extension on an edge case * 1.13.2 (2013-08-03) * fixed the error line number for an error occurs in and embedded template * fixed crashes of the C extension on some edge cases * 1.13.1 (2013-06-06) * added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem * fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface * adjusted backtrace call to reduce memory usage when an error occurs * added support for object instances as the second argument of the constant test * fixed the include function when used in an assignment * 1.13.0 (2013-05-10) * fixed getting a numeric-like item on a variable ('09' for instance) * fixed getting a boolean or float key on an array, so it is consistent with PHP's array access: `{{ array[false] }}` behaves the same as `echo $array[false];` (equals `$array[0]`) * made the escape filter 20% faster for happy path (escaping string for html with UTF-8) * changed ☃ to § in tests * enforced usage of named arguments after positional ones * 1.12.3 (2013-04-08) * fixed a security issue in the filesystem loader where it was possible to include a template one level above the configured path * fixed fatal error that should be an exception when adding a filter/function/test too late * added a batch filter * added support for encoding an array as query string in the url_encode filter * 1.12.2 (2013-02-09) * fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00) * fixed globals when getGlobals is called early on * added the first and last filter * 1.12.1 (2013-01-15) * added support for object instances as the second argument of the constant function * relaxed globals management to avoid a BC break * added support for {{ some_string[:2] }} * 1.12.0 (2013-01-08) * added verbatim as an alias for the raw tag to avoid confusion with the raw filter * fixed registration of tests and functions as anonymous functions * fixed globals management * 1.12.0-RC1 (2012-12-29) * added an include function (does the same as the include tag but in a more flexible way) * added the ability to use any PHP callable to define filters, functions, and tests * added a syntax error when using a loop variable that is not defined * added the ability to set default values for macro arguments * added support for named arguments for filters, tests, and functions * moved filters/functions/tests syntax errors to the parser * added support for extended ternary operator syntaxes * 1.11.1 (2012-11-11) * fixed debug info line numbering (was off by 2) * fixed escaping when calling a macro inside another one (regression introduced in 1.9.1) * optimized variable access on PHP 5.4 * fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX) * 1.11.0 (2012-11-07) * fixed macro compilation when a variable name is a PHP reserved keyword * changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone * fixed bitwise operator precedences * added the template_from_string function * fixed default timezone usage for the date function * optimized the way Twig exceptions are managed (to make them faster) * added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster) * 1.10.3 (2012-10-19) * fixed wrong template location in some error messages * reverted a BC break introduced in 1.10.2 * added a split filter * 1.10.2 (2012-10-15) * fixed macro calls on PHP 5.4 * 1.10.1 (2012-10-15) * made a speed optimization to macro calls when imported via the "import" tag * fixed C extension compilation on Windows * fixed a segfault in the C extension when using DateTime objects * 1.10.0 (2012-09-28) * extracted functional tests framework to make it reusable for third-party extensions * added namespaced templates support in Twig_Loader_Filesystem * added Twig_Loader_Filesystem::prependPath() * fixed an error when a token parser pass a closure as a test to the subparse() method * 1.9.2 (2012-08-25) * fixed the in operator for objects that contain circular references * fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface * 1.9.1 (2012-07-22) * optimized macro calls when auto-escaping is on * fixed wrong parent class for Twig_Function_Node * made Twig_Loader_Chain more explicit about problems * 1.9.0 (2012-07-13) * made the parsing independent of the template loaders * fixed exception trace when an error occurs when rendering a child template * added escaping strategies for CSS, URL, and HTML attributes * fixed nested embed tag calls * added the date_modify filter * 1.8.3 (2012-06-17) * fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash * fixed escaping when a project defines a function named html or js * fixed chmod mode to apply the umask correctly * 1.8.2 (2012-05-30) * added the abs filter * fixed a regression when using a number in template attributes * fixed compiler when mbstring.func_overload is set to 2 * fixed DateTimeZone support in date filter * 1.8.1 (2012-05-17) * fixed a regression when dealing with SimpleXMLElement instances in templates * fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini * switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ) * 1.8.0 (2012-05-08) * enforced interface when adding tests, filters, functions, and node visitors from extensions * fixed a side-effect of the date filter where the timezone might be changed * simplified usage of the autoescape tag; the only (optional) argument is now the escaping strategy or false (with a BC layer) * added a way to dynamically change the auto-escaping strategy according to the template "filename" * changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html) * added an embed tag * 1.7.0 (2012-04-24) * fixed a PHP warning when using CIFS * fixed template line number in some exceptions * added an iterable test * added an error when defining two blocks with the same name in a template * added the preserves_safety option for filters * fixed a PHP notice when trying to access a key on a non-object/array variable * enhanced error reporting when the template file is an instance of SplFileInfo * added Twig_Environment::mergeGlobals() * added compilation checks to avoid misuses of the sandbox tag * fixed filesystem loader freshness logic for high traffic websites * fixed random function when charset is null * 1.6.5 (2012-04-11) * fixed a regression when a template only extends another one without defining any blocks * 1.6.4 (2012-04-02) * fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3 * fixed performance when compiling large files * optimized parent template creation when the template does not use dynamic inheritance * 1.6.3 (2012-03-22) * fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension * fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot * made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate * 1.6.2 (2012-03-18) * fixed sandbox mode when used with inheritance * added preserveKeys support for the slice filter * fixed the date filter when a DateTime instance is passed with a specific timezone * added a trim filter * 1.6.1 (2012-02-29) * fixed Twig C extension * removed the creation of Twig_Markup instances when not needed * added a way to set the default global timezone for dates * fixed the slice filter on strings when the length is not specified * fixed the creation of the cache directory in case of a race condition * 1.6.0 (2012-02-04) * fixed raw blocks when used with the whitespace trim option * made a speed optimization to macro calls when imported via the "from" tag * fixed globals, parsers, visitors, filters, tests, and functions management in Twig_Environment when a new one or new extension is added * fixed the attribute function when passing arguments * added slice notation support for the [] operator (syntactic sugar for the slice operator) * added a slice filter * added string support for the reverse filter * fixed the empty test and the length filter for Twig_Markup instances * added a date function to ease date comparison * fixed unary operators precedence * added recursive parsing support in the parser * added string and integer handling for the random function * 1.5.1 (2012-01-05) * fixed a regression when parsing strings * 1.5.0 (2012-01-04) * added Traversable objects support for the join filter * 1.5.0-RC2 (2011-12-30) * added a way to set the default global date interval format * fixed the date filter for DateInterval instances (setTimezone() does not exist for them) * refactored Twig_Template::display() to ease its extension * added a number_format filter * 1.5.0-RC1 (2011-12-26) * removed the need to quote hash keys * allowed hash keys to be any expression * added a do tag * added a flush tag * added support for dynamically named filters and functions * added a dump function to help debugging templates * added a nl2br filter * added a random function * added a way to change the default format for the date filter * fixed the lexer when an operator ending with a letter ends a line * added string interpolation support * enhanced exceptions for unknown filters, functions, tests, and tags * 1.4.0 (2011-12-07) * fixed lexer when using big numbers (> PHP_INT_MAX) * added missing preserveKeys argument to the reverse filter * fixed macros containing filter tag calls * 1.4.0-RC2 (2011-11-27) * removed usage of Reflection in Twig_Template::getAttribute() * added a C extension that can optionally replace Twig_Template::getAttribute() * added negative timestamp support to the date filter * 1.4.0-RC1 (2011-11-20) * optimized variable access when using PHP 5.4 * changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby * added an Exception to Twig_Loader_Array::isFresh() method when the template does not exist to be consistent with other loaders * added Twig_Function_Node to allow more complex functions to have their own Node class * added Twig_Filter_Node to allow more complex filters to have their own Node class * added Twig_Test_Node to allow more complex tests to have their own Node class * added a better error message when a template is empty but contain a BOM * fixed "in" operator for empty strings * fixed the "defined" test and the "default" filter (now works with more than one call (foo.bar.foo) and for both values of the strict_variables option) * changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order) * added Twig_Environment::display() * made the escape filter smarter when the encoding is not supported by PHP * added a convert_encoding filter * moved all node manipulations outside the compile() Node method * made several speed optimizations * 1.3.0 (2011-10-08) no changes * 1.3.0-RC1 (2011-10-04) * added an optimization for the parent() function * added cache reloading when auto_reload is true and an extension has been modified * added the possibility to force the escaping of a string already marked as safe (instance of Twig_Markup) * allowed empty templates to be used as traits * added traits support for the "parent" function * 1.2.0 (2011-09-13) no changes * 1.2.0-RC1 (2011-09-10) * enhanced the exception when a tag remains unclosed * added support for empty Countable objects for the "empty" test * fixed algorithm that determines if a template using inheritance is valid (no output between block definitions) * added better support for encoding problems when escaping a string (available as of PHP 5.4) * added a way to ignore a missing template when using the "include" tag ({% include "foo" ignore missing %}) * added support for an array of templates to the "include" and "extends" tags ({% include ['foo', 'bar'] %}) * added support for bitwise operators in expressions * added the "attribute" function to allow getting dynamic attributes on variables * added Twig_Loader_Chain * added Twig_Loader_Array::setTemplate() * added an optimization for the set tag when used to capture a large chunk of static text * changed name regex to match PHP one "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" (works for blocks, tags, functions, filters, and macros) * removed the possibility to use the "extends" tag from a block * added "if" modifier support to "for" loops * 1.1.2 (2011-07-30) * fixed json_encode filter on PHP 5.2 * fixed regression introduced in 1.1.1 ({{ block(foo|lower) }}) * fixed inheritance when using conditional parents * fixed compilation of templates when the body of a child template is not empty * fixed output when a macro throws an exception * fixed a parsing problem when a large chunk of text is enclosed in a comment tag * added PHPDoc for all Token parsers and Core extension functions * 1.1.1 (2011-07-17) * added a performance optimization in the Optimizer (also helps to lower the number of nested level calls) * made some performance improvement for some edge cases * 1.1.0 (2011-06-28) * fixed json_encode filter * 1.1.0-RC3 (2011-06-24) * fixed method case-sensitivity when using the sandbox mode * added timezone support for the date filter * fixed possible security problems with NUL bytes * 1.1.0-RC2 (2011-06-16) * added an exception when the template passed to "use" is not a string * made 'a.b is defined' not throw an exception if a is not defined (in strict mode) * added {% line \d+ %} directive * 1.1.0-RC1 (2011-05-28) Flush your cache after upgrading. * fixed date filter when using a timestamp * fixed the defined test for some cases * fixed a parsing problem when a large chunk of text is enclosed in a raw tag * added support for horizontal reuse of template blocks (see docs for more information) * added whitespace control modifier to all tags (see docs for more information) * added null as an alias for none (the null test is also an alias for the none test now) * made TRUE, FALSE, NONE equivalent to their lowercase counterparts * wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line * moved display() method to Twig_Template (generated templates should now use doDisplay() instead) * 1.0.0 (2011-03-27) * fixed output when using mbstring * fixed duplicate call of methods when using the sandbox * made the charset configurable for the escape filter * 1.0.0-RC2 (2011-02-21) * changed the way {% set %} works when capturing (the content is now marked as safe) * added support for macro name in the endmacro tag * make Twig_Error compatible with PHP 5.3.0 > * fixed an infinite loop on some Windows configurations * fixed the "length" filter for numbers * fixed Template::getAttribute() as properties in PHP are case sensitive * removed coupling between Twig_Node and Twig_Template * fixed the ternary operator precedence rule * 1.0.0-RC1 (2011-01-09) Backward incompatibilities: * the "items" filter, which has been deprecated for quite a long time now, has been removed * the "range" filter has been converted to a function: 0|range(10) -> range(0, 10) * the "constant" filter has been converted to a function: {{ some_date|date('DATE_W3C'|constant) }} -> {{ some_date|date(constant('DATE_W3C')) }} * the "cycle" filter has been converted to a function: {{ ['odd', 'even']|cycle(i) }} -> {{ cycle(['odd', 'even'], i) }} * the "for" tag does not support "joined by" anymore * the "autoescape" first argument is now "true"/"false" (instead of "on"/"off") * the "parent" tag has been replaced by a "parent" function ({{ parent() }} instead of {% parent %}) * the "display" tag has been replaced by a "block" function ({{ block('title') }} instead of {% display title %}) * removed the grammar and simple token parser (moved to the Twig Extensions repository) Changes: * added "needs_context" option for filters and functions (the context is then passed as a first argument) * added global variables support * made macros return their value instead of echoing directly (fixes calling a macro in sandbox mode) * added the "from" tag to import macros as functions * added support for functions (a function is just syntactic sugar for a getAttribute() call) * made macros callable when sandbox mode is enabled * added an exception when a macro uses a reserved name * the "default" filter now uses the "empty" test instead of just checking for null * added the "empty" test * 0.9.10 (2010-12-16) Backward incompatibilities: * The Escaper extension is enabled by default, which means that all displayed variables are now automatically escaped. You can revert to the previous behavior by removing the extension via $env->removeExtension('escaper') or just set the 'autoescape' option to 'false'. * removed the "without loop" attribute for the "for" tag (not needed anymore as the Optimizer take care of that for most cases) * arrays and hashes have now a different syntax * arrays keep the same syntax with square brackets: [1, 2] * hashes now use curly braces (["a": "b"] should now be written as {"a": "b"}) * support for "arrays with keys" and "hashes without keys" is not supported anymore ([1, "foo": "bar"] or {"foo": "bar", 1}) * the i18n extension is now part of the Twig Extensions repository Changes: * added the merge filter * removed 'is_escaper' option for filters (a left over from the previous version) -- you must use 'is_safe' now instead * fixed usage of operators as method names (like is, in, and not) * changed the order of execution for node visitors * fixed default() filter behavior when used with strict_variables set to on * fixed filesystem loader compatibility with PHAR files * enhanced error messages when an unexpected token is parsed in an expression * fixed filename not being added to syntax error messages * added the autoescape option to enable/disable autoescaping * removed the newline after a comment (mimics PHP behavior) * added a syntax error exception when parent block is used on a template that does not extend another one * made the Escaper extension enabled by default * fixed sandbox extension when used with auto output escaping * fixed escaper when wrapping a Twig_Node_Print (the original class must be preserved) * added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters) * added priority to node visitors * 0.9.9 (2010-11-28) Backward incompatibilities: * the self special variable has been renamed to _self * the odd and even filters are now tests: {{ foo|odd }} must now be written {{ foo is odd }} * the "safe" filter has been renamed to "raw" * in Node classes, sub-nodes are now accessed via getNode() (instead of property access) attributes via getAttribute() (instead of array access) * the urlencode filter had been renamed to url_encode * the include tag now merges the passed variables with the current context by default (the old behavior is still possible by adding the "only" keyword) * moved Exceptions to Twig_Error_* (Twig_SyntaxError/Twig_RuntimeError are now Twig_Error_Syntax/Twig_Error_Runtime) * removed support for {{ 1 < i < 3 }} (use {{ i > 1 and i < 3 }} instead) * the "in" filter has been removed ({{ a|in(b) }} should now be written {{ a in b }}) Changes: * added file and line to Twig_Error_Runtime exceptions thrown from Twig_Template * changed trans tag to accept any variable for the plural count * fixed sandbox mode (__toString() method check was not enforced if called implicitly from complex statements) * added the ** (power) operator * changed the algorithm used for parsing expressions * added the spaceless tag * removed trim_blocks option * added support for is*() methods for attributes (foo.bar now looks for foo->getBar() or foo->isBar()) * changed all exceptions to extend Twig_Error * fixed unary expressions ({{ not(1 or 0) }}) * fixed child templates (with an extend tag) that uses one or more imports * added support for {{ 1 not in [2, 3] }} (more readable than the current {{ not (1 in [2, 3]) }}) * escaping has been rewritten * the implementation of template inheritance has been rewritten (blocks can now be called individually and still work with inheritance) * fixed error handling for if tag when a syntax error occurs within a subparse process * added a way to implement custom logic for resolving token parsers given a tag name * fixed js escaper to be stricter (now uses a whilelist-based js escaper) * added the following filers: "constant", "trans", "replace", "json_encode" * added a "constant" test * fixed objects with __toString() not being autoescaped * fixed subscript expressions when calling __call() (methods now keep the case) * added "test" feature (accessible via the "is" operator) * removed the debug tag (should be done in an extension) * fixed trans tag when no vars are used in plural form * fixed race condition when writing template cache * added the special _charset variable to reference the current charset * added the special _context variable to reference the current context * renamed self to _self (to avoid conflict) * fixed Twig_Template::getAttribute() for protected properties * 0.9.8 (2010-06-28) Backward incompatibilities: * the trans tag plural count is now attached to the plural tag: old: `{% trans count %}...{% plural %}...{% endtrans %}` new: `{% trans %}...{% plural count %}...{% endtrans %}` * added a way to translate strings coming from a variable ({% trans var %}) * fixed trans tag when used with the Escaper extension * fixed default cache umask * removed Twig_Template instances from the debug tag output * fixed objects with __isset() defined * fixed set tag when used with a capture * fixed type hinting for Twig_Environment::addFilter() method * 0.9.7 (2010-06-12) Backward incompatibilities: * changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %}) * removed the sandboxed attribute of the include tag (use the new sandbox tag instead) * refactored the Node system (if you have custom nodes, you will have to update them to use the new API) * added self as a special variable that refers to the current template (useful for importing macros from the current template) * added Twig_Template instance support to the include tag * added support for dynamic and conditional inheritance ({% extends some_var %} and {% extends standalone ? "minimum" : "base" %}) * added a grammar sub-framework to ease the creation of custom tags * fixed the for tag for large arrays (some loop variables are now only available for arrays and objects that implement the Countable interface) * removed the Twig_Resource::resolveMissingFilter() method * fixed the filter tag which did not apply filtering to included files * added a bunch of unit tests * added a bunch of phpdoc * added a sandbox tag in the sandbox extension * changed the date filter to support any date format supported by DateTime * added strict_variable setting to throw an exception when an invalid variable is used in a template (disabled by default) * added the lexer, parser, and compiler as arguments to the Twig_Environment constructor * changed the cache option to only accepts an explicit path to a cache directory or false * added a way to add token parsers, filters, and visitors without creating an extension * added three interfaces: Twig_NodeInterface, Twig_TokenParserInterface, and Twig_FilterInterface * changed the generated code to match the new coding standards * fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }}) * added an exception when a child template has a non-empty body (as it is always ignored when rendering) * 0.9.6 (2010-05-12) * fixed variables defined outside a loop and for which the value changes in a for loop * fixed the test suite for PHP 5.2 and older versions of PHPUnit * added support for __call() in expression resolution * fixed node visiting for macros (macros are now visited by visitors as any other node) * fixed nested block definitions with a parent call (rarely useful but nonetheless supported now) * added the cycle filter * fixed the Lexer when mbstring.func_overload is used with an mbstring.internal_encoding different from ASCII * added a long-syntax for the set tag ({% set foo %}...{% endset %}) * unit tests are now powered by PHPUnit * added support for gettext via the `i18n` extension * fixed twig_capitalize_string_filter() and fixed twig_length_filter() when used with UTF-8 values * added a more useful exception if an if tag is not closed properly * added support for escaping strategy in the autoescape tag * fixed lexer when a template has a big chunk of text between/in a block * 0.9.5 (2010-01-20) As for any new release, don't forget to remove all cached templates after upgrading. If you have defined custom filters, you MUST upgrade them for this release. To upgrade, replace "array" with "new Twig_Filter_Function", and replace the environment constant by the "needs_environment" option: // before 'even' => array('twig_is_even_filter', false), 'escape' => array('twig_escape_filter', true), // after 'even' => new Twig_Filter_Function('twig_is_even_filter'), 'escape' => new Twig_Filter_Function('twig_escape_filter', array('needs_environment' => true)), If you have created NodeTransformer classes, you will need to upgrade them to the new interface (please note that the interface is not yet considered stable). * fixed list nodes that did not extend the Twig_NodeListInterface * added the "without loop" option to the for tag (it disables the generation of the loop variable) * refactored node transformers to node visitors * fixed automatic-escaping for blocks * added a way to specify variables to pass to an included template * changed the automatic-escaping rules to be more sensible and more configurable in custom filters (the documentation lists all the rules) * improved the filter system to allow object methods to be used as filters * changed the Array and String loaders to actually make use of the cache mechanism * included the default filter function definitions in the extension class files directly (Core, Escaper) * added the // operator (like the floor() PHP function) * added the .. operator (as a syntactic sugar for the range filter when the step is 1) * added the in operator (as a syntactic sugar for the in filter) * added the following filters in the Core extension: in, range * added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes) * enhanced some error messages to provide better feedback in case of parsing errors * 0.9.4 (2009-12-02) If you have custom loaders, you MUST upgrade them for this release: The Twig_Loader base class has been removed, and the Twig_LoaderInterface has also been changed (see the source code for more information or the documentation). * added support for DateTime instances for the date filter * fixed loop.last when the array only has one item * made it possible to insert newlines in tag and variable blocks * fixed a bug when a literal '\n' were present in a template text * fixed bug when the filename of a template contains */ * refactored loaders * 0.9.3 (2009-11-11) This release is NOT backward compatible with the previous releases. The loaders do not take the cache and autoReload arguments anymore. Instead, the Twig_Environment class has two new options: cache and auto_reload. Upgrading your code means changing this kind of code: $loader = new Twig_Loader_Filesystem('/path/to/templates', '/path/to/compilation_cache', true); $twig = new Twig_Environment($loader); to something like this: $loader = new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader, array( 'cache' => '/path/to/compilation_cache', 'auto_reload' => true, )); * deprecated the "items" filter as it is not needed anymore * made cache and auto_reload options of Twig_Environment instead of arguments of Twig_Loader * optimized template loading speed * removed output when an error occurs in a template and render() is used * made major speed improvements for loops (up to 300% on even the smallest loops) * added properties as part of the sandbox mode * added public properties support (obj.item can now be the item property on the obj object) * extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} ) * fixed bug when \ was used in HTML * 0.9.2 (2009-10-29) * made some speed optimizations * changed the cache extension to .php * added a js escaping strategy * added support for short block tag * changed the filter tag to allow chained filters * made lexer more flexible as you can now change the default delimiters * added set tag * changed default directory permission when cache dir does not exist (more secure) * added macro support * changed filters first optional argument to be a Twig_Environment instance instead of a Twig_Template instance * made Twig_Autoloader::autoload() a static method * avoid writing template file if an error occurs * added $ escaping when outputting raw strings * enhanced some error messages to ease debugging * fixed empty cache files when the template contains an error * 0.9.1 (2009-10-14) * fixed a bug in PHP 5.2.6 * fixed numbers with one than one decimal * added support for method calls with arguments ({{ foo.bar('a', 43) }}) * made small speed optimizations * made minor tweaks to allow better extensibility and flexibility * 0.9.0 (2009-10-12) * Initial release db/login/vendor/twig/twig/src/Util/DeprecationCollector.php000064400000004352151502156020020004 0ustar00 * * @final */ class DeprecationCollector { private $twig; private $deprecations; public function __construct(Environment $twig) { $this->twig = $twig; } /** * Returns deprecations for templates contained in a directory. * * @param string $dir A directory where templates are stored * @param string $ext Limit the loaded templates by extension * * @return array An array of deprecations */ public function collectDir($dir, $ext = '.twig') { $iterator = new \RegexIterator( new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY ), '{'.preg_quote($ext).'$}' ); return $this->collect(new TemplateDirIterator($iterator)); } /** * Returns deprecations for passed templates. * * @param \Traversable $iterator An iterator of templates (where keys are template names and values the contents of the template) * * @return array An array of deprecations */ public function collect(\Traversable $iterator) { $this->deprecations = []; set_error_handler([$this, 'errorHandler']); foreach ($iterator as $name => $contents) { try { $this->twig->parse($this->twig->tokenize(new Source($contents, $name))); } catch (SyntaxError $e) { // ignore templates containing syntax errors } } restore_error_handler(); $deprecations = $this->deprecations; $this->deprecations = []; return $deprecations; } /** * @internal */ public function errorHandler($type, $msg) { if (E_USER_DEPRECATED === $type) { $this->deprecations[] = $msg; } } } class_alias('Twig\Util\DeprecationCollector', 'Twig_Util_DeprecationCollector'); db/login/vendor/twig/twig/src/Util/TemplateDirIterator.php000064400000001116151502156020017617 0ustar00 */ class TemplateDirIterator extends \IteratorIterator { public function current() { return file_get_contents(parent::current()); } public function key() { return (string) parent::key(); } } class_alias('Twig\Util\TemplateDirIterator', 'Twig_Util_TemplateDirIterator'); db/login/vendor/twig/twig/src/Markup.php000064400000001462151502156020014221 0ustar00 */ class Markup implements \Countable { protected $content; protected $charset; public function __construct($content, $charset) { $this->content = (string) $content; $this->charset = $charset; } public function __toString() { return $this->content; } public function count() { return \function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : \strlen($this->content); } } class_alias('Twig\Markup', 'Twig_Markup'); db/login/vendor/twig/twig/src/Extension/SandboxExtension.php000064400000004524151502156020020233 0ustar00policy = $policy; $this->sandboxedGlobally = $sandboxed; } public function getTokenParsers() { return [new SandboxTokenParser()]; } public function getNodeVisitors() { return [new SandboxNodeVisitor()]; } public function enableSandbox() { $this->sandboxed = true; } public function disableSandbox() { $this->sandboxed = false; } public function isSandboxed() { return $this->sandboxedGlobally || $this->sandboxed; } public function isSandboxedGlobally() { return $this->sandboxedGlobally; } public function setSecurityPolicy(SecurityPolicyInterface $policy) { $this->policy = $policy; } public function getSecurityPolicy() { return $this->policy; } public function checkSecurity($tags, $filters, $functions) { if ($this->isSandboxed()) { $this->policy->checkSecurity($tags, $filters, $functions); } } public function checkMethodAllowed($obj, $method) { if ($this->isSandboxed()) { $this->policy->checkMethodAllowed($obj, $method); } } public function checkPropertyAllowed($obj, $method) { if ($this->isSandboxed()) { $this->policy->checkPropertyAllowed($obj, $method); } } public function ensureToStringAllowed($obj) { if ($this->isSandboxed() && \is_object($obj) && method_exists($obj, '__toString')) { $this->policy->checkMethodAllowed($obj, '__toString'); } return $obj; } public function getName() { return 'sandbox'; } } class_alias('Twig\Extension\SandboxExtension', 'Twig_Extension_Sandbox'); db/login/vendor/twig/twig/src/Extension/OptimizerExtension.php000064400000001344151502156020020614 0ustar00optimizers = $optimizers; } public function getNodeVisitors() { return [new OptimizerNodeVisitor($this->optimizers)]; } public function getName() { return 'optimizer'; } } class_alias('Twig\Extension\OptimizerExtension', 'Twig_Extension_Optimizer'); db/login/vendor/twig/twig/src/Extension/CoreExtension.php000064400000153077151502156020017535 0ustar00escapers[$strategy] = $callable; } /** * Gets all defined escapers. * * @return array An array of escapers */ public function getEscapers() { return $this->escapers; } /** * Sets the default format to be used by the date filter. * * @param string $format The default date format string * @param string $dateIntervalFormat The default date interval format string */ public function setDateFormat($format = null, $dateIntervalFormat = null) { if (null !== $format) { $this->dateFormats[0] = $format; } if (null !== $dateIntervalFormat) { $this->dateFormats[1] = $dateIntervalFormat; } } /** * Gets the default format to be used by the date filter. * * @return array The default date format string and the default date interval format string */ public function getDateFormat() { return $this->dateFormats; } /** * Sets the default timezone to be used by the date filter. * * @param \DateTimeZone|string $timezone The default timezone string or a \DateTimeZone object */ public function setTimezone($timezone) { $this->timezone = $timezone instanceof \DateTimeZone ? $timezone : new \DateTimeZone($timezone); } /** * Gets the default timezone to be used by the date filter. * * @return \DateTimeZone The default timezone currently in use */ public function getTimezone() { if (null === $this->timezone) { $this->timezone = new \DateTimeZone(date_default_timezone_get()); } return $this->timezone; } /** * Sets the default format to be used by the number_format filter. * * @param int $decimal the number of decimal places to use * @param string $decimalPoint the character(s) to use for the decimal point * @param string $thousandSep the character(s) to use for the thousands separator */ public function setNumberFormat($decimal, $decimalPoint, $thousandSep) { $this->numberFormat = [$decimal, $decimalPoint, $thousandSep]; } /** * Get the default format used by the number_format filter. * * @return array The arguments for number_format() */ public function getNumberFormat() { return $this->numberFormat; } public function getTokenParsers() { return [ new ApplyTokenParser(), new ForTokenParser(), new IfTokenParser(), new ExtendsTokenParser(), new IncludeTokenParser(), new BlockTokenParser(), new UseTokenParser(), new FilterTokenParser(), new MacroTokenParser(), new ImportTokenParser(), new FromTokenParser(), new SetTokenParser(), new SpacelessTokenParser(), new FlushTokenParser(), new DoTokenParser(), new EmbedTokenParser(), new WithTokenParser(), new DeprecatedTokenParser(), ]; } public function getFilters() { $filters = [ // formatting filters new TwigFilter('date', 'twig_date_format_filter', ['needs_environment' => true]), new TwigFilter('date_modify', 'twig_date_modify_filter', ['needs_environment' => true]), new TwigFilter('format', 'sprintf'), new TwigFilter('replace', 'twig_replace_filter'), new TwigFilter('number_format', 'twig_number_format_filter', ['needs_environment' => true]), new TwigFilter('abs', 'abs'), new TwigFilter('round', 'twig_round'), // encoding new TwigFilter('url_encode', 'twig_urlencode_filter'), new TwigFilter('json_encode', 'twig_jsonencode_filter'), new TwigFilter('convert_encoding', 'twig_convert_encoding'), // string filters new TwigFilter('title', 'twig_title_string_filter', ['needs_environment' => true]), new TwigFilter('capitalize', 'twig_capitalize_string_filter', ['needs_environment' => true]), new TwigFilter('upper', 'strtoupper'), new TwigFilter('lower', 'strtolower'), new TwigFilter('striptags', 'strip_tags'), new TwigFilter('trim', 'twig_trim_filter'), new TwigFilter('nl2br', 'nl2br', ['pre_escape' => 'html', 'is_safe' => ['html']]), new TwigFilter('spaceless', 'twig_spaceless', ['is_safe' => ['html']]), // array helpers new TwigFilter('join', 'twig_join_filter'), new TwigFilter('split', 'twig_split_filter', ['needs_environment' => true]), new TwigFilter('sort', 'twig_sort_filter'), new TwigFilter('merge', 'twig_array_merge'), new TwigFilter('batch', 'twig_array_batch'), new TwigFilter('filter', 'twig_array_filter'), new TwigFilter('map', 'twig_array_map'), new TwigFilter('reduce', 'twig_array_reduce'), // string/array filters new TwigFilter('reverse', 'twig_reverse_filter', ['needs_environment' => true]), new TwigFilter('length', 'twig_length_filter', ['needs_environment' => true]), new TwigFilter('slice', 'twig_slice', ['needs_environment' => true]), new TwigFilter('first', 'twig_first', ['needs_environment' => true]), new TwigFilter('last', 'twig_last', ['needs_environment' => true]), // iteration and runtime new TwigFilter('default', '_twig_default_filter', ['node_class' => '\Twig\Node\Expression\Filter\DefaultFilter']), new TwigFilter('keys', 'twig_get_array_keys_filter'), // escaping new TwigFilter('escape', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']), new TwigFilter('e', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']), ]; if (\function_exists('mb_get_info')) { $filters[] = new TwigFilter('upper', 'twig_upper_filter', ['needs_environment' => true]); $filters[] = new TwigFilter('lower', 'twig_lower_filter', ['needs_environment' => true]); } return $filters; } public function getFunctions() { return [ new TwigFunction('max', 'max'), new TwigFunction('min', 'min'), new TwigFunction('range', 'range'), new TwigFunction('constant', 'twig_constant'), new TwigFunction('cycle', 'twig_cycle'), new TwigFunction('random', 'twig_random', ['needs_environment' => true]), new TwigFunction('date', 'twig_date_converter', ['needs_environment' => true]), new TwigFunction('include', 'twig_include', ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]), new TwigFunction('source', 'twig_source', ['needs_environment' => true, 'is_safe' => ['all']]), ]; } public function getTests() { return [ new TwigTest('even', null, ['node_class' => '\Twig\Node\Expression\Test\EvenTest']), new TwigTest('odd', null, ['node_class' => '\Twig\Node\Expression\Test\OddTest']), new TwigTest('defined', null, ['node_class' => '\Twig\Node\Expression\Test\DefinedTest']), new TwigTest('sameas', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'deprecated' => '1.21', 'alternative' => 'same as']), new TwigTest('same as', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest']), new TwigTest('none', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']), new TwigTest('null', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']), new TwigTest('divisibleby', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'deprecated' => '1.21', 'alternative' => 'divisible by']), new TwigTest('divisible by', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest']), new TwigTest('constant', null, ['node_class' => '\Twig\Node\Expression\Test\ConstantTest']), new TwigTest('empty', 'twig_test_empty'), new TwigTest('iterable', 'twig_test_iterable'), ]; } public function getOperators() { return [ [ 'not' => ['precedence' => 50, 'class' => '\Twig\Node\Expression\Unary\NotUnary'], '-' => ['precedence' => 500, 'class' => '\Twig\Node\Expression\Unary\NegUnary'], '+' => ['precedence' => 500, 'class' => '\Twig\Node\Expression\Unary\PosUnary'], ], [ 'or' => ['precedence' => 10, 'class' => '\Twig\Node\Expression\Binary\OrBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'and' => ['precedence' => 15, 'class' => '\Twig\Node\Expression\Binary\AndBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-or' => ['precedence' => 16, 'class' => '\Twig\Node\Expression\Binary\BitwiseOrBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-xor' => ['precedence' => 17, 'class' => '\Twig\Node\Expression\Binary\BitwiseXorBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-and' => ['precedence' => 18, 'class' => '\Twig\Node\Expression\Binary\BitwiseAndBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '==' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\EqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '!=' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\NotEqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '<' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\LessBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '>' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\GreaterBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '>=' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\GreaterEqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '<=' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\LessEqualBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'not in' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\NotInBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'in' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\InBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'matches' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\MatchesBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'starts with' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\StartsWithBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'ends with' => ['precedence' => 20, 'class' => '\Twig\Node\Expression\Binary\EndsWithBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '..' => ['precedence' => 25, 'class' => '\Twig\Node\Expression\Binary\RangeBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '+' => ['precedence' => 30, 'class' => '\Twig\Node\Expression\Binary\AddBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '-' => ['precedence' => 30, 'class' => '\Twig\Node\Expression\Binary\SubBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '~' => ['precedence' => 40, 'class' => '\Twig\Node\Expression\Binary\ConcatBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '*' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\MulBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '/' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\DivBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '//' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\FloorDivBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], '%' => ['precedence' => 60, 'class' => '\Twig\Node\Expression\Binary\ModBinary', 'associativity' => ExpressionParser::OPERATOR_LEFT], 'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], '**' => ['precedence' => 200, 'class' => '\Twig\Node\Expression\Binary\PowerBinary', 'associativity' => ExpressionParser::OPERATOR_RIGHT], '??' => ['precedence' => 300, 'class' => '\Twig\Node\Expression\NullCoalesceExpression', 'associativity' => ExpressionParser::OPERATOR_RIGHT], ], ]; } public function getName() { return 'core'; } } class_alias('Twig\Extension\CoreExtension', 'Twig_Extension_Core'); } namespace { use Twig\Environment; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; use Twig\Loader\SourceContextLoaderInterface; use Twig\Markup; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Node; /** * Cycles over a value. * * @param \ArrayAccess|array $values * @param int $position The cycle position * * @return string The next value in the cycle */ function twig_cycle($values, $position) { if (!\is_array($values) && !$values instanceof \ArrayAccess) { return $values; } return $values[$position % \count($values)]; } /** * Returns a random value depending on the supplied parameter type: * - a random item from a \Traversable or array * - a random character from a string * - a random integer between 0 and the integer parameter. * * @param \Traversable|array|int|float|string $values The values to pick a random item from * @param int|null $max Maximum value used when $values is an int * * @throws RuntimeError when $values is an empty array (does not apply to an empty string which is returned as is) * * @return mixed A random value from the given sequence */ function twig_random(Environment $env, $values = null, $max = null) { if (null === $values) { return null === $max ? mt_rand() : mt_rand(0, $max); } if (\is_int($values) || \is_float($values)) { if (null === $max) { if ($values < 0) { $max = 0; $min = $values; } else { $max = $values; $min = 0; } } else { $min = $values; $max = $max; } return mt_rand($min, $max); } if (\is_string($values)) { if ('' === $values) { return ''; } if (null !== $charset = $env->getCharset()) { if ('UTF-8' !== $charset) { $values = twig_convert_encoding($values, 'UTF-8', $charset); } // unicode version of str_split() // split at all positions, but not after the start and not before the end $values = preg_split('/(? $value) { $values[$i] = twig_convert_encoding($value, $charset, 'UTF-8'); } } } else { return $values[mt_rand(0, \strlen($values) - 1)]; } } if (!twig_test_iterable($values)) { return $values; } $values = twig_to_array($values); if (0 === \count($values)) { throw new RuntimeError('The random function cannot pick from an empty array.'); } return $values[array_rand($values, 1)]; } /** * Converts a date to the given format. * * {{ post.published_at|date("m/d/Y") }} * * @param \DateTime|\DateTimeInterface|\DateInterval|string $date A date * @param string|null $format The target format, null to use the default * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged * * @return string The formatted date */ function twig_date_format_filter(Environment $env, $date, $format = null, $timezone = null) { if (null === $format) { $formats = $env->getExtension('\Twig\Extension\CoreExtension')->getDateFormat(); $format = $date instanceof \DateInterval ? $formats[1] : $formats[0]; } if ($date instanceof \DateInterval) { return $date->format($format); } return twig_date_converter($env, $date, $timezone)->format($format); } /** * Returns a new date object modified. * * {{ post.published_at|date_modify("-1day")|date("m/d/Y") }} * * @param \DateTime|string $date A date * @param string $modifier A modifier string * * @return \DateTime */ function twig_date_modify_filter(Environment $env, $date, $modifier) { $date = twig_date_converter($env, $date, false); $resultDate = $date->modify($modifier); // This is a hack to ensure PHP 5.2 support and support for \DateTimeImmutable // \DateTime::modify does not return the modified \DateTime object < 5.3.0 // and \DateTimeImmutable does not modify $date. return null === $resultDate ? $date : $resultDate; } /** * Converts an input to a \DateTime instance. * * {% if date(user.created_at) < date('+2days') %} * {# do something #} * {% endif %} * * @param \DateTime|\DateTimeInterface|string|null $date A date * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged * * @return \DateTimeInterface */ function twig_date_converter(Environment $env, $date = null, $timezone = null) { // determine the timezone if (false !== $timezone) { if (null === $timezone) { $timezone = $env->getExtension('\Twig\Extension\CoreExtension')->getTimezone(); } elseif (!$timezone instanceof \DateTimeZone) { $timezone = new \DateTimeZone($timezone); } } // immutable dates if ($date instanceof \DateTimeImmutable) { return false !== $timezone ? $date->setTimezone($timezone) : $date; } if ($date instanceof \DateTime || $date instanceof \DateTimeInterface) { $date = clone $date; if (false !== $timezone) { $date->setTimezone($timezone); } return $date; } if (null === $date || 'now' === $date) { return new \DateTime($date, false !== $timezone ? $timezone : $env->getExtension('\Twig\Extension\CoreExtension')->getTimezone()); } $asString = (string) $date; if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { $date = new \DateTime('@'.$date); } else { $date = new \DateTime($date, $env->getExtension('\Twig\Extension\CoreExtension')->getTimezone()); } if (false !== $timezone) { $date->setTimezone($timezone); } return $date; } /** * Replaces strings within a string. * * @param string $str String to replace in * @param array|\Traversable $from Replace values * @param string|null $to Replace to, deprecated (@see https://secure.php.net/manual/en/function.strtr.php) * * @return string */ function twig_replace_filter($str, $from, $to = null) { if (\is_string($from) && \is_string($to)) { @trigger_error('Using "replace" with character by character replacement is deprecated since version 1.22 and will be removed in Twig 2.0', E_USER_DEPRECATED); return strtr($str, $from, $to); } if (!twig_test_iterable($from)) { throw new RuntimeError(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from))); } return strtr($str, twig_to_array($from)); } /** * Rounds a number. * * @param int|float $value The value to round * @param int|float $precision The rounding precision * @param string $method The method to use for rounding * * @return int|float The rounded number */ function twig_round($value, $precision = 0, $method = 'common') { if ('common' == $method) { return round($value, $precision); } if ('ceil' != $method && 'floor' != $method) { throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); } return $method($value * pow(10, $precision)) / pow(10, $precision); } /** * Number format filter. * * All of the formatting options can be left null, in that case the defaults will * be used. Supplying any of the parameters will override the defaults set in the * environment object. * * @param mixed $number A float/int/string of the number to format * @param int $decimal the number of decimal points to display * @param string $decimalPoint the character(s) to use for the decimal point * @param string $thousandSep the character(s) to use for the thousands separator * * @return string The formatted number */ function twig_number_format_filter(Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) { $defaults = $env->getExtension('\Twig\Extension\CoreExtension')->getNumberFormat(); if (null === $decimal) { $decimal = $defaults[0]; } if (null === $decimalPoint) { $decimalPoint = $defaults[1]; } if (null === $thousandSep) { $thousandSep = $defaults[2]; } return number_format((float) $number, $decimal, $decimalPoint, $thousandSep); } /** * URL encodes (RFC 3986) a string as a path segment or an array as a query string. * * @param string|array $url A URL or an array of query parameters * * @return string The URL encoded value */ function twig_urlencode_filter($url) { if (\is_array($url)) { if (\defined('PHP_QUERY_RFC3986')) { return http_build_query($url, '', '&', PHP_QUERY_RFC3986); } return http_build_query($url, '', '&'); } return rawurlencode($url); } /** * JSON encodes a variable. * * @param mixed $value the value to encode * @param int $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT * * @return mixed The JSON encoded value */ function twig_jsonencode_filter($value, $options = 0) { if ($value instanceof Markup) { $value = (string) $value; } elseif (\is_array($value)) { array_walk_recursive($value, '_twig_markup2string'); } return json_encode($value, $options); } function _twig_markup2string(&$value) { if ($value instanceof Markup) { $value = (string) $value; } } /** * Merges an array with another one. * * {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %} * * {% set items = items|merge({ 'peugeot': 'car' }) %} * * {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #} * * @param array|\Traversable $arr1 An array * @param array|\Traversable $arr2 An array * * @return array The merged array */ function twig_array_merge($arr1, $arr2) { if (!twig_test_iterable($arr1)) { throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($arr1))); } if (!twig_test_iterable($arr2)) { throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', \gettype($arr2))); } return array_merge(twig_to_array($arr1), twig_to_array($arr2)); } /** * Slices a variable. * * @param mixed $item A variable * @param int $start Start of the slice * @param int $length Size of the slice * @param bool $preserveKeys Whether to preserve key or not (when the input is an array) * * @return mixed The sliced variable */ function twig_slice(Environment $env, $item, $start, $length = null, $preserveKeys = false) { if ($item instanceof \Traversable) { while ($item instanceof \IteratorAggregate) { $item = $item->getIterator(); } if ($start >= 0 && $length >= 0 && $item instanceof \Iterator) { try { return iterator_to_array(new \LimitIterator($item, $start, null === $length ? -1 : $length), $preserveKeys); } catch (\OutOfBoundsException $e) { return []; } } $item = iterator_to_array($item, $preserveKeys); } if (\is_array($item)) { return \array_slice($item, $start, $length, $preserveKeys); } $item = (string) $item; if (\function_exists('mb_get_info') && null !== $charset = $env->getCharset()) { return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset); } return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length)); } /** * Returns the first element of the item. * * @param mixed $item A variable * * @return mixed The first element of the item */ function twig_first(Environment $env, $item) { $elements = twig_slice($env, $item, 0, 1, false); return \is_string($elements) ? $elements : current($elements); } /** * Returns the last element of the item. * * @param mixed $item A variable * * @return mixed The last element of the item */ function twig_last(Environment $env, $item) { $elements = twig_slice($env, $item, -1, 1, false); return \is_string($elements) ? $elements : current($elements); } /** * Joins the values to a string. * * The separators between elements are empty strings per default, you can define them with the optional parameters. * * {{ [1, 2, 3]|join(', ', ' and ') }} * {# returns 1, 2 and 3 #} * * {{ [1, 2, 3]|join('|') }} * {# returns 1|2|3 #} * * {{ [1, 2, 3]|join }} * {# returns 123 #} * * @param array $value An array * @param string $glue The separator * @param string|null $and The separator for the last pair * * @return string The concatenated string */ function twig_join_filter($value, $glue = '', $and = null) { if (!twig_test_iterable($value)) { $value = (array) $value; } $value = twig_to_array($value, false); if (0 === \count($value)) { return ''; } if (null === $and || $and === $glue) { return implode($glue, $value); } if (1 === \count($value)) { return $value[0]; } return implode($glue, \array_slice($value, 0, -1)).$and.$value[\count($value) - 1]; } /** * Splits the string into an array. * * {{ "one,two,three"|split(',') }} * {# returns [one, two, three] #} * * {{ "one,two,three,four,five"|split(',', 3) }} * {# returns [one, two, "three,four,five"] #} * * {{ "123"|split('') }} * {# returns [1, 2, 3] #} * * {{ "aabbcc"|split('', 2) }} * {# returns [aa, bb, cc] #} * * @param string $value A string * @param string $delimiter The delimiter * @param int $limit The limit * * @return array The split string as an array */ function twig_split_filter(Environment $env, $value, $delimiter, $limit = null) { if (\strlen($delimiter) > 0) { return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); } if (!\function_exists('mb_get_info') || null === $charset = $env->getCharset()) { return str_split($value, null === $limit ? 1 : $limit); } if ($limit <= 1) { return preg_split('/(?getIterator(); } if ($array instanceof \Iterator) { $keys = []; $array->rewind(); while ($array->valid()) { $keys[] = $array->key(); $array->next(); } return $keys; } $keys = []; foreach ($array as $key => $item) { $keys[] = $key; } return $keys; } if (!\is_array($array)) { return []; } return array_keys($array); } /** * Reverses a variable. * * @param array|\Traversable|string $item An array, a \Traversable instance, or a string * @param bool $preserveKeys Whether to preserve key or not * * @return mixed The reversed input */ function twig_reverse_filter(Environment $env, $item, $preserveKeys = false) { if ($item instanceof \Traversable) { return array_reverse(iterator_to_array($item), $preserveKeys); } if (\is_array($item)) { return array_reverse($item, $preserveKeys); } if (null !== $charset = $env->getCharset()) { $string = (string) $item; if ('UTF-8' !== $charset) { $item = twig_convert_encoding($string, 'UTF-8', $charset); } preg_match_all('/./us', $item, $matches); $string = implode('', array_reverse($matches[0])); if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, $charset, 'UTF-8'); } return $string; } return strrev((string) $item); } /** * Sorts an array. * * @param array|\Traversable $array * * @return array */ function twig_sort_filter($array) { if ($array instanceof \Traversable) { $array = iterator_to_array($array); } elseif (!\is_array($array)) { throw new RuntimeError(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', \gettype($array))); } asort($array); return $array; } /** * @internal */ function twig_in_filter($value, $compare) { if ($value instanceof Markup) { $value = (string) $value; } if ($compare instanceof Markup) { $compare = (string) $compare; } if (\is_array($compare)) { return \in_array($value, $compare, \is_object($value) || \is_resource($value)); } elseif (\is_string($compare) && (\is_string($value) || \is_int($value) || \is_float($value))) { return '' === $value || false !== strpos($compare, (string) $value); } elseif ($compare instanceof \Traversable) { if (\is_object($value) || \is_resource($value)) { foreach ($compare as $item) { if ($item === $value) { return true; } } } else { foreach ($compare as $item) { if ($item == $value) { return true; } } } return false; } return false; } /** * Returns a trimmed string. * * @return string * * @throws RuntimeError When an invalid trimming side is used (not a string or not 'left', 'right', or 'both') */ function twig_trim_filter($string, $characterMask = null, $side = 'both') { if (null === $characterMask) { $characterMask = " \t\n\r\0\x0B"; } switch ($side) { case 'both': return trim($string, $characterMask); case 'left': return ltrim($string, $characterMask); case 'right': return rtrim($string, $characterMask); default: throw new RuntimeError('Trimming side must be "left", "right" or "both".'); } } /** * Removes whitespaces between HTML tags. * * @return string */ function twig_spaceless($content) { return trim(preg_replace('/>\s+<', $content)); } /** * Escapes a string. * * @param mixed $string The value to be escaped * @param string $strategy The escaping strategy * @param string $charset The charset * @param bool $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false) * * @return string */ function twig_escape_filter(Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) { if ($autoescape && $string instanceof Markup) { return $string; } if (!\is_string($string)) { if (\is_object($string) && method_exists($string, '__toString')) { $string = (string) $string; } elseif (\in_array($strategy, ['html', 'js', 'css', 'html_attr', 'url'])) { return $string; } } if ('' === $string) { return ''; } if (null === $charset) { $charset = $env->getCharset(); } switch ($strategy) { case 'html': // see https://secure.php.net/htmlspecialchars // Using a static variable to avoid initializing the array // each time the function is called. Moving the declaration on the // top of the function slow downs other escaping strategies. static $htmlspecialcharsCharsets = [ 'ISO-8859-1' => true, 'ISO8859-1' => true, 'ISO-8859-15' => true, 'ISO8859-15' => true, 'utf-8' => true, 'UTF-8' => true, 'CP866' => true, 'IBM866' => true, '866' => true, 'CP1251' => true, 'WINDOWS-1251' => true, 'WIN-1251' => true, '1251' => true, 'CP1252' => true, 'WINDOWS-1252' => true, '1252' => true, 'KOI8-R' => true, 'KOI8-RU' => true, 'KOI8R' => true, 'BIG5' => true, '950' => true, 'GB2312' => true, '936' => true, 'BIG5-HKSCS' => true, 'SHIFT_JIS' => true, 'SJIS' => true, '932' => true, 'EUC-JP' => true, 'EUCJP' => true, 'ISO8859-5' => true, 'ISO-8859-5' => true, 'MACROMAN' => true, ]; if (isset($htmlspecialcharsCharsets[$charset])) { return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); } if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) { // cache the lowercase variant for future iterations $htmlspecialcharsCharsets[$charset] = true; return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); } $string = twig_convert_encoding($string, 'UTF-8', $charset); $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); return twig_convert_encoding($string, $charset, 'UTF-8'); case 'js': // escape all non-alphanumeric characters // into their \x or \uHHHH representations if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, 'UTF-8', $charset); } if (!preg_match('//u', $string)) { throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); } $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string); if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, $charset, 'UTF-8'); } return $string; case 'css': if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, 'UTF-8', $charset); } if (!preg_match('//u', $string)) { throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); } $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', '_twig_escape_css_callback', $string); if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, $charset, 'UTF-8'); } return $string; case 'html_attr': if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, 'UTF-8', $charset); } if (!preg_match('//u', $string)) { throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); } $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', '_twig_escape_html_attr_callback', $string); if ('UTF-8' !== $charset) { $string = twig_convert_encoding($string, $charset, 'UTF-8'); } return $string; case 'url': return rawurlencode($string); default: static $escapers; if (null === $escapers) { $escapers = $env->getExtension('\Twig\Extension\CoreExtension')->getEscapers(); } if (isset($escapers[$strategy])) { return \call_user_func($escapers[$strategy], $env, $string, $charset); } $validStrategies = implode(', ', array_merge(['html', 'js', 'url', 'css', 'html_attr'], array_keys($escapers))); throw new RuntimeError(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); } } /** * @internal */ function twig_escape_filter_is_safe(Node $filterArgs) { foreach ($filterArgs as $arg) { if ($arg instanceof ConstantExpression) { return [$arg->getAttribute('value')]; } return []; } return ['html']; } if (\function_exists('mb_convert_encoding')) { function twig_convert_encoding($string, $to, $from) { return mb_convert_encoding($string, $to, $from); } } elseif (\function_exists('iconv')) { function twig_convert_encoding($string, $to, $from) { return iconv($from, $to, $string); } } else { function twig_convert_encoding($string, $to, $from) { throw new RuntimeError('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).'); } } if (\function_exists('mb_ord')) { function twig_ord($string) { return mb_ord($string, 'UTF-8'); } } else { function twig_ord($string) { $code = ($string = unpack('C*', substr($string, 0, 4))) ? $string[1] : 0; if (0xF0 <= $code) { return (($code - 0xF0) << 18) + (($string[2] - 0x80) << 12) + (($string[3] - 0x80) << 6) + $string[4] - 0x80; } if (0xE0 <= $code) { return (($code - 0xE0) << 12) + (($string[2] - 0x80) << 6) + $string[3] - 0x80; } if (0xC0 <= $code) { return (($code - 0xC0) << 6) + $string[2] - 0x80; } return $code; } } function _twig_escape_js_callback($matches) { $char = $matches[0]; /* * A few characters have short escape sequences in JSON and JavaScript. * Escape sequences supported only by JavaScript, not JSON, are ommitted. * \" is also supported but omitted, because the resulting string is not HTML safe. */ static $shortMap = [ '\\' => '\\\\', '/' => '\\/', "\x08" => '\b', "\x0C" => '\f', "\x0A" => '\n', "\x0D" => '\r', "\x09" => '\t', ]; if (isset($shortMap[$char])) { return $shortMap[$char]; } // \uHHHH $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8'); $char = strtoupper(bin2hex($char)); if (4 >= \strlen($char)) { return sprintf('\u%04s', $char); } return sprintf('\u%04s\u%04s', substr($char, 0, -4), substr($char, -4)); } function _twig_escape_css_callback($matches) { $char = $matches[0]; return sprintf('\\%X ', 1 === \strlen($char) ? \ord($char) : twig_ord($char)); } /** * This function is adapted from code coming from Zend Framework. * * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com) * @license https://framework.zend.com/license/new-bsd New BSD License */ function _twig_escape_html_attr_callback($matches) { $chr = $matches[0]; $ord = \ord($chr); /* * The following replaces characters undefined in HTML with the * hex entity for the Unicode replacement character. */ if (($ord <= 0x1f && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($ord >= 0x7f && $ord <= 0x9f)) { return '�'; } /* * Check if the current character to escape has a name entity we should * replace it with while grabbing the hex value of the character. */ if (1 == \strlen($chr)) { /* * While HTML supports far more named entities, the lowest common denominator * has become HTML5's XML Serialisation which is restricted to the those named * entities that XML supports. Using HTML entities would result in this error: * XML Parsing Error: undefined entity */ static $entityMap = [ 34 => '"', /* quotation mark */ 38 => '&', /* ampersand */ 60 => '<', /* less-than sign */ 62 => '>', /* greater-than sign */ ]; if (isset($entityMap[$ord])) { return $entityMap[$ord]; } return sprintf('&#x%02X;', $ord); } /* * Per OWASP recommendations, we'll use hex entities for any other * characters where a named entity does not exist. */ return sprintf('&#x%04X;', twig_ord($chr)); } // add multibyte extensions if possible if (\function_exists('mb_get_info')) { /** * Returns the length of a variable. * * @param mixed $thing A variable * * @return int The length of the value */ function twig_length_filter(Environment $env, $thing) { if (null === $thing) { return 0; } if (is_scalar($thing)) { return mb_strlen($thing, $env->getCharset()); } if ($thing instanceof \Countable || \is_array($thing) || $thing instanceof \SimpleXMLElement) { return \count($thing); } if ($thing instanceof \Traversable) { return iterator_count($thing); } if (\is_object($thing) && method_exists($thing, '__toString')) { return mb_strlen((string) $thing, $env->getCharset()); } return 1; } /** * Converts a string to uppercase. * * @param string $string A string * * @return string The uppercased string */ function twig_upper_filter(Environment $env, $string) { if (null !== $charset = $env->getCharset()) { return mb_strtoupper($string, $charset); } return strtoupper($string); } /** * Converts a string to lowercase. * * @param string $string A string * * @return string The lowercased string */ function twig_lower_filter(Environment $env, $string) { if (null !== $charset = $env->getCharset()) { return mb_strtolower($string, $charset); } return strtolower($string); } /** * Returns a titlecased string. * * @param string $string A string * * @return string The titlecased string */ function twig_title_string_filter(Environment $env, $string) { if (null !== $charset = $env->getCharset()) { return mb_convert_case($string, MB_CASE_TITLE, $charset); } return ucwords(strtolower($string)); } /** * Returns a capitalized string. * * @param string $string A string * * @return string The capitalized string */ function twig_capitalize_string_filter(Environment $env, $string) { if (null !== $charset = $env->getCharset()) { return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset); } return ucfirst(strtolower($string)); } } // and byte fallback else { /** * Returns the length of a variable. * * @param mixed $thing A variable * * @return int The length of the value */ function twig_length_filter(Environment $env, $thing) { if (null === $thing) { return 0; } if (is_scalar($thing)) { return \strlen($thing); } if ($thing instanceof \SimpleXMLElement) { return \count($thing); } if (\is_object($thing) && method_exists($thing, '__toString') && !$thing instanceof \Countable) { return \strlen((string) $thing); } if ($thing instanceof \Countable || \is_array($thing)) { return \count($thing); } if ($thing instanceof \IteratorAggregate) { return iterator_count($thing); } return 1; } /** * Returns a titlecased string. * * @param string $string A string * * @return string The titlecased string */ function twig_title_string_filter(Environment $env, $string) { return ucwords(strtolower($string)); } /** * Returns a capitalized string. * * @param string $string A string * * @return string The capitalized string */ function twig_capitalize_string_filter(Environment $env, $string) { return ucfirst(strtolower($string)); } } /** * @internal */ function twig_ensure_traversable($seq) { if ($seq instanceof \Traversable || \is_array($seq)) { return $seq; } return []; } /** * @internal */ function twig_to_array($seq, $preserveKeys = true) { if ($seq instanceof \Traversable) { return iterator_to_array($seq, $preserveKeys); } if (!\is_array($seq)) { return $seq; } return $preserveKeys ? $seq : array_values($seq); } /** * Checks if a variable is empty. * * {# evaluates to true if the foo variable is null, false, or the empty string #} * {% if foo is empty %} * {# ... #} * {% endif %} * * @param mixed $value A variable * * @return bool true if the value is empty, false otherwise */ function twig_test_empty($value) { if ($value instanceof \Countable) { return 0 == \count($value); } if ($value instanceof \Traversable) { return !iterator_count($value); } if (\is_object($value) && method_exists($value, '__toString')) { return '' === (string) $value; } return '' === $value || false === $value || null === $value || [] === $value; } /** * Checks if a variable is traversable. * * {# evaluates to true if the foo variable is an array or a traversable object #} * {% if foo is iterable %} * {# ... #} * {% endif %} * * @param mixed $value A variable * * @return bool true if the value is traversable */ function twig_test_iterable($value) { return $value instanceof \Traversable || \is_array($value); } /** * Renders a template. * * @param array $context * @param string|array $template The template to render or an array of templates to try consecutively * @param array $variables The variables to pass to the template * @param bool $withContext * @param bool $ignoreMissing Whether to ignore missing templates or not * @param bool $sandboxed Whether to sandbox the template or not * * @return string The rendered template */ function twig_include(Environment $env, $context, $template, $variables = [], $withContext = true, $ignoreMissing = false, $sandboxed = false) { $alreadySandboxed = false; $sandbox = null; if ($withContext) { $variables = array_merge($context, $variables); } if ($isSandboxed = $sandboxed && $env->hasExtension('\Twig\Extension\SandboxExtension')) { $sandbox = $env->getExtension('\Twig\Extension\SandboxExtension'); if (!$alreadySandboxed = $sandbox->isSandboxed()) { $sandbox->enableSandbox(); } } $loaded = null; try { $loaded = $env->resolveTemplate($template); } catch (LoaderError $e) { if (!$ignoreMissing) { if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); } throw $e; } } catch (\Throwable $e) { if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); } throw $e; } catch (\Exception $e) { if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); } throw $e; } try { $ret = $loaded ? $loaded->render($variables) : ''; } catch (\Exception $e) { if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); } throw $e; } if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); } return $ret; } /** * Returns a template content without rendering it. * * @param string $name The template name * @param bool $ignoreMissing Whether to ignore missing templates or not * * @return string The template source */ function twig_source(Environment $env, $name, $ignoreMissing = false) { $loader = $env->getLoader(); try { if (!$loader instanceof SourceContextLoaderInterface) { return $loader->getSource($name); } else { return $loader->getSourceContext($name)->getCode(); } } catch (LoaderError $e) { if (!$ignoreMissing) { throw $e; } } } /** * Provides the ability to get constants from instances as well as class/global constants. * * @param string $constant The name of the constant * @param object|null $object The object to get the constant from * * @return string */ function twig_constant($constant, $object = null) { if (null !== $object) { $constant = \get_class($object).'::'.$constant; } return \constant($constant); } /** * Checks if a constant exists. * * @param string $constant The name of the constant * @param object|null $object The object to get the constant from * * @return bool */ function twig_constant_is_defined($constant, $object = null) { if (null !== $object) { $constant = \get_class($object).'::'.$constant; } return \defined($constant); } /** * Batches item. * * @param array $items An array of items * @param int $size The size of the batch * @param mixed $fill A value used to fill missing items * * @return array */ function twig_array_batch($items, $size, $fill = null, $preserveKeys = true) { if (!twig_test_iterable($items)) { throw new RuntimeError(sprintf('The "batch" filter expects an array or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items))); } $size = ceil($size); $result = array_chunk(twig_to_array($items, $preserveKeys), $size, $preserveKeys); if (null !== $fill && $result) { $last = \count($result) - 1; if ($fillCount = $size - \count($result[$last])) { for ($i = 0; $i < $fillCount; ++$i) { $result[$last][] = $fill; } } } return $result; } function twig_array_filter($array, $arrow) { if (\is_array($array)) { if (\PHP_VERSION_ID >= 50600) { return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH); } return array_filter($array, $arrow); } // the IteratorIterator wrapping is needed as some internal PHP classes are \Traversable but do not implement \Iterator return new \CallbackFilterIterator(new \IteratorIterator($array), $arrow); } function twig_array_map($array, $arrow) { $r = []; foreach ($array as $k => $v) { $r[$k] = $arrow($v, $k); } return $r; } function twig_array_reduce($array, $arrow, $initial = null) { if (!\is_array($array)) { $array = iterator_to_array($array); } return array_reduce($array, $arrow, $initial); } } db/login/vendor/twig/twig/src/Extension/InitRuntimeInterface.php000064400000001200151502156020021014 0ustar00 */ interface InitRuntimeInterface { } class_alias('Twig\Extension\InitRuntimeInterface', 'Twig_Extension_InitRuntimeInterface'); db/login/vendor/twig/twig/src/Extension/ProfilerExtension.php000064400000002137151502156020020415 0ustar00actives[] = $profile; } public function enter(Profile $profile) { $this->actives[0]->addProfile($profile); array_unshift($this->actives, $profile); } public function leave(Profile $profile) { $profile->leave(); array_shift($this->actives); if (1 === \count($this->actives)) { $this->actives[0]->leave(); } } public function getNodeVisitors() { return [new ProfilerNodeVisitor(\get_class($this))]; } public function getName() { return 'profiler'; } } class_alias('Twig\Extension\ProfilerExtension', 'Twig_Extension_Profiler'); db/login/vendor/twig/twig/src/Extension/EscaperExtension.php000064400000005731151502156020020220 0ustar00setDefaultStrategy($defaultStrategy); } public function getTokenParsers() { return [new AutoEscapeTokenParser()]; } public function getNodeVisitors() { return [new EscaperNodeVisitor()]; } public function getFilters() { return [ new TwigFilter('raw', 'twig_raw_filter', ['is_safe' => ['all']]), ]; } /** * Sets the default strategy to use when not defined by the user. * * The strategy can be a valid PHP callback that takes the template * name as an argument and returns the strategy to use. * * @param string|false|callable $defaultStrategy An escaping strategy */ public function setDefaultStrategy($defaultStrategy) { // for BC if (true === $defaultStrategy) { @trigger_error('Using "true" as the default strategy is deprecated since version 1.21. Use "html" instead.', E_USER_DEPRECATED); $defaultStrategy = 'html'; } if ('filename' === $defaultStrategy) { @trigger_error('Using "filename" as the default strategy is deprecated since version 1.27. Use "name" instead.', E_USER_DEPRECATED); $defaultStrategy = 'name'; } if ('name' === $defaultStrategy) { $defaultStrategy = ['\Twig\FileExtensionEscapingStrategy', 'guess']; } $this->defaultStrategy = $defaultStrategy; } /** * Gets the default strategy to use when not defined by the user. * * @param string $name The template name * * @return string|false The default strategy to use for the template */ public function getDefaultStrategy($name) { // disable string callables to avoid calling a function named html or js, // or any other upcoming escaping strategy if (!\is_string($this->defaultStrategy) && false !== $this->defaultStrategy) { return \call_user_func($this->defaultStrategy, $name); } return $this->defaultStrategy; } public function getName() { return 'escaper'; } } class_alias('Twig\Extension\EscaperExtension', 'Twig_Extension_Escaper'); } namespace { /** * Marks a variable as being safe. * * @param string $string A PHP variable * * @return string */ function twig_raw_filter($string) { return $string; } } db/login/vendor/twig/twig/src/Extension/DebugExtension.php000064400000003640151502156020017661 0ustar00 $isDumpOutputHtmlSafe ? ['html'] : [], 'needs_context' => true, 'needs_environment' => true, 'is_variadic' => true]), ]; } public function getName() { return 'debug'; } } class_alias('Twig\Extension\DebugExtension', 'Twig_Extension_Debug'); } namespace { use Twig\Environment; use Twig\Template; use Twig\TemplateWrapper; function twig_var_dump(Environment $env, $context, array $vars = []) { if (!$env->isDebug()) { return; } ob_start(); if (!$vars) { $vars = []; foreach ($context as $key => $value) { if (!$value instanceof Template && !$value instanceof TemplateWrapper) { $vars[$key] = $value; } } var_dump($vars); } else { foreach ($vars as $var) { var_dump($var); } } return ob_get_clean(); } } db/login/vendor/twig/twig/src/Extension/GlobalsInterface.php000064400000001162151502156020020137 0ustar00 */ interface GlobalsInterface { } class_alias('Twig\Extension\GlobalsInterface', 'Twig_Extension_GlobalsInterface'); db/login/vendor/twig/twig/src/Extension/StringLoaderExtension.php000064400000002263151502156020021230 0ustar00 true]), ]; } public function getName() { return 'string_loader'; } } class_alias('Twig\Extension\StringLoaderExtension', 'Twig_Extension_StringLoader'); } namespace { use Twig\Environment; use Twig\TemplateWrapper; /** * Loads a template from a string. * * {{ include(template_from_string("Hello {{ name }}")) }} * * @param string $template A template as a string or object implementing __toString() * @param string $name An optional name of the template to be used in error messages * * @return TemplateWrapper */ function twig_template_from_string(Environment $env, $template, $name = null) { return $env->createTemplate((string) $template, $name); } } db/login/vendor/twig/twig/src/Extension/StagingExtension.php000064400000005702151502156020020230 0ustar00 * * @internal */ class StagingExtension extends AbstractExtension { protected $functions = []; protected $filters = []; protected $visitors = []; protected $tokenParsers = []; protected $globals = []; protected $tests = []; public function addFunction($name, $function) { if (isset($this->functions[$name])) { @trigger_error(sprintf('Overriding function "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED); } $this->functions[$name] = $function; } public function getFunctions() { return $this->functions; } public function addFilter($name, $filter) { if (isset($this->filters[$name])) { @trigger_error(sprintf('Overriding filter "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED); } $this->filters[$name] = $filter; } public function getFilters() { return $this->filters; } public function addNodeVisitor(NodeVisitorInterface $visitor) { $this->visitors[] = $visitor; } public function getNodeVisitors() { return $this->visitors; } public function addTokenParser(TokenParserInterface $parser) { if (isset($this->tokenParsers[$parser->getTag()])) { @trigger_error(sprintf('Overriding tag "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $parser->getTag()), E_USER_DEPRECATED); } $this->tokenParsers[$parser->getTag()] = $parser; } public function getTokenParsers() { return $this->tokenParsers; } public function addGlobal($name, $value) { $this->globals[$name] = $value; } public function getGlobals() { return $this->globals; } public function addTest($name, $test) { if (isset($this->tests[$name])) { @trigger_error(sprintf('Overriding test "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED); } $this->tests[$name] = $test; } public function getTests() { return $this->tests; } public function getName() { return 'staging'; } } class_alias('Twig\Extension\StagingExtension', 'Twig_Extension_Staging'); db/login/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php000064400000000506151502156020022075 0ustar00 */ interface RuntimeExtensionInterface { } db/login/vendor/twig/twig/src/Extension/AbstractExtension.php000064400000002501151502156020020371 0ustar00 */ interface ExtensionInterface { /** * Initializes the runtime environment. * * This is where you can load some file that contains filter functions for instance. * * @deprecated since 1.23 (to be removed in 2.0), implement \Twig_Extension_InitRuntimeInterface instead */ public function initRuntime(Environment $environment); /** * Returns the token parser instances to add to the existing list. * * @return TokenParserInterface[] */ public function getTokenParsers(); /** * Returns the node visitor instances to add to the existing list. * * @return NodeVisitorInterface[] */ public function getNodeVisitors(); /** * Returns a list of filters to add to the existing list. * * @return TwigFilter[] */ public function getFilters(); /** * Returns a list of tests to add to the existing list. * * @return TwigTest[] */ public function getTests(); /** * Returns a list of functions to add to the existing list. * * @return TwigFunction[] */ public function getFunctions(); /** * Returns a list of operators to add to the existing list. * * @return array First array of unary operators, second array of binary operators */ public function getOperators(); /** * Returns a list of global variables to add to the existing list. * * @return array An array of global variables * * @deprecated since 1.23 (to be removed in 2.0), implement \Twig_Extension_GlobalsInterface instead */ public function getGlobals(); /** * Returns the name of the extension. * * @return string The extension name * * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally */ public function getName(); } class_alias('Twig\Extension\ExtensionInterface', 'Twig_ExtensionInterface'); // Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name. class_exists('Twig\Environment'); db/login/vendor/twig/twig/src/Node/ForLoopNode.php000064400000003061151502156020016032 0ustar00 */ class ForLoopNode extends Node { public function __construct($lineno, $tag = null) { parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno, $tag); } public function compile(Compiler $compiler) { if ($this->getAttribute('else')) { $compiler->write("\$context['_iterated'] = true;\n"); } if ($this->getAttribute('with_loop')) { $compiler ->write("++\$context['loop']['index0'];\n") ->write("++\$context['loop']['index'];\n") ->write("\$context['loop']['first'] = false;\n") ; if (!$this->getAttribute('ifexpr')) { $compiler ->write("if (isset(\$context['loop']['length'])) {\n") ->indent() ->write("--\$context['loop']['revindex0'];\n") ->write("--\$context['loop']['revindex'];\n") ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n") ->outdent() ->write("}\n") ; } } } } class_alias('Twig\Node\ForLoopNode', 'Twig_Node_ForLoop'); db/login/vendor/twig/twig/src/Node/ImportNode.php000064400000002706151502156020015731 0ustar00 */ class ImportNode extends Node { public function __construct(AbstractExpression $expr, AbstractExpression $var, $lineno, $tag = null) { parent::__construct(['expr' => $expr, 'var' => $var], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write('') ->subcompile($this->getNode('var')) ->raw(' = ') ; if ($this->getNode('expr') instanceof NameExpression && '_self' === $this->getNode('expr')->getAttribute('name')) { $compiler->raw('$this'); } else { $compiler ->raw('$this->loadTemplate(') ->subcompile($this->getNode('expr')) ->raw(', ') ->repr($this->getTemplateName()) ->raw(', ') ->repr($this->getTemplateLine()) ->raw(')->unwrap()') ; } $compiler->raw(";\n"); } } class_alias('Twig\Node\ImportNode', 'Twig_Node_Import'); db/login/vendor/twig/twig/src/Node/PrintNode.php000064400000001635151502156020015553 0ustar00 */ class PrintNode extends Node implements NodeOutputInterface { public function __construct(AbstractExpression $expr, $lineno, $tag = null) { parent::__construct(['expr' => $expr], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write('echo ') ->subcompile($this->getNode('expr')) ->raw(";\n") ; } } class_alias('Twig\Node\PrintNode', 'Twig_Node_Print'); db/login/vendor/twig/twig/src/Node/WithNode.php000064400000004241151502156020015366 0ustar00 */ class WithNode extends Node { public function __construct(Node $body, Node $variables = null, $only = false, $lineno, $tag = null) { $nodes = ['body' => $body]; if (null !== $variables) { $nodes['variables'] = $variables; } parent::__construct($nodes, ['only' => (bool) $only], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->addDebugInfo($this); if ($this->hasNode('variables')) { $node = $this->getNode('variables'); $varsName = $compiler->getVarName(); $compiler ->write(sprintf('$%s = ', $varsName)) ->subcompile($node) ->raw(";\n") ->write(sprintf("if (!twig_test_iterable(\$%s)) {\n", $varsName)) ->indent() ->write("throw new RuntimeError('Variables passed to the \"with\" tag must be a hash.', ") ->repr($node->getTemplateLine()) ->raw(", \$this->getSourceContext());\n") ->outdent() ->write("}\n") ->write(sprintf("\$%s = twig_to_array(\$%s);\n", $varsName, $varsName)) ; if ($this->getAttribute('only')) { $compiler->write("\$context = ['_parent' => \$context];\n"); } else { $compiler->write("\$context['_parent'] = \$context;\n"); } $compiler->write(sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName)); } else { $compiler->write("\$context['_parent'] = \$context;\n"); } $compiler ->subcompile($this->getNode('body')) ->write("\$context = \$context['_parent'];\n") ; } } class_alias('Twig\Node\WithNode', 'Twig_Node_With'); db/login/vendor/twig/twig/src/Node/Node.php000064400000016545151502156020014544 0ustar00 */ class Node implements \Twig_NodeInterface { protected $nodes; protected $attributes; protected $lineno; protected $tag; private $name; private $sourceContext; /** * @param array $nodes An array of named nodes * @param array $attributes An array of attributes (should not be nodes) * @param int $lineno The line number * @param string $tag The tag name associated with the Node */ public function __construct(array $nodes = [], array $attributes = [], $lineno = 0, $tag = null) { foreach ($nodes as $name => $node) { if (!$node instanceof \Twig_NodeInterface) { @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, \get_class($this)), E_USER_DEPRECATED); } } $this->nodes = $nodes; $this->attributes = $attributes; $this->lineno = $lineno; $this->tag = $tag; } public function __toString() { $attributes = []; foreach ($this->attributes as $name => $value) { $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true))); } $repr = [\get_class($this).'('.implode(', ', $attributes)]; if (\count($this->nodes)) { foreach ($this->nodes as $name => $node) { $len = \strlen($name) + 4; $noderepr = []; foreach (explode("\n", (string) $node) as $line) { $noderepr[] = str_repeat(' ', $len).$line; } $repr[] = sprintf(' %s: %s', $name, ltrim(implode("\n", $noderepr))); } $repr[] = ')'; } else { $repr[0] .= ')'; } return implode("\n", $repr); } /** * @deprecated since 1.16.1 (to be removed in 2.0) */ public function toXml($asDom = false) { @trigger_error(sprintf('%s is deprecated since version 1.16.1 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED); $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->formatOutput = true; $dom->appendChild($xml = $dom->createElement('twig')); $xml->appendChild($node = $dom->createElement('node')); $node->setAttribute('class', \get_class($this)); foreach ($this->attributes as $name => $value) { $node->appendChild($attribute = $dom->createElement('attribute')); $attribute->setAttribute('name', $name); $attribute->appendChild($dom->createTextNode($value)); } foreach ($this->nodes as $name => $n) { if (null === $n) { continue; } $child = $n->toXml(true)->getElementsByTagName('node')->item(0); $child = $dom->importNode($child, true); $child->setAttribute('name', $name); $node->appendChild($child); } return $asDom ? $dom : $dom->saveXML(); } public function compile(Compiler $compiler) { foreach ($this->nodes as $node) { $node->compile($compiler); } } public function getTemplateLine() { return $this->lineno; } /** * @deprecated since 1.27 (to be removed in 2.0) */ public function getLine() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getTemplateLine() instead.', E_USER_DEPRECATED); return $this->lineno; } public function getNodeTag() { return $this->tag; } /** * @return bool */ public function hasAttribute($name) { return \array_key_exists($name, $this->attributes); } /** * @return mixed */ public function getAttribute($name) { if (!\array_key_exists($name, $this->attributes)) { throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, \get_class($this))); } return $this->attributes[$name]; } /** * @param string $name * @param mixed $value */ public function setAttribute($name, $value) { $this->attributes[$name] = $value; } public function removeAttribute($name) { unset($this->attributes[$name]); } /** * @return bool */ public function hasNode($name) { return \array_key_exists($name, $this->nodes); } /** * @return Node */ public function getNode($name) { if (!\array_key_exists($name, $this->nodes)) { throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, \get_class($this))); } return $this->nodes[$name]; } public function setNode($name, $node = null) { if (!$node instanceof \Twig_NodeInterface) { @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, \get_class($this)), E_USER_DEPRECATED); } $this->nodes[$name] = $node; } public function removeNode($name) { unset($this->nodes[$name]); } public function count() { return \count($this->nodes); } public function getIterator() { return new \ArrayIterator($this->nodes); } public function setTemplateName($name) { $this->name = $name; foreach ($this->nodes as $node) { if (null !== $node) { $node->setTemplateName($name); } } } public function getTemplateName() { return $this->name; } public function setSourceContext(Source $source) { $this->sourceContext = $source; foreach ($this->nodes as $node) { if ($node instanceof Node) { $node->setSourceContext($source); } } } public function getSourceContext() { return $this->sourceContext; } /** * @deprecated since 1.27 (to be removed in 2.0) */ public function setFilename($name) { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use setTemplateName() instead.', E_USER_DEPRECATED); $this->setTemplateName($name); } /** * @deprecated since 1.27 (to be removed in 2.0) */ public function getFilename() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getTemplateName() instead.', E_USER_DEPRECATED); return $this->name; } } class_alias('Twig\Node\Node', 'Twig_Node'); // Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name. class_exists('Twig\Compiler'); db/login/vendor/twig/twig/src/Node/NodeCaptureInterface.php000064400000000715151502156020017701 0ustar00 */ interface NodeCaptureInterface { } class_alias('Twig\Node\NodeCaptureInterface', 'Twig_NodeCaptureInterface'); db/login/vendor/twig/twig/src/Node/BlockNode.php000064400000002005151502156020015501 0ustar00 */ class BlockNode extends Node { public function __construct($name, \Twig_NodeInterface $body, $lineno, $tag = null) { parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write(sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n") ->indent() ; $compiler ->subcompile($this->getNode('body')) ->outdent() ->write("}\n\n") ; } } class_alias('Twig\Node\BlockNode', 'Twig_Node_Block'); db/login/vendor/twig/twig/src/Node/CheckToStringNode.php000064400000002163151502156020017163 0ustar00 */ class CheckToStringNode extends AbstractExpression { public function __construct(AbstractExpression $expr) { parent::__construct(['expr' => $expr], [], $expr->getTemplateLine(), $expr->getNodeTag()); } public function compile(Compiler $compiler) { $compiler ->raw('$this->sandbox->ensureToStringAllowed(') ->subcompile($this->getNode('expr')) ->raw(')') ; } } db/login/vendor/twig/twig/src/Node/NodeOutputInterface.php000064400000000666151502156020017603 0ustar00 */ interface NodeOutputInterface { } class_alias('Twig\Node\NodeOutputInterface', 'Twig_NodeOutputInterface'); db/login/vendor/twig/twig/src/Node/SandboxNode.php000064400000002215151502156020016050 0ustar00 */ class SandboxNode extends Node { public function __construct(\Twig_NodeInterface $body, $lineno, $tag = null) { parent::__construct(['body' => $body], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write("if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {\n") ->indent() ->write("\$this->sandbox->enableSandbox();\n") ->outdent() ->write("}\n") ->subcompile($this->getNode('body')) ->write("if (!\$alreadySandboxed) {\n") ->indent() ->write("\$this->sandbox->disableSandbox();\n") ->outdent() ->write("}\n") ; } } class_alias('Twig\Node\SandboxNode', 'Twig_Node_Sandbox'); db/login/vendor/twig/twig/src/Node/DeprecatedNode.php000064400000002632151502156020016515 0ustar00 */ class DeprecatedNode extends Node { public function __construct(AbstractExpression $expr, $lineno, $tag = null) { parent::__construct(['expr' => $expr], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->addDebugInfo($this); $expr = $this->getNode('expr'); if ($expr instanceof ConstantExpression) { $compiler->write('@trigger_error(') ->subcompile($expr); } else { $varName = $compiler->getVarName(); $compiler->write(sprintf('$%s = ', $varName)) ->subcompile($expr) ->raw(";\n") ->write(sprintf('@trigger_error($%s', $varName)); } $compiler ->raw('.') ->string(sprintf(' ("%s" at line %d).', $this->getTemplateName(), $this->getTemplateLine())) ->raw(", E_USER_DEPRECATED);\n") ; } } class_alias('Twig\Node\DeprecatedNode', 'Twig_Node_Deprecated'); db/login/vendor/twig/twig/src/Node/MacroNode.php000064400000007425151502156020015523 0ustar00 */ class MacroNode extends Node { const VARARGS_NAME = 'varargs'; public function __construct($name, \Twig_NodeInterface $body, \Twig_NodeInterface $arguments, $lineno, $tag = null) { foreach ($arguments as $argumentName => $argument) { if (self::VARARGS_NAME === $argumentName) { throw new SyntaxError(sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine(), $argument->getSourceContext()); } } parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write(sprintf('public function get%s(', $this->getAttribute('name'))) ; $count = \count($this->getNode('arguments')); $pos = 0; foreach ($this->getNode('arguments') as $name => $default) { $compiler ->raw('$__'.$name.'__ = ') ->subcompile($default) ; if (++$pos < $count) { $compiler->raw(', '); } } if (\PHP_VERSION_ID >= 50600) { if ($count) { $compiler->raw(', '); } $compiler->raw('...$__varargs__'); } $compiler ->raw(")\n") ->write("{\n") ->indent() ; $compiler ->write("\$context = \$this->env->mergeGlobals([\n") ->indent() ; foreach ($this->getNode('arguments') as $name => $default) { $compiler ->write('') ->string($name) ->raw(' => $__'.$name.'__') ->raw(",\n") ; } $compiler ->write('') ->string(self::VARARGS_NAME) ->raw(' => ') ; if (\PHP_VERSION_ID >= 50600) { $compiler->raw("\$__varargs__,\n"); } else { $compiler ->raw('func_num_args() > ') ->repr($count) ->raw(' ? array_slice(func_get_args(), ') ->repr($count) ->raw(") : [],\n") ; } $compiler ->outdent() ->write("]);\n\n") ->write("\$blocks = [];\n\n") ; if ($compiler->getEnvironment()->isDebug()) { $compiler->write("ob_start();\n"); } else { $compiler->write("ob_start(function () { return ''; });\n"); } $compiler ->write("try {\n") ->indent() ->subcompile($this->getNode('body')) ->outdent() ->write("} catch (\Exception \$e) {\n") ->indent() ->write("ob_end_clean();\n\n") ->write("throw \$e;\n") ->outdent() ->write("} catch (\Throwable \$e) {\n") ->indent() ->write("ob_end_clean();\n\n") ->write("throw \$e;\n") ->outdent() ->write("}\n\n") ->write("return ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset());\n") ->outdent() ->write("}\n\n") ; } } class_alias('Twig\Node\MacroNode', 'Twig_Node_Macro'); db/login/vendor/twig/twig/src/Node/SandboxedPrintNode.php000064400000003457151502156020017407 0ustar00 */ class SandboxedPrintNode extends PrintNode { public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write('echo ') ; $expr = $this->getNode('expr'); if ($expr instanceof ConstantExpression) { $compiler ->subcompile($expr) ->raw(";\n") ; } else { $compiler ->write('$this->env->getExtension(\'\Twig\Extension\SandboxExtension\')->ensureToStringAllowed(') ->subcompile($expr) ->raw(");\n") ; } } /** * Removes node filters. * * This is mostly needed when another visitor adds filters (like the escaper one). * * @return Node */ protected function removeNodeFilter(Node $node) { if ($node instanceof FilterExpression) { return $this->removeNodeFilter($node->getNode('node')); } return $node; } } class_alias('Twig\Node\SandboxedPrintNode', 'Twig_Node_SandboxedPrint'); db/login/vendor/twig/twig/src/Node/FlushNode.php000064400000001261151502156020015533 0ustar00 */ class FlushNode extends Node { public function __construct($lineno, $tag) { parent::__construct([], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write("flush();\n") ; } } class_alias('Twig\Node\FlushNode', 'Twig_Node_Flush'); db/login/vendor/twig/twig/src/Node/ModuleNode.php000064400000037414151502156020015710 0ustar00 */ class ModuleNode extends Node { public function __construct(\Twig_NodeInterface $body, AbstractExpression $parent = null, \Twig_NodeInterface $blocks, \Twig_NodeInterface $macros, \Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '') { if (!$name instanceof Source) { @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED); $source = new Source($source, $name); } else { $source = $name; } $nodes = [ 'body' => $body, 'blocks' => $blocks, 'macros' => $macros, 'traits' => $traits, 'display_start' => new Node(), 'display_end' => new Node(), 'constructor_start' => new Node(), 'constructor_end' => new Node(), 'class_end' => new Node(), ]; if (null !== $parent) { $nodes['parent'] = $parent; } // embedded templates are set as attributes so that they are only visited once by the visitors parent::__construct($nodes, [ // source to be remove in 2.0 'source' => $source->getCode(), // filename to be remove in 2.0 (use getTemplateName() instead) 'filename' => $source->getName(), 'index' => null, 'embedded_templates' => $embeddedTemplates, ], 1); // populate the template name of all node children $this->setTemplateName($source->getName()); $this->setSourceContext($source); } public function setIndex($index) { $this->setAttribute('index', $index); } public function compile(Compiler $compiler) { $this->compileTemplate($compiler); foreach ($this->getAttribute('embedded_templates') as $template) { $compiler->subcompile($template); } } protected function compileTemplate(Compiler $compiler) { if (!$this->getAttribute('index')) { $compiler->write('compileClassHeader($compiler); if ( \count($this->getNode('blocks')) || \count($this->getNode('traits')) || !$this->hasNode('parent') || $this->getNode('parent') instanceof ConstantExpression || \count($this->getNode('constructor_start')) || \count($this->getNode('constructor_end')) ) { $this->compileConstructor($compiler); } $this->compileGetParent($compiler); $this->compileDisplay($compiler); $compiler->subcompile($this->getNode('blocks')); $this->compileMacros($compiler); $this->compileGetTemplateName($compiler); $this->compileIsTraitable($compiler); $this->compileDebugInfo($compiler); $this->compileGetSource($compiler); $this->compileGetSourceContext($compiler); $this->compileClassFooter($compiler); } protected function compileGetParent(Compiler $compiler) { if (!$this->hasNode('parent')) { return; } $parent = $this->getNode('parent'); $compiler ->write("protected function doGetParent(array \$context)\n", "{\n") ->indent() ->addDebugInfo($parent) ->write('return ') ; if ($parent instanceof ConstantExpression) { $compiler->subcompile($parent); } else { $compiler ->raw('$this->loadTemplate(') ->subcompile($parent) ->raw(', ') ->repr($this->getSourceContext()->getName()) ->raw(', ') ->repr($parent->getTemplateLine()) ->raw(')') ; } $compiler ->raw(";\n") ->outdent() ->write("}\n\n") ; } protected function compileClassHeader(Compiler $compiler) { $compiler ->write("\n\n") ; if (!$this->getAttribute('index')) { $compiler ->write("use Twig\Environment;\n") ->write("use Twig\Error\LoaderError;\n") ->write("use Twig\Error\RuntimeError;\n") ->write("use Twig\Markup;\n") ->write("use Twig\Sandbox\SecurityError;\n") ->write("use Twig\Sandbox\SecurityNotAllowedTagError;\n") ->write("use Twig\Sandbox\SecurityNotAllowedFilterError;\n") ->write("use Twig\Sandbox\SecurityNotAllowedFunctionError;\n") ->write("use Twig\Source;\n") ->write("use Twig\Template;\n\n") ; } $compiler // if the template name contains */, add a blank to avoid a PHP parse error ->write('/* '.str_replace('*/', '* /', $this->getSourceContext()->getName())." */\n") ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getSourceContext()->getName(), $this->getAttribute('index'))) ->raw(sprintf(" extends %s\n", $compiler->getEnvironment()->getBaseTemplateClass())) ->write("{\n") ->indent() ; } protected function compileConstructor(Compiler $compiler) { $compiler ->write("public function __construct(Environment \$env)\n", "{\n") ->indent() ->subcompile($this->getNode('constructor_start')) ->write("parent::__construct(\$env);\n\n") ; // parent if (!$this->hasNode('parent')) { $compiler->write("\$this->parent = false;\n\n"); } $countTraits = \count($this->getNode('traits')); if ($countTraits) { // traits foreach ($this->getNode('traits') as $i => $trait) { $this->compileLoadTemplate($compiler, $trait->getNode('template'), sprintf('$_trait_%s', $i)); $node = $trait->getNode('template'); $compiler ->addDebugInfo($node) ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i)) ->indent() ->write("throw new RuntimeError('Template \"'.") ->subcompile($trait->getNode('template')) ->raw(".'\" cannot be used as a trait.', ") ->repr($node->getTemplateLine()) ->raw(", \$this->getSourceContext());\n") ->outdent() ->write("}\n") ->write(sprintf("\$_trait_%s_blocks = \$_trait_%s->getBlocks();\n\n", $i, $i)) ; foreach ($trait->getNode('targets') as $key => $value) { $compiler ->write(sprintf('if (!isset($_trait_%s_blocks[', $i)) ->string($key) ->raw("])) {\n") ->indent() ->write("throw new RuntimeError(sprintf('Block ") ->string($key) ->raw(' is not defined in trait ') ->subcompile($trait->getNode('template')) ->raw(".'), ") ->repr($node->getTemplateLine()) ->raw(", \$this->getSourceContext());\n") ->outdent() ->write("}\n\n") ->write(sprintf('$_trait_%s_blocks[', $i)) ->subcompile($value) ->raw(sprintf('] = $_trait_%s_blocks[', $i)) ->string($key) ->raw(sprintf(']; unset($_trait_%s_blocks[', $i)) ->string($key) ->raw("]);\n\n") ; } } if ($countTraits > 1) { $compiler ->write("\$this->traits = array_merge(\n") ->indent() ; for ($i = 0; $i < $countTraits; ++$i) { $compiler ->write(sprintf('$_trait_%s_blocks'.($i == $countTraits - 1 ? '' : ',')."\n", $i)) ; } $compiler ->outdent() ->write(");\n\n") ; } else { $compiler ->write("\$this->traits = \$_trait_0_blocks;\n\n") ; } $compiler ->write("\$this->blocks = array_merge(\n") ->indent() ->write("\$this->traits,\n") ->write("[\n") ; } else { $compiler ->write("\$this->blocks = [\n") ; } // blocks $compiler ->indent() ; foreach ($this->getNode('blocks') as $name => $node) { $compiler ->write(sprintf("'%s' => [\$this, 'block_%s'],\n", $name, $name)) ; } if ($countTraits) { $compiler ->outdent() ->write("]\n") ->outdent() ->write(");\n") ; } else { $compiler ->outdent() ->write("];\n") ; } $compiler ->subcompile($this->getNode('constructor_end')) ->outdent() ->write("}\n\n") ; } protected function compileDisplay(Compiler $compiler) { $compiler ->write("protected function doDisplay(array \$context, array \$blocks = [])\n", "{\n") ->indent() ->subcompile($this->getNode('display_start')) ->subcompile($this->getNode('body')) ; if ($this->hasNode('parent')) { $parent = $this->getNode('parent'); $compiler->addDebugInfo($parent); if ($parent instanceof ConstantExpression) { $compiler ->write('$this->parent = $this->loadTemplate(') ->subcompile($parent) ->raw(', ') ->repr($this->getSourceContext()->getName()) ->raw(', ') ->repr($parent->getTemplateLine()) ->raw(");\n") ; $compiler->write('$this->parent'); } else { $compiler->write('$this->getParent($context)'); } $compiler->raw("->display(\$context, array_merge(\$this->blocks, \$blocks));\n"); } $compiler ->subcompile($this->getNode('display_end')) ->outdent() ->write("}\n\n") ; } protected function compileClassFooter(Compiler $compiler) { $compiler ->subcompile($this->getNode('class_end')) ->outdent() ->write("}\n") ; } protected function compileMacros(Compiler $compiler) { $compiler->subcompile($this->getNode('macros')); } protected function compileGetTemplateName(Compiler $compiler) { $compiler ->write("public function getTemplateName()\n", "{\n") ->indent() ->write('return ') ->repr($this->getSourceContext()->getName()) ->raw(";\n") ->outdent() ->write("}\n\n") ; } protected function compileIsTraitable(Compiler $compiler) { // A template can be used as a trait if: // * it has no parent // * it has no macros // * it has no body // // Put another way, a template can be used as a trait if it // only contains blocks and use statements. $traitable = !$this->hasNode('parent') && 0 === \count($this->getNode('macros')); if ($traitable) { if ($this->getNode('body') instanceof BodyNode) { $nodes = $this->getNode('body')->getNode(0); } else { $nodes = $this->getNode('body'); } if (!\count($nodes)) { $nodes = new Node([$nodes]); } foreach ($nodes as $node) { if (!\count($node)) { continue; } if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { continue; } if ($node instanceof BlockReferenceNode) { continue; } $traitable = false; break; } } if ($traitable) { return; } $compiler ->write("public function isTraitable()\n", "{\n") ->indent() ->write(sprintf("return %s;\n", $traitable ? 'true' : 'false')) ->outdent() ->write("}\n\n") ; } protected function compileDebugInfo(Compiler $compiler) { $compiler ->write("public function getDebugInfo()\n", "{\n") ->indent() ->write(sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true)))) ->outdent() ->write("}\n\n") ; } protected function compileGetSource(Compiler $compiler) { $compiler ->write("/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */\n") ->write("public function getSource()\n", "{\n") ->indent() ->write("@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);\n\n") ->write('return $this->getSourceContext()->getCode();') ->raw("\n") ->outdent() ->write("}\n\n") ; } protected function compileGetSourceContext(Compiler $compiler) { $compiler ->write("public function getSourceContext()\n", "{\n") ->indent() ->write('return new Source(') ->string($compiler->getEnvironment()->isDebug() ? $this->getSourceContext()->getCode() : '') ->raw(', ') ->string($this->getSourceContext()->getName()) ->raw(', ') ->string($this->getSourceContext()->getPath()) ->raw(");\n") ->outdent() ->write("}\n") ; } protected function compileLoadTemplate(Compiler $compiler, $node, $var) { if ($node instanceof ConstantExpression) { $compiler ->write(sprintf('%s = $this->loadTemplate(', $var)) ->subcompile($node) ->raw(', ') ->repr($node->getTemplateName()) ->raw(', ') ->repr($node->getTemplateLine()) ->raw(");\n") ; } else { throw new \LogicException('Trait templates can only be constant nodes.'); } } } class_alias('Twig\Node\ModuleNode', 'Twig_Node_Module'); db/login/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php000064400000002416151502156020022102 0ustar00 $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false], $lineno); if ($node instanceof NameExpression) { $node->setAttribute('always_defined', true); } } public function compile(Compiler $compiler) { $compiler ->subcompile($this->getNode('node')) ->raw('->') ->raw($this->getAttribute('method')) ->raw('(') ; $first = true; foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { if (!$first) { $compiler->raw(', '); } $first = false; $compiler->subcompile($pair['value']); } $compiler->raw(')'); } } class_alias('Twig\Node\Expression\MethodCallExpression', 'Twig_Node_Expression_MethodCall'); db/login/vendor/twig/twig/src/Node/Expression/AbstractExpression.php000064400000001025151502156020021624 0ustar00 */ abstract class AbstractExpression extends Node { } class_alias('Twig\Node\Expression\AbstractExpression', 'Twig_Node_Expression'); db/login/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php000064400000003556151502156020021773 0ustar00 */ class DefaultFilter extends FilterExpression { public function __construct(\Twig_NodeInterface $node, ConstantExpression $filterName, \Twig_NodeInterface $arguments, $lineno, $tag = null) { $default = new FilterExpression($node, new ConstantExpression('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine()); if ('default' === $filterName->getAttribute('value') && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { $test = new DefinedTest(clone $node, 'defined', new Node(), $node->getTemplateLine()); $false = \count($arguments) ? $arguments->getNode(0) : new ConstantExpression('', $node->getTemplateLine()); $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine()); } else { $node = $default; } parent::__construct($node, $filterName, $arguments, $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->subcompile($this->getNode('node')); } } class_alias('Twig\Node\Expression\Filter\DefaultFilter', 'Twig_Node_Expression_Filter_Default'); db/login/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php000064400000000765151502156020020671 0ustar00raw('+'); } } class_alias('Twig\Node\Expression\Unary\PosUnary', 'Twig_Node_Expression_Unary_Pos'); db/login/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php000064400000000765151502156020020670 0ustar00raw('!'); } } class_alias('Twig\Node\Expression\Unary\NotUnary', 'Twig_Node_Expression_Unary_Not'); db/login/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php000064400000000765151502156020020641 0ustar00raw('-'); } } class_alias('Twig\Node\Expression\Unary\NegUnary', 'Twig_Node_Expression_Unary_Neg'); db/login/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php000064400000001532151502156020021664 0ustar00 $node], [], $lineno); } public function compile(Compiler $compiler) { $compiler->raw(' '); $this->operator($compiler); $compiler->subcompile($this->getNode('node')); } abstract public function operator(Compiler $compiler); } class_alias('Twig\Node\Expression\Unary\AbstractUnary', 'Twig_Node_Expression_Unary'); db/login/vendor/twig/twig/src/Node/Expression/ParentExpression.php000064400000002302151502156020021311 0ustar00 */ class ParentExpression extends AbstractExpression { public function __construct($name, $lineno, $tag = null) { parent::__construct([], ['output' => false, 'name' => $name], $lineno, $tag); } public function compile(Compiler $compiler) { if ($this->getAttribute('output')) { $compiler ->addDebugInfo($this) ->write('$this->displayParentBlock(') ->string($this->getAttribute('name')) ->raw(", \$context, \$blocks);\n") ; } else { $compiler ->raw('$this->renderParentBlock(') ->string($this->getAttribute('name')) ->raw(', $context, $blocks)') ; } } } class_alias('Twig\Node\Expression\ParentExpression', 'Twig_Node_Expression_Parent'); db/login/vendor/twig/twig/src/Node/Expression/TestExpression.php000064400000002703151502156020021004 0ustar00 $node]; if (null !== $arguments) { $nodes['arguments'] = $arguments; } parent::__construct($nodes, ['name' => $name], $lineno); } public function compile(Compiler $compiler) { $name = $this->getAttribute('name'); $test = $compiler->getEnvironment()->getTest($name); $this->setAttribute('name', $name); $this->setAttribute('type', 'test'); $this->setAttribute('thing', $test); if ($test instanceof TwigTest) { $this->setAttribute('arguments', $test->getArguments()); } if ($test instanceof \Twig_TestCallableInterface || $test instanceof TwigTest) { $this->setAttribute('callable', $test->getCallable()); } if ($test instanceof TwigTest) { $this->setAttribute('is_variadic', $test->isVariadic()); } $this->compileCallable($compiler); } } class_alias('Twig\Node\Expression\TestExpression', 'Twig_Node_Expression_Test'); db/login/vendor/twig/twig/src/Node/Expression/FunctionExpression.php000064400000003265151502156020021656 0ustar00 $arguments], ['name' => $name, 'is_defined_test' => false], $lineno); } public function compile(Compiler $compiler) { $name = $this->getAttribute('name'); $function = $compiler->getEnvironment()->getFunction($name); $this->setAttribute('name', $name); $this->setAttribute('type', 'function'); $this->setAttribute('thing', $function); $this->setAttribute('needs_environment', $function->needsEnvironment()); $this->setAttribute('needs_context', $function->needsContext()); $this->setAttribute('arguments', $function->getArguments()); if ($function instanceof \Twig_FunctionCallableInterface || $function instanceof TwigFunction) { $callable = $function->getCallable(); if ('constant' === $name && $this->getAttribute('is_defined_test')) { $callable = 'twig_constant_is_defined'; } $this->setAttribute('callable', $callable); } if ($function instanceof TwigFunction) { $this->setAttribute('is_variadic', $function->isVariadic()); } $this->compileCallable($compiler); } } class_alias('Twig\Node\Expression\FunctionExpression', 'Twig_Node_Expression_Function'); db/login/vendor/twig/twig/src/Node/Expression/ConstantExpression.php000064400000001227151502156020021656 0ustar00 $value], $lineno); } public function compile(Compiler $compiler) { $compiler->repr($this->getAttribute('value')); } } class_alias('Twig\Node\Expression\ConstantExpression', 'Twig_Node_Expression_Constant'); db/login/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php000064400000005202151502156020022733 0ustar00 */ class BlockReferenceExpression extends AbstractExpression { /** * @param Node|null $template */ public function __construct(\Twig_NodeInterface $name, $template = null, $lineno, $tag = null) { if (\is_bool($template)) { @trigger_error(sprintf('The %s method "$asString" argument is deprecated since version 1.28 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED); $template = null; } $nodes = ['name' => $name]; if (null !== $template) { $nodes['template'] = $template; } parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag); } public function compile(Compiler $compiler) { if ($this->getAttribute('is_defined_test')) { $this->compileTemplateCall($compiler, 'hasBlock'); } else { if ($this->getAttribute('output')) { $compiler->addDebugInfo($this); $this ->compileTemplateCall($compiler, 'displayBlock') ->raw(";\n"); } else { $this->compileTemplateCall($compiler, 'renderBlock'); } } } private function compileTemplateCall(Compiler $compiler, $method) { if (!$this->hasNode('template')) { $compiler->write('$this'); } else { $compiler ->write('$this->loadTemplate(') ->subcompile($this->getNode('template')) ->raw(', ') ->repr($this->getTemplateName()) ->raw(', ') ->repr($this->getTemplateLine()) ->raw(')') ; } $compiler->raw(sprintf('->%s', $method)); $this->compileBlockArguments($compiler); return $compiler; } private function compileBlockArguments(Compiler $compiler) { $compiler ->raw('(') ->subcompile($this->getNode('name')) ->raw(', $context'); if (!$this->hasNode('template')) { $compiler->raw(', $blocks'); } return $compiler->raw(')'); } } class_alias('Twig\Node\Expression\BlockReferenceExpression', 'Twig_Node_Expression_BlockReference'); db/login/vendor/twig/twig/src/Node/Expression/FilterExpression.php000064400000003103151502156020021305 0ustar00 $node, 'filter' => $filterName, 'arguments' => $arguments], [], $lineno, $tag); } public function compile(Compiler $compiler) { $name = $this->getNode('filter')->getAttribute('value'); $filter = $compiler->getEnvironment()->getFilter($name); $this->setAttribute('name', $name); $this->setAttribute('type', 'filter'); $this->setAttribute('thing', $filter); $this->setAttribute('needs_environment', $filter->needsEnvironment()); $this->setAttribute('needs_context', $filter->needsContext()); $this->setAttribute('arguments', $filter->getArguments()); if ($filter instanceof \Twig_FilterCallableInterface || $filter instanceof TwigFilter) { $this->setAttribute('callable', $filter->getCallable()); } if ($filter instanceof TwigFilter) { $this->setAttribute('is_variadic', $filter->isVariadic()); } $this->compileCallable($compiler); } } class_alias('Twig\Node\Expression\FilterExpression', 'Twig_Node_Expression_Filter'); db/login/vendor/twig/twig/src/Node/Expression/ArrayExpression.php000064400000004415151502156020021145 0ustar00index = -1; foreach ($this->getKeyValuePairs() as $pair) { if ($pair['key'] instanceof ConstantExpression && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) { $this->index = $pair['key']->getAttribute('value'); } } } public function getKeyValuePairs() { $pairs = []; foreach (array_chunk($this->nodes, 2) as $pair) { $pairs[] = [ 'key' => $pair[0], 'value' => $pair[1], ]; } return $pairs; } public function hasElement(AbstractExpression $key) { foreach ($this->getKeyValuePairs() as $pair) { // we compare the string representation of the keys // to avoid comparing the line numbers which are not relevant here. if ((string) $key === (string) $pair['key']) { return true; } } return false; } public function addElement(AbstractExpression $value, AbstractExpression $key = null) { if (null === $key) { $key = new ConstantExpression(++$this->index, $value->getTemplateLine()); } array_push($this->nodes, $key, $value); } public function compile(Compiler $compiler) { $compiler->raw('['); $first = true; foreach ($this->getKeyValuePairs() as $pair) { if (!$first) { $compiler->raw(', '); } $first = false; $compiler ->subcompile($pair['key']) ->raw(' => ') ->subcompile($pair['value']) ; } $compiler->raw(']'); } } class_alias('Twig\Node\Expression\ArrayExpression', 'Twig_Node_Expression_Array'); db/login/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php000064400000005252151502156020021441 0ustar00 $node, 'attribute' => $attribute]; if (null !== $arguments) { $nodes['arguments'] = $arguments; } parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'disable_c_ext' => false], $lineno); } public function compile(Compiler $compiler) { if ($this->getAttribute('disable_c_ext')) { @trigger_error(sprintf('Using the "disable_c_ext" attribute on %s is deprecated since version 1.30 and will be removed in 2.0.', __CLASS__), E_USER_DEPRECATED); } if (\function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) { $compiler->raw('twig_template_get_attributes($this, '); } else { $compiler->raw('$this->getAttribute('); } if ($this->getAttribute('ignore_strict_check')) { $this->getNode('node')->setAttribute('ignore_strict_check', true); } $compiler->subcompile($this->getNode('node')); $compiler->raw(', ')->subcompile($this->getNode('attribute')); // only generate optional arguments when needed (to make generated code more readable) $needFourth = $this->getAttribute('ignore_strict_check'); $needThird = $needFourth || $this->getAttribute('is_defined_test'); $needSecond = $needThird || Template::ANY_CALL !== $this->getAttribute('type'); $needFirst = $needSecond || $this->hasNode('arguments'); if ($needFirst) { if ($this->hasNode('arguments')) { $compiler->raw(', ')->subcompile($this->getNode('arguments')); } else { $compiler->raw(', []'); } } if ($needSecond) { $compiler->raw(', ')->repr($this->getAttribute('type')); } if ($needThird) { $compiler->raw(', ')->repr($this->getAttribute('is_defined_test')); } if ($needFourth) { $compiler->raw(', ')->repr($this->getAttribute('ignore_strict_check')); } $compiler->raw(')'); } } class_alias('Twig\Node\Expression\GetAttrExpression', 'Twig_Node_Expression_GetAttr'); db/login/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php000064400000003034151502156020022663 0ustar00 */ class ArrowFunctionExpression extends AbstractExpression { public function __construct(AbstractExpression $expr, Node $names, $lineno, $tag = null) { parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->raw('function (') ; foreach ($this->getNode('names') as $i => $name) { if ($i) { $compiler->raw(', '); } $compiler ->raw('$__') ->raw($name->getAttribute('name')) ->raw('__') ; } $compiler ->raw(') use ($context) { ') ; foreach ($this->getNode('names') as $name) { $compiler ->raw('$context["') ->raw($name->getAttribute('name')) ->raw('"] = $__') ->raw($name->getAttribute('name')) ->raw('__; ') ; } $compiler ->raw('return ') ->subcompile($this->getNode('expr')) ->raw('; }') ; } } db/login/vendor/twig/twig/src/Node/Expression/TempNameExpression.php000064400000001301151502156020021564 0ustar00 $name], $lineno); } public function compile(Compiler $compiler) { $compiler ->raw('$_') ->raw($this->getAttribute('name')) ->raw('_') ; } } class_alias('Twig\Node\Expression\TempNameExpression', 'Twig_Node_Expression_TempName'); db/login/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php000064400000001760151502156020022332 0ustar00 $expr1, 'expr2' => $expr2, 'expr3' => $expr3], [], $lineno); } public function compile(Compiler $compiler) { $compiler ->raw('((') ->subcompile($this->getNode('expr1')) ->raw(') ? (') ->subcompile($this->getNode('expr2')) ->raw(') : (') ->subcompile($this->getNode('expr3')) ->raw('))') ; } } class_alias('Twig\Node\Expression\ConditionalExpression', 'Twig_Node_Expression_Conditional'); db/login/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php000064400000001241151502156020022116 0ustar00raw('(int) floor('); parent::compile($compiler); $compiler->raw(')'); } public function operator(Compiler $compiler) { return $compiler->raw('/'); } } class_alias('Twig\Node\Expression\Binary\FloorDivBinary', 'Twig_Node_Expression_Binary_FloorDiv'); db/login/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php000064400000000757151502156020021313 0ustar00raw('<'); } } class_alias('Twig\Node\Expression\Binary\LessBinary', 'Twig_Node_Expression_Binary_Less'); db/login/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php000064400000001002151502156020021116 0ustar00raw('-'); } } class_alias('Twig\Node\Expression\Binary\SubBinary', 'Twig_Node_Expression_Binary_Sub'); db/login/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php000064400000001002151502156020021104 0ustar00raw('%'); } } class_alias('Twig\Node\Expression\Binary\ModBinary', 'Twig_Node_Expression_Binary_Mod'); db/login/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php000064400000001002151502156020021055 0ustar00raw('+'); } } class_alias('Twig\Node\Expression\Binary\AddBinary', 'Twig_Node_Expression_Binary_Add'); db/login/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php000064400000000777151502156020022305 0ustar00raw('<='); } } class_alias('Twig\Node\Expression\Binary\LessEqualBinary', 'Twig_Node_Expression_Binary_LessEqual'); db/login/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php000064400000001410151502156020021417 0ustar00raw('!twig_in_filter(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) ->raw(')') ; } public function operator(Compiler $compiler) { return $compiler->raw('not in'); } } class_alias('Twig\Node\Expression\Binary\NotInBinary', 'Twig_Node_Expression_Binary_NotIn'); db/login/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php000064400000002061151502156020022136 0ustar00 $left, 'right' => $right], [], $lineno); } public function compile(Compiler $compiler) { $compiler ->raw('(') ->subcompile($this->getNode('left')) ->raw(' ') ; $this->operator($compiler); $compiler ->raw(' ') ->subcompile($this->getNode('right')) ->raw(')') ; } abstract public function operator(Compiler $compiler); } class_alias('Twig\Node\Expression\Binary\AbstractBinary', 'Twig_Node_Expression_Binary'); db/login/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php000064400000001003151502156020021070 0ustar00raw('&&'); } } class_alias('Twig\Node\Expression\Binary\AndBinary', 'Twig_Node_Expression_Binary_And'); db/login/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php000064400000001013151502156020021576 0ustar00raw('.'); } } class_alias('Twig\Node\Expression\Binary\ConcatBinary', 'Twig_Node_Expression_Binary_Concat'); db/login/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php000064400000001403151502156020021756 0ustar00raw('preg_match(') ->subcompile($this->getNode('right')) ->raw(', ') ->subcompile($this->getNode('left')) ->raw(')') ; } public function operator(Compiler $compiler) { return $compiler->raw(''); } } class_alias('Twig\Node\Expression\Binary\MatchesBinary', 'Twig_Node_Expression_Binary_Matches'); db/login/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php000064400000000770151502156020021771 0ustar00raw('>'); } } class_alias('Twig\Node\Expression\Binary\GreaterBinary', 'Twig_Node_Expression_Binary_Greater'); db/login/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php000064400000001027151502156020022473 0ustar00raw('^'); } } class_alias('Twig\Node\Expression\Binary\BitwiseXorBinary', 'Twig_Node_Expression_Binary_BitwiseXor'); db/login/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php000064400000001000151502156020020743 0ustar00raw('||'); } } class_alias('Twig\Node\Expression\Binary\OrBinary', 'Twig_Node_Expression_Binary_Or'); db/login/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php000064400000001753151502156020022127 0ustar00getVarName(); $right = $compiler->getVarName(); $compiler ->raw(sprintf('(is_string($%s = ', $left)) ->subcompile($this->getNode('left')) ->raw(sprintf(') && is_string($%s = ', $right)) ->subcompile($this->getNode('right')) ->raw(sprintf(') && (\'\' === $%2$s || $%2$s === substr($%1$s, -strlen($%2$s))))', $left, $right)) ; } public function operator(Compiler $compiler) { return $compiler->raw(''); } } class_alias('Twig\Node\Expression\Binary\EndsWithBinary', 'Twig_Node_Expression_Binary_EndsWith'); db/login/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php000064400000000774151502156020022134 0ustar00raw('!='); } } class_alias('Twig\Node\Expression\Binary\NotEqualBinary', 'Twig_Node_Expression_Binary_NotEqual'); db/login/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php000064400000001532151502156020021471 0ustar00= 50600) { return parent::compile($compiler); } $compiler ->raw('pow(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) ->raw(')') ; } public function operator(Compiler $compiler) { return $compiler->raw('**'); } } class_alias('Twig\Node\Expression\Binary\PowerBinary', 'Twig_Node_Expression_Binary_Power'); db/login/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php000064400000000763151502156020021451 0ustar00raw('=='); } } class_alias('Twig\Node\Expression\Binary\EqualBinary', 'Twig_Node_Expression_Binary_Equal'); db/login/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php000064400000001002151502156020021107 0ustar00raw('/'); } } class_alias('Twig\Node\Expression\Binary\DivBinary', 'Twig_Node_Expression_Binary_Div'); db/login/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php000064400000001002151502156020021122 0ustar00raw('*'); } } class_alias('Twig\Node\Expression\Binary\MulBinary', 'Twig_Node_Expression_Binary_Mul'); db/login/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php000064400000001372151502156020021433 0ustar00raw('range(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) ->raw(')') ; } public function operator(Compiler $compiler) { return $compiler->raw('..'); } } class_alias('Twig\Node\Expression\Binary\RangeBinary', 'Twig_Node_Expression_Binary_Range'); db/login/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php000064400000001010151502156020022745 0ustar00raw('>='); } } class_alias('Twig\Node\Expression\Binary\GreaterEqualBinary', 'Twig_Node_Expression_Binary_GreaterEqual'); db/login/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php000064400000001372151502156020020745 0ustar00raw('twig_in_filter(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) ->raw(')') ; } public function operator(Compiler $compiler) { return $compiler->raw('in'); } } class_alias('Twig\Node\Expression\Binary\InBinary', 'Twig_Node_Expression_Binary_In'); db/login/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php000064400000001744151502156020022516 0ustar00getVarName(); $right = $compiler->getVarName(); $compiler ->raw(sprintf('(is_string($%s = ', $left)) ->subcompile($this->getNode('left')) ->raw(sprintf(') && is_string($%s = ', $right)) ->subcompile($this->getNode('right')) ->raw(sprintf(') && (\'\' === $%2$s || 0 === strpos($%1$s, $%2$s)))', $left, $right)) ; } public function operator(Compiler $compiler) { return $compiler->raw(''); } } class_alias('Twig\Node\Expression\Binary\StartsWithBinary', 'Twig_Node_Expression_Binary_StartsWith'); db/login/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php000064400000001024151502156020022300 0ustar00raw('|'); } } class_alias('Twig\Node\Expression\Binary\BitwiseOrBinary', 'Twig_Node_Expression_Binary_BitwiseOr'); db/login/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php000064400000001027151502156020022425 0ustar00raw('&'); } } class_alias('Twig\Node\Expression\Binary\BitwiseAndBinary', 'Twig_Node_Expression_Binary_BitwiseAnd'); db/login/vendor/twig/twig/src/Node/Expression/CallExpression.php000064400000026750151502156020020750 0ustar00hasAttribute('callable') && $callable = $this->getAttribute('callable')) { if (\is_string($callable) && false === strpos($callable, '::')) { $compiler->raw($callable); } else { list($r, $callable) = $this->reflectCallable($callable); if ($r instanceof \ReflectionMethod && \is_string($callable[0])) { if ($r->isStatic()) { $compiler->raw(sprintf('%s::%s', $callable[0], $callable[1])); } else { $compiler->raw(sprintf('$this->env->getRuntime(\'%s\')->%s', $callable[0], $callable[1])); } } elseif ($r instanceof \ReflectionMethod && $callable[0] instanceof ExtensionInterface) { $compiler->raw(sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($callable[0]), $callable[1])); } else { $type = ucfirst($this->getAttribute('type')); $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), ', $type, $this->getAttribute('name'))); $closingParenthesis = true; $isArray = true; } } } else { $compiler->raw($this->getAttribute('thing')->compile()); } $this->compileArguments($compiler, $isArray); if ($closingParenthesis) { $compiler->raw(')'); } } protected function compileArguments(Compiler $compiler, $isArray = false) { $compiler->raw($isArray ? '[' : '('); $first = true; if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { $compiler->raw('$this->env'); $first = false; } if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { if (!$first) { $compiler->raw(', '); } $compiler->raw('$context'); $first = false; } if ($this->hasAttribute('arguments')) { foreach ($this->getAttribute('arguments') as $argument) { if (!$first) { $compiler->raw(', '); } $compiler->string($argument); $first = false; } } if ($this->hasNode('node')) { if (!$first) { $compiler->raw(', '); } $compiler->subcompile($this->getNode('node')); $first = false; } if ($this->hasNode('arguments')) { $callable = $this->hasAttribute('callable') ? $this->getAttribute('callable') : null; $arguments = $this->getArguments($callable, $this->getNode('arguments')); foreach ($arguments as $node) { if (!$first) { $compiler->raw(', '); } $compiler->subcompile($node); $first = false; } } $compiler->raw($isArray ? ']' : ')'); } protected function getArguments($callable, $arguments) { $callType = $this->getAttribute('type'); $callName = $this->getAttribute('name'); $parameters = []; $named = false; foreach ($arguments as $name => $node) { if (!\is_int($name)) { $named = true; $name = $this->normalizeName($name); } elseif ($named) { throw new SyntaxError(sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); } $parameters[$name] = $node; } $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic'); if (!$named && !$isVariadic) { return $parameters; } if (!$callable) { if ($named) { $message = sprintf('Named arguments are not supported for %s "%s".', $callType, $callName); } else { $message = sprintf('Arbitrary positional arguments are not supported for %s "%s".', $callType, $callName); } throw new \LogicException($message); } $callableParameters = $this->getCallableParameters($callable, $isVariadic); $arguments = []; $names = []; $missingArguments = []; $optionalArguments = []; $pos = 0; foreach ($callableParameters as $callableParameter) { $names[] = $name = $this->normalizeName($callableParameter->name); if (\array_key_exists($name, $parameters)) { if (\array_key_exists($pos, $parameters)) { throw new SyntaxError(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); } if (\count($missingArguments)) { throw new SyntaxError(sprintf( 'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".', $name, $callType, $callName, implode(', ', $names), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments) ), $this->getTemplateLine(), $this->getSourceContext()); } $arguments = array_merge($arguments, $optionalArguments); $arguments[] = $parameters[$name]; unset($parameters[$name]); $optionalArguments = []; } elseif (\array_key_exists($pos, $parameters)) { $arguments = array_merge($arguments, $optionalArguments); $arguments[] = $parameters[$pos]; unset($parameters[$pos]); $optionalArguments = []; ++$pos; } elseif ($callableParameter->isDefaultValueAvailable()) { $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1); } elseif ($callableParameter->isOptional()) { if (empty($parameters)) { break; } else { $missingArguments[] = $name; } } else { throw new SyntaxError(sprintf('Value for argument "%s" is required for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); } } if ($isVariadic) { $arbitraryArguments = new ArrayExpression([], -1); foreach ($parameters as $key => $value) { if (\is_int($key)) { $arbitraryArguments->addElement($value); } else { $arbitraryArguments->addElement($value, new ConstantExpression($key, -1)); } unset($parameters[$key]); } if ($arbitraryArguments->count()) { $arguments = array_merge($arguments, $optionalArguments); $arguments[] = $arbitraryArguments; } } if (!empty($parameters)) { $unknownParameter = null; foreach ($parameters as $parameter) { if ($parameter instanceof Node) { $unknownParameter = $parameter; break; } } throw new SyntaxError( sprintf( 'Unknown argument%s "%s" for %s "%s(%s)".', \count($parameters) > 1 ? 's' : '', implode('", "', array_keys($parameters)), $callType, $callName, implode(', ', $names) ), $unknownParameter ? $unknownParameter->getTemplateLine() : $this->getTemplateLine(), $unknownParameter ? $unknownParameter->getSourceContext() : $this->getSourceContext() ); } return $arguments; } protected function normalizeName($name) { return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name)); } private function getCallableParameters($callable, $isVariadic) { list($r) = $this->reflectCallable($callable); if (null === $r) { return []; } $parameters = $r->getParameters(); if ($this->hasNode('node')) { array_shift($parameters); } if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { array_shift($parameters); } if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { array_shift($parameters); } if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) { foreach ($this->getAttribute('arguments') as $argument) { array_shift($parameters); } } if ($isVariadic) { $argument = end($parameters); if ($argument && $argument->isArray() && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) { array_pop($parameters); } else { $callableName = $r->name; if ($r instanceof \ReflectionMethod) { $callableName = $r->getDeclaringClass()->name.'::'.$callableName; } throw new \LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name'))); } } return $parameters; } private function reflectCallable($callable) { if (null !== $this->reflector) { return $this->reflector; } if (\is_array($callable)) { if (!method_exists($callable[0], $callable[1])) { // __call() return [null, []]; } $r = new \ReflectionMethod($callable[0], $callable[1]); } elseif (\is_object($callable) && !$callable instanceof \Closure) { $r = new \ReflectionObject($callable); $r = $r->getMethod('__invoke'); $callable = [$callable, '__invoke']; } elseif (\is_string($callable) && false !== $pos = strpos($callable, '::')) { $class = substr($callable, 0, $pos); $method = substr($callable, $pos + 2); if (!method_exists($class, $method)) { // __staticCall() return [null, []]; } $r = new \ReflectionMethod($callable); $callable = [$class, $method]; } else { $r = new \ReflectionFunction($callable); } return $this->reflector = [$r, $callable]; } } class_alias('Twig\Node\Expression\CallExpression', 'Twig_Node_Expression_Call'); db/login/vendor/twig/twig/src/Node/Expression/InlinePrint.php000064400000001233151502156020020235 0ustar00 $node], [], $lineno); } public function compile(Compiler $compiler) { $compiler ->raw('print (') ->subcompile($this->getNode('node')) ->raw(')') ; } } db/login/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php000064400000001151151502156020022106 0ustar00raw('$context[') ->string($this->getAttribute('name')) ->raw(']') ; } } class_alias('Twig\Node\Expression\AssignNameExpression', 'Twig_Node_Expression_AssignName'); db/login/vendor/twig/twig/src/Node/Expression/NameExpression.php000064400000007173151502156020020753 0ustar00 '$this', '_context' => '$context', '_charset' => '$this->env->getCharset()', ]; public function __construct($name, $lineno) { parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno); } public function compile(Compiler $compiler) { $name = $this->getAttribute('name'); $compiler->addDebugInfo($this); if ($this->getAttribute('is_defined_test')) { if ($this->isSpecial()) { $compiler->repr(true); } elseif (\PHP_VERSION_ID >= 700400) { $compiler ->raw('array_key_exists(') ->string($name) ->raw(', $context)') ; } else { $compiler ->raw('(isset($context[') ->string($name) ->raw(']) || array_key_exists(') ->string($name) ->raw(', $context))') ; } } elseif ($this->isSpecial()) { $compiler->raw($this->specialVars[$name]); } elseif ($this->getAttribute('always_defined')) { $compiler ->raw('$context[') ->string($name) ->raw(']') ; } else { if (\PHP_VERSION_ID >= 70000) { // use PHP 7 null coalescing operator $compiler ->raw('($context[') ->string($name) ->raw('] ?? ') ; if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { $compiler->raw('null)'); } else { $compiler->raw('$this->getContext($context, ')->string($name)->raw('))'); } } elseif (\PHP_VERSION_ID >= 50400) { // PHP 5.4 ternary operator performance was optimized $compiler ->raw('(isset($context[') ->string($name) ->raw(']) ? $context[') ->string($name) ->raw('] : ') ; if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { $compiler->raw('null)'); } else { $compiler->raw('$this->getContext($context, ')->string($name)->raw('))'); } } else { $compiler ->raw('$this->getContext($context, ') ->string($name) ; if ($this->getAttribute('ignore_strict_check')) { $compiler->raw(', true'); } $compiler ->raw(')') ; } } } public function isSpecial() { return isset($this->specialVars[$this->getAttribute('name')]); } public function isSimple() { return !$this->isSpecial() && !$this->getAttribute('is_defined_test'); } } class_alias('Twig\Node\Expression\NameExpression', 'Twig_Node_Expression_Name'); db/login/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php000064400000004310151502156020022432 0ustar00getTemplateLine()); // for "block()", we don't need the null test as the return value is always a string if (!$left instanceof BlockReferenceExpression) { $test = new AndBinary( $test, new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()), $left->getTemplateLine() ); } parent::__construct($test, $left, $right, $lineno); } public function compile(Compiler $compiler) { /* * This optimizes only one case. PHP 7 also supports more complex expressions * that can return null. So, for instance, if log is defined, log("foo") ?? "..." works, * but log($a["foo"]) ?? "..." does not if $a["foo"] is not defined. More advanced * cases might be implemented as an optimizer node visitor, but has not been done * as benefits are probably not worth the added complexity. */ if (\PHP_VERSION_ID >= 70000 && $this->getNode('expr2') instanceof NameExpression) { $this->getNode('expr2')->setAttribute('always_defined', true); $compiler ->raw('((') ->subcompile($this->getNode('expr2')) ->raw(') ?? (') ->subcompile($this->getNode('expr3')) ->raw('))') ; } else { parent::compile($compiler); } } } class_alias('Twig\Node\Expression\NullCoalesceExpression', 'Twig_Node_Expression_NullCoalesce'); db/login/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php000064400000001565151502156020022036 0ustar00 */ class DivisiblebyTest extends TestExpression { public function compile(Compiler $compiler) { $compiler ->raw('(0 == ') ->subcompile($this->getNode('node')) ->raw(' % ') ->subcompile($this->getNode('arguments')->getNode(0)) ->raw(')') ; } } class_alias('Twig\Node\Expression\Test\DivisiblebyTest', 'Twig_Node_Expression_Test_Divisibleby'); db/login/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php000064400000001367151502156020020466 0ustar00 */ class EvenTest extends TestExpression { public function compile(Compiler $compiler) { $compiler ->raw('(') ->subcompile($this->getNode('node')) ->raw(' % 2 == 0') ->raw(')') ; } } class_alias('Twig\Node\Expression\Test\EvenTest', 'Twig_Node_Expression_Test_Even'); db/login/vendor/twig/twig/src/Node/Expression/Test/OddTest.php000064400000001362151502156020020272 0ustar00 */ class OddTest extends TestExpression { public function compile(Compiler $compiler) { $compiler ->raw('(') ->subcompile($this->getNode('node')) ->raw(' % 2 == 1') ->raw(')') ; } } class_alias('Twig\Node\Expression\Test\OddTest', 'Twig_Node_Expression_Test_Odd'); db/login/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php000064400000004606151502156020021126 0ustar00 */ class DefinedTest extends TestExpression { public function __construct(\Twig_NodeInterface $node, $name, \Twig_NodeInterface $arguments = null, $lineno) { if ($node instanceof NameExpression) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof GetAttrExpression) { $node->setAttribute('is_defined_test', true); $this->changeIgnoreStrictCheck($node); } elseif ($node instanceof BlockReferenceExpression) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) { $node = new ConstantExpression(true, $node->getTemplateLine()); } else { throw new SyntaxError('The "defined" test only works with simple variables.', $lineno); } parent::__construct($node, $name, $arguments, $lineno); } protected function changeIgnoreStrictCheck(GetAttrExpression $node) { $node->setAttribute('ignore_strict_check', true); if ($node->getNode('node') instanceof GetAttrExpression) { $this->changeIgnoreStrictCheck($node->getNode('node')); } } public function compile(Compiler $compiler) { $compiler->subcompile($this->getNode('node')); } } class_alias('Twig\Node\Expression\Test\DefinedTest', 'Twig_Node_Expression_Test_Defined'); db/login/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php000064400000002363151502156020021357 0ustar00 */ class ConstantTest extends TestExpression { public function compile(Compiler $compiler) { $compiler ->raw('(') ->subcompile($this->getNode('node')) ->raw(' === constant(') ; if ($this->getNode('arguments')->hasNode(1)) { $compiler ->raw('get_class(') ->subcompile($this->getNode('arguments')->getNode(1)) ->raw(')."::".') ; } $compiler ->subcompile($this->getNode('arguments')->getNode(0)) ->raw('))') ; } } class_alias('Twig\Node\Expression\Test\ConstantTest', 'Twig_Node_Expression_Test_Constant'); db/login/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php000064400000001504151502156020020773 0ustar00 */ class SameasTest extends TestExpression { public function compile(Compiler $compiler) { $compiler ->raw('(') ->subcompile($this->getNode('node')) ->raw(' === ') ->subcompile($this->getNode('arguments')->getNode(0)) ->raw(')') ; } } class_alias('Twig\Node\Expression\Test\SameasTest', 'Twig_Node_Expression_Test_Sameas'); db/login/vendor/twig/twig/src/Node/Expression/Test/NullTest.php000064400000001345151502156020020477 0ustar00 */ class NullTest extends TestExpression { public function compile(Compiler $compiler) { $compiler ->raw('(null === ') ->subcompile($this->getNode('node')) ->raw(')') ; } } class_alias('Twig\Node\Expression\Test\NullTest', 'Twig_Node_Expression_Test_Null'); db/login/vendor/twig/twig/src/Node/EmbedNode.php000064400000003015151502156020015465 0ustar00 */ class EmbedNode extends IncludeNode { // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module) public function __construct($name, $index, AbstractExpression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) { parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); $this->setAttribute('name', $name); // to be removed in 2.0, used name instead $this->setAttribute('filename', $name); $this->setAttribute('index', $index); } protected function addGetTemplate(Compiler $compiler) { $compiler ->write('$this->loadTemplate(') ->string($this->getAttribute('name')) ->raw(', ') ->repr($this->getTemplateName()) ->raw(', ') ->repr($this->getTemplateLine()) ->raw(', ') ->string($this->getAttribute('index')) ->raw(')') ; } } class_alias('Twig\Node\EmbedNode', 'Twig_Node_Embed'); db/login/vendor/twig/twig/src/Node/SetTempNode.php000064400000001644151502156020016040 0ustar00 $name], $lineno); } public function compile(Compiler $compiler) { $name = $this->getAttribute('name'); $compiler ->addDebugInfo($this) ->write('if (isset($context[') ->string($name) ->raw('])) { $_') ->raw($name) ->raw('_ = $context[') ->repr($name) ->raw(']; } else { $_') ->raw($name) ->raw("_ = null; }\n") ; } } class_alias('Twig\Node\SetTempNode', 'Twig_Node_SetTemp'); db/login/vendor/twig/twig/src/Node/AutoEscapeNode.php000064400000001627151502156020016511 0ustar00 */ class AutoEscapeNode extends Node { public function __construct($value, \Twig_NodeInterface $body, $lineno, $tag = 'autoescape') { parent::__construct(['body' => $body], ['value' => $value], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->subcompile($this->getNode('body')); } } class_alias('Twig\Node\AutoEscapeNode', 'Twig_Node_AutoEscape'); db/login/vendor/twig/twig/src/Node/IfNode.php000064400000003273151502156020015015 0ustar00 */ class IfNode extends Node { public function __construct(\Twig_NodeInterface $tests, \Twig_NodeInterface $else = null, $lineno, $tag = null) { $nodes = ['tests' => $tests]; if (null !== $else) { $nodes['else'] = $else; } parent::__construct($nodes, [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->addDebugInfo($this); for ($i = 0, $count = \count($this->getNode('tests')); $i < $count; $i += 2) { if ($i > 0) { $compiler ->outdent() ->write('} elseif (') ; } else { $compiler ->write('if (') ; } $compiler ->subcompile($this->getNode('tests')->getNode($i)) ->raw(") {\n") ->indent() ->subcompile($this->getNode('tests')->getNode($i + 1)) ; } if ($this->hasNode('else')) { $compiler ->outdent() ->write("} else {\n") ->indent() ->subcompile($this->getNode('else')) ; } $compiler ->outdent() ->write("}\n"); } } class_alias('Twig\Node\IfNode', 'Twig_Node_If'); db/login/vendor/twig/twig/src/Node/SpacelessNode.php000064400000002153151502156020016375 0ustar00 */ class SpacelessNode extends Node { public function __construct(\Twig_NodeInterface $body, $lineno, $tag = 'spaceless') { parent::__construct(['body' => $body], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ; if ($compiler->getEnvironment()->isDebug()) { $compiler->write("ob_start();\n"); } else { $compiler->write("ob_start(function () { return ''; });\n"); } $compiler ->subcompile($this->getNode('body')) ->write("echo trim(preg_replace('/>\s+<', ob_get_clean()));\n") ; } } class_alias('Twig\Node\SpacelessNode', 'Twig_Node_Spaceless'); db/login/vendor/twig/twig/src/Node/DoNode.php000064400000001502151502156020015012 0ustar00 */ class DoNode extends Node { public function __construct(AbstractExpression $expr, $lineno, $tag = null) { parent::__construct(['expr' => $expr], [], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write('') ->subcompile($this->getNode('expr')) ->raw(";\n") ; } } class_alias('Twig\Node\DoNode', 'Twig_Node_Do'); db/login/vendor/twig/twig/src/Node/CheckSecurityNode.php000064400000006025151502156020017222 0ustar00 */ class CheckSecurityNode extends Node { protected $usedFilters; protected $usedTags; protected $usedFunctions; public function __construct(array $usedFilters, array $usedTags, array $usedFunctions) { $this->usedFilters = $usedFilters; $this->usedTags = $usedTags; $this->usedFunctions = $usedFunctions; parent::__construct(); } public function compile(Compiler $compiler) { $tags = $filters = $functions = []; foreach (['tags', 'filters', 'functions'] as $type) { foreach ($this->{'used'.ucfirst($type)} as $name => $node) { if ($node instanceof Node) { ${$type}[$name] = $node->getTemplateLine(); } else { ${$type}[$node] = null; } } } $compiler ->write("\$this->sandbox = \$this->env->getExtension('\Twig\Extension\SandboxExtension');\n") ->write('$tags = ')->repr(array_filter($tags))->raw(";\n") ->write('$filters = ')->repr(array_filter($filters))->raw(";\n") ->write('$functions = ')->repr(array_filter($functions))->raw(";\n\n") ->write("try {\n") ->indent() ->write("\$this->sandbox->checkSecurity(\n") ->indent() ->write(!$tags ? "[],\n" : "['".implode("', '", array_keys($tags))."'],\n") ->write(!$filters ? "[],\n" : "['".implode("', '", array_keys($filters))."'],\n") ->write(!$functions ? "[]\n" : "['".implode("', '", array_keys($functions))."']\n") ->outdent() ->write(");\n") ->outdent() ->write("} catch (SecurityError \$e) {\n") ->indent() ->write("\$e->setSourceContext(\$this->getSourceContext());\n\n") ->write("if (\$e instanceof SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n") ->indent() ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n") ->outdent() ->write("} elseif (\$e instanceof SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n") ->indent() ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n") ->outdent() ->write("} elseif (\$e instanceof SecurityNotAllowedFunctionError && isset(\$functions[\$e->getFunctionName()])) {\n") ->indent() ->write("\$e->setTemplateLine(\$functions[\$e->getFunctionName()]);\n") ->outdent() ->write("}\n\n") ->write("throw \$e;\n") ->outdent() ->write("}\n\n") ; } } class_alias('Twig\Node\CheckSecurityNode', 'Twig_Node_CheckSecurity'); db/login/vendor/twig/twig/src/Node/TextNode.php000064400000001462151502156020015401 0ustar00 */ class TextNode extends Node implements NodeOutputInterface { public function __construct($data, $lineno) { parent::__construct([], ['data' => $data], $lineno); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write('echo ') ->string($this->getAttribute('data')) ->raw(";\n") ; } } class_alias('Twig\Node\TextNode', 'Twig_Node_Text'); db/login/vendor/twig/twig/src/Node/BlockReferenceNode.php000064400000001561151502156020017326 0ustar00 */ class BlockReferenceNode extends Node implements NodeOutputInterface { public function __construct($name, $lineno, $tag = null) { parent::__construct([], ['name' => $name], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) ; } } class_alias('Twig\Node\BlockReferenceNode', 'Twig_Node_BlockReference'); db/login/vendor/twig/twig/src/Node/BodyNode.php000064400000000615151502156020015351 0ustar00 */ class BodyNode extends Node { } class_alias('Twig\Node\BodyNode', 'Twig_Node_Body'); db/login/vendor/twig/twig/src/Node/IncludeNode.php000064400000006174151502156020016045 0ustar00 */ class IncludeNode extends Node implements NodeOutputInterface { public function __construct(AbstractExpression $expr, AbstractExpression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) { $nodes = ['expr' => $expr]; if (null !== $variables) { $nodes['variables'] = $variables; } parent::__construct($nodes, ['only' => (bool) $only, 'ignore_missing' => (bool) $ignoreMissing], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler->addDebugInfo($this); if ($this->getAttribute('ignore_missing')) { $template = $compiler->getVarName(); $compiler ->write(sprintf("$%s = null;\n", $template)) ->write("try {\n") ->indent() ->write(sprintf('$%s = ', $template)) ; $this->addGetTemplate($compiler); $compiler ->raw(";\n") ->outdent() ->write("} catch (LoaderError \$e) {\n") ->indent() ->write("// ignore missing template\n") ->outdent() ->write("}\n") ->write(sprintf("if ($%s) {\n", $template)) ->indent() ->write(sprintf('$%s->display(', $template)) ; $this->addTemplateArguments($compiler); $compiler ->raw(");\n") ->outdent() ->write("}\n") ; } else { $this->addGetTemplate($compiler); $compiler->raw('->display('); $this->addTemplateArguments($compiler); $compiler->raw(");\n"); } } protected function addGetTemplate(Compiler $compiler) { $compiler ->write('$this->loadTemplate(') ->subcompile($this->getNode('expr')) ->raw(', ') ->repr($this->getTemplateName()) ->raw(', ') ->repr($this->getTemplateLine()) ->raw(')') ; } protected function addTemplateArguments(Compiler $compiler) { if (!$this->hasNode('variables')) { $compiler->raw(false === $this->getAttribute('only') ? '$context' : '[]'); } elseif (false === $this->getAttribute('only')) { $compiler ->raw('twig_array_merge($context, ') ->subcompile($this->getNode('variables')) ->raw(')') ; } else { $compiler->raw('twig_to_array('); $compiler->subcompile($this->getNode('variables')); $compiler->raw(')'); } } } class_alias('Twig\Node\IncludeNode', 'Twig_Node_Include'); db/login/vendor/twig/twig/src/Node/ForNode.php000064400000010365151502156020015205 0ustar00 */ class ForNode extends Node { protected $loop; public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, AbstractExpression $ifexpr = null, \Twig_NodeInterface $body, \Twig_NodeInterface $else = null, $lineno, $tag = null) { $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]); if (null !== $ifexpr) { $body = new IfNode(new Node([$ifexpr, $body]), null, $lineno, $tag); } $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body]; if (null !== $else) { $nodes['else'] = $else; } parent::__construct($nodes, ['with_loop' => true, 'ifexpr' => null !== $ifexpr], $lineno, $tag); } public function compile(Compiler $compiler) { $compiler ->addDebugInfo($this) ->write("\$context['_parent'] = \$context;\n") ->write("\$context['_seq'] = twig_ensure_traversable(") ->subcompile($this->getNode('seq')) ->raw(");\n") ; if ($this->hasNode('else')) { $compiler->write("\$context['_iterated'] = false;\n"); } if ($this->getAttribute('with_loop')) { $compiler ->write("\$context['loop'] = [\n") ->write(" 'parent' => \$context['_parent'],\n") ->write(" 'index0' => 0,\n") ->write(" 'index' => 1,\n") ->write(" 'first' => true,\n") ->write("];\n") ; if (!$this->getAttribute('ifexpr')) { $compiler ->write("if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof \Countable)) {\n") ->indent() ->write("\$length = count(\$context['_seq']);\n") ->write("\$context['loop']['revindex0'] = \$length - 1;\n") ->write("\$context['loop']['revindex'] = \$length;\n") ->write("\$context['loop']['length'] = \$length;\n") ->write("\$context['loop']['last'] = 1 === \$length;\n") ->outdent() ->write("}\n") ; } } $this->loop->setAttribute('else', $this->hasNode('else')); $this->loop->setAttribute('with_loop', $this->getAttribute('with_loop')); $this->loop->setAttribute('ifexpr', $this->getAttribute('ifexpr')); $compiler ->write("foreach (\$context['_seq'] as ") ->subcompile($this->getNode('key_target')) ->raw(' => ') ->subcompile($this->getNode('value_target')) ->raw(") {\n") ->indent() ->subcompile($this->getNode('body')) ->outdent() ->write("}\n") ; if ($this->hasNode('else')) { $compiler ->write("if (!\$context['_iterated']) {\n") ->indent() ->subcompile($this->getNode('else')) ->outdent() ->write("}\n") ; } $compiler->write("\$_parent = \$context['_parent'];\n"); // remove some "private" loop variables (needed for nested loops) $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n"); // keep the values set in the inner context for variables defined in the outer context $compiler->write("\$context = array_intersect_key(\$context, \$_parent) + \$_parent;\n"); } } class_alias('Twig\Node\ForNode', 'Twig_Node_For'); db/login/vendor/twig/twig/src/Node/SetNode.php000064400000006547151502156020015221 0ustar00 */ class SetNode extends Node implements NodeCaptureInterface { public function __construct($capture, \Twig_NodeInterface $names, \Twig_NodeInterface $values, $lineno, $tag = null) { parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => false], $lineno, $tag); /* * Optimizes the node when capture is used for a large block of text. * * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig\Markup("foo"); */ if ($this->getAttribute('capture')) { $this->setAttribute('safe', true); $values = $this->getNode('values'); if ($values instanceof TextNode) { $this->setNode('values', new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine())); $this->setAttribute('capture', false); } } } public function compile(Compiler $compiler) { $compiler->addDebugInfo($this); if (\count($this->getNode('names')) > 1) { $compiler->write('list('); foreach ($this->getNode('names') as $idx => $node) { if ($idx) { $compiler->raw(', '); } $compiler->subcompile($node); } $compiler->raw(')'); } else { if ($this->getAttribute('capture')) { if ($compiler->getEnvironment()->isDebug()) { $compiler->write("ob_start();\n"); } else { $compiler->write("ob_start(function () { return ''; });\n"); } $compiler ->subcompile($this->getNode('values')) ; } $compiler->subcompile($this->getNode('names'), false); if ($this->getAttribute('capture')) { $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset())"); } } if (!$this->getAttribute('capture')) { $compiler->raw(' = '); if (\count($this->getNode('names')) > 1) { $compiler->write('['); foreach ($this->getNode('values') as $idx => $value) { if ($idx) { $compiler->raw(', '); } $compiler->subcompile($value); } $compiler->raw(']'); } else { if ($this->getAttribute('safe')) { $compiler ->raw("('' === \$tmp = ") ->subcompile($this->getNode('values')) ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") ; } else { $compiler->subcompile($this->getNode('values')); } } } $compiler->raw(";\n"); } } class_alias('Twig\Node\SetNode', 'Twig_Node_Set'); db/login/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php000064400000002007151502156020022327 0ustar00 */ class SecurityNotAllowedMethodError extends SecurityError { private $className; private $methodName; public function __construct($message, $className, $methodName, $lineno = -1, $filename = null, \Exception $previous = null) { parent::__construct($message, $lineno, $filename, $previous); $this->className = $className; $this->methodName = $methodName; } public function getClassName() { return $this->className; } public function getMethodName() { return $this->methodName; } } class_alias('Twig\Sandbox\SecurityNotAllowedMethodError', 'Twig_Sandbox_SecurityNotAllowedMethodError'); db/login/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php000064400000002033151502156020022732 0ustar00 */ class SecurityNotAllowedPropertyError extends SecurityError { private $className; private $propertyName; public function __construct($message, $className, $propertyName, $lineno = -1, $filename = null, \Exception $previous = null) { parent::__construct($message, $lineno, $filename, $previous); $this->className = $className; $this->propertyName = $propertyName; } public function getClassName() { return $this->className; } public function getPropertyName() { return $this->propertyName; } } class_alias('Twig\Sandbox\SecurityNotAllowedPropertyError', 'Twig_Sandbox_SecurityNotAllowedPropertyError'); db/login/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php000064400000001555151502156020022343 0ustar00 */ class SecurityNotAllowedFilterError extends SecurityError { private $filterName; public function __construct($message, $functionName, $lineno = -1, $filename = null, \Exception $previous = null) { parent::__construct($message, $lineno, $filename, $previous); $this->filterName = $functionName; } public function getFilterName() { return $this->filterName; } } class_alias('Twig\Sandbox\SecurityNotAllowedFilterError', 'Twig_Sandbox_SecurityNotAllowedFilterError'); db/login/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php000064400000001575151502156020022705 0ustar00 */ class SecurityNotAllowedFunctionError extends SecurityError { private $functionName; public function __construct($message, $functionName, $lineno = -1, $filename = null, \Exception $previous = null) { parent::__construct($message, $lineno, $filename, $previous); $this->functionName = $functionName; } public function getFunctionName() { return $this->functionName; } } class_alias('Twig\Sandbox\SecurityNotAllowedFunctionError', 'Twig_Sandbox_SecurityNotAllowedFunctionError'); db/login/vendor/twig/twig/src/Sandbox/SecurityPolicy.php000064400000007723151502156020017355 0ustar00 */ class SecurityPolicy implements SecurityPolicyInterface { protected $allowedTags; protected $allowedFilters; protected $allowedMethods; protected $allowedProperties; protected $allowedFunctions; public function __construct(array $allowedTags = [], array $allowedFilters = [], array $allowedMethods = [], array $allowedProperties = [], array $allowedFunctions = []) { $this->allowedTags = $allowedTags; $this->allowedFilters = $allowedFilters; $this->setAllowedMethods($allowedMethods); $this->allowedProperties = $allowedProperties; $this->allowedFunctions = $allowedFunctions; } public function setAllowedTags(array $tags) { $this->allowedTags = $tags; } public function setAllowedFilters(array $filters) { $this->allowedFilters = $filters; } public function setAllowedMethods(array $methods) { $this->allowedMethods = []; foreach ($methods as $class => $m) { $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]); } } public function setAllowedProperties(array $properties) { $this->allowedProperties = $properties; } public function setAllowedFunctions(array $functions) { $this->allowedFunctions = $functions; } public function checkSecurity($tags, $filters, $functions) { foreach ($tags as $tag) { if (!\in_array($tag, $this->allowedTags)) { throw new SecurityNotAllowedTagError(sprintf('Tag "%s" is not allowed.', $tag), $tag); } } foreach ($filters as $filter) { if (!\in_array($filter, $this->allowedFilters)) { throw new SecurityNotAllowedFilterError(sprintf('Filter "%s" is not allowed.', $filter), $filter); } } foreach ($functions as $function) { if (!\in_array($function, $this->allowedFunctions)) { throw new SecurityNotAllowedFunctionError(sprintf('Function "%s" is not allowed.', $function), $function); } } } public function checkMethodAllowed($obj, $method) { if ($obj instanceof \Twig_TemplateInterface || $obj instanceof Markup) { return; } $allowed = false; $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); foreach ($this->allowedMethods as $class => $methods) { if ($obj instanceof $class) { $allowed = \in_array($method, $methods); break; } } if (!$allowed) { $class = \get_class($obj); throw new SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, $class), $class, $method); } } public function checkPropertyAllowed($obj, $property) { $allowed = false; foreach ($this->allowedProperties as $class => $properties) { if ($obj instanceof $class) { $allowed = \in_array($property, \is_array($properties) ? $properties : [$properties]); break; } } if (!$allowed) { $class = \get_class($obj); throw new SecurityNotAllowedPropertyError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, $class), $class, $property); } } } class_alias('Twig\Sandbox\SecurityPolicy', 'Twig_Sandbox_SecurityPolicy'); db/login/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php000064400000001224151502156020021164 0ustar00 */ interface SecurityPolicyInterface { public function checkSecurity($tags, $filters, $functions); public function checkMethodAllowed($obj, $method); public function checkPropertyAllowed($obj, $method); } class_alias('Twig\Sandbox\SecurityPolicyInterface', 'Twig_Sandbox_SecurityPolicyInterface'); db/login/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php000064400000001513151502156020021623 0ustar00 */ class SecurityNotAllowedTagError extends SecurityError { private $tagName; public function __construct($message, $tagName, $lineno = -1, $filename = null, \Exception $previous = null) { parent::__construct($message, $lineno, $filename, $previous); $this->tagName = $tagName; } public function getTagName() { return $this->tagName; } } class_alias('Twig\Sandbox\SecurityNotAllowedTagError', 'Twig_Sandbox_SecurityNotAllowedTagError'); db/login/vendor/twig/twig/src/Sandbox/SecurityError.php000064400000000743151502156020017202 0ustar00 */ class SecurityError extends Error { } class_alias('Twig\Sandbox\SecurityError', 'Twig_Sandbox_SecurityError'); db/login/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php000064400000001526151502156020020615 0ustar00 */ class LeaveProfileNode extends Node { public function __construct($varName) { parent::__construct([], ['var_name' => $varName]); } public function compile(Compiler $compiler) { $compiler ->write("\n") ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) ; } } class_alias('Twig\Profiler\Node\LeaveProfileNode', 'Twig_Profiler_Node_LeaveProfile'); db/login/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php000064400000002432151502156020020633 0ustar00 */ class EnterProfileNode extends Node { public function __construct($extensionName, $type, $name, $varName) { parent::__construct([], ['extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName]); } public function compile(Compiler $compiler) { $compiler ->write(sprintf('$%s = $this->env->getExtension(', $this->getAttribute('var_name'))) ->repr($this->getAttribute('extension_name')) ->raw(");\n") ->write(sprintf('$%s->enter($%s = new \Twig\Profiler\Profile($this->getTemplateName(), ', $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) ->repr($this->getAttribute('type')) ->raw(', ') ->repr($this->getAttribute('name')) ->raw("));\n\n") ; } } class_alias('Twig\Profiler\Node\EnterProfileNode', 'Twig_Profiler_Node_EnterProfile'); db/login/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php000064400000004563151502156020022766 0ustar00 * * @final */ class ProfilerNodeVisitor extends AbstractNodeVisitor { private $extensionName; public function __construct($extensionName) { $this->extensionName = $extensionName; } protected function doEnterNode(Node $node, Environment $env) { return $node; } protected function doLeaveNode(Node $node, Environment $env) { if ($node instanceof ModuleNode) { $varName = $this->getVarName(); $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $varName), $node->getNode('display_start')])); $node->setNode('display_end', new Node([new LeaveProfileNode($varName), $node->getNode('display_end')])); } elseif ($node instanceof BlockNode) { $varName = $this->getVarName(); $node->setNode('body', new BodyNode([ new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $varName), $node->getNode('body'), new LeaveProfileNode($varName), ])); } elseif ($node instanceof MacroNode) { $varName = $this->getVarName(); $node->setNode('body', new BodyNode([ new EnterProfileNode($this->extensionName, Profile::MACRO, $node->getAttribute('name'), $varName), $node->getNode('body'), new LeaveProfileNode($varName), ])); } return $node; } private function getVarName() { return sprintf('__internal_%s', hash('sha256', $this->extensionName)); } public function getPriority() { return 0; } } class_alias('Twig\Profiler\NodeVisitor\ProfilerNodeVisitor', 'Twig_Profiler_NodeVisitor_Profiler'); db/login/vendor/twig/twig/src/Profiler/Profile.php000064400000007772151502156020016156 0ustar00 * * @final */ class Profile implements \IteratorAggregate, \Serializable { const ROOT = 'ROOT'; const BLOCK = 'block'; const TEMPLATE = 'template'; const MACRO = 'macro'; private $template; private $name; private $type; private $starts = []; private $ends = []; private $profiles = []; public function __construct($template = 'main', $type = self::ROOT, $name = 'main') { $this->template = $template; $this->type = $type; $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name; $this->enter(); } public function getTemplate() { return $this->template; } public function getType() { return $this->type; } public function getName() { return $this->name; } public function isRoot() { return self::ROOT === $this->type; } public function isTemplate() { return self::TEMPLATE === $this->type; } public function isBlock() { return self::BLOCK === $this->type; } public function isMacro() { return self::MACRO === $this->type; } public function getProfiles() { return $this->profiles; } public function addProfile(self $profile) { $this->profiles[] = $profile; } /** * Returns the duration in microseconds. * * @return float */ public function getDuration() { if ($this->isRoot() && $this->profiles) { // for the root node with children, duration is the sum of all child durations $duration = 0; foreach ($this->profiles as $profile) { $duration += $profile->getDuration(); } return $duration; } return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0; } /** * Returns the memory usage in bytes. * * @return int */ public function getMemoryUsage() { return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0; } /** * Returns the peak memory usage in bytes. * * @return int */ public function getPeakMemoryUsage() { return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0; } /** * Starts the profiling. */ public function enter() { $this->starts = [ 'wt' => microtime(true), 'mu' => memory_get_usage(), 'pmu' => memory_get_peak_usage(), ]; } /** * Stops the profiling. */ public function leave() { $this->ends = [ 'wt' => microtime(true), 'mu' => memory_get_usage(), 'pmu' => memory_get_peak_usage(), ]; } public function reset() { $this->starts = $this->ends = $this->profiles = []; $this->enter(); } public function getIterator() { return new \ArrayIterator($this->profiles); } public function serialize() { return serialize($this->__serialize()); } public function unserialize($data) { $this->__unserialize(unserialize($data)); } /** * @internal */ public function __serialize() { return [$this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles]; } /** * @internal */ public function __unserialize(array $data) { list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = $data; } } class_alias('Twig\Profiler\Profile', 'Twig_Profiler_Profile'); db/login/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php000064400000003346151502156020020032 0ustar00 */ abstract class BaseDumper { private $root; public function dump(Profile $profile) { return $this->dumpProfile($profile); } abstract protected function formatTemplate(Profile $profile, $prefix); abstract protected function formatNonTemplate(Profile $profile, $prefix); abstract protected function formatTime(Profile $profile, $percent); private function dumpProfile(Profile $profile, $prefix = '', $sibling = false) { if ($profile->isRoot()) { $this->root = $profile->getDuration(); $start = $profile->getName(); } else { if ($profile->isTemplate()) { $start = $this->formatTemplate($profile, $prefix); } else { $start = $this->formatNonTemplate($profile, $prefix); } $prefix .= $sibling ? '│ ' : ' '; } $percent = $this->root ? $profile->getDuration() / $this->root * 100 : 0; if ($profile->getDuration() * 1000 < 1) { $str = $start."\n"; } else { $str = sprintf("%s %s\n", $start, $this->formatTime($profile, $percent)); } $nCount = \count($profile->getProfiles()); foreach ($profile as $i => $p) { $str .= $this->dumpProfile($p, $prefix, $i + 1 !== $nCount); } return $str; } } class_alias('Twig\Profiler\Dumper\BaseDumper', 'Twig_Profiler_Dumper_Base'); db/login/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php000064400000001675151502156020020107 0ustar00 * * @final */ class TextDumper extends BaseDumper { protected function formatTemplate(Profile $profile, $prefix) { return sprintf('%s└ %s', $prefix, $profile->getTemplate()); } protected function formatNonTemplate(Profile $profile, $prefix) { return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName()); } protected function formatTime(Profile $profile, $percent) { return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent); } } class_alias('Twig\Profiler\Dumper\TextDumper', 'Twig_Profiler_Dumper_Text'); db/login/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php000064400000004016151502156020021035 0ustar00 * * @final */ class BlackfireDumper { public function dump(Profile $profile) { $data = []; $this->dumpProfile('main()', $profile, $data); $this->dumpChildren('main()', $profile, $data); $start = sprintf('%f', microtime(true)); $str = << $values) { $str .= "{$name}//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n"; } return $str; } private function dumpChildren($parent, Profile $profile, &$data) { foreach ($profile as $p) { if ($p->isTemplate()) { $name = $p->getTemplate(); } else { $name = sprintf('%s::%s(%s)', $p->getTemplate(), $p->getType(), $p->getName()); } $this->dumpProfile(sprintf('%s==>%s', $parent, $name), $p, $data); $this->dumpChildren($name, $p, $data); } } private function dumpProfile($edge, Profile $profile, &$data) { if (isset($data[$edge])) { ++$data[$edge]['ct']; $data[$edge]['wt'] += floor($profile->getDuration() * 1000000); $data[$edge]['mu'] += $profile->getMemoryUsage(); $data[$edge]['pmu'] += $profile->getPeakMemoryUsage(); } else { $data[$edge] = [ 'ct' => 1, 'wt' => floor($profile->getDuration() * 1000000), 'mu' => $profile->getMemoryUsage(), 'pmu' => $profile->getPeakMemoryUsage(), ]; } } } class_alias('Twig\Profiler\Dumper\BlackfireDumper', 'Twig_Profiler_Dumper_Blackfire'); db/login/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php000064400000002727151502156020020066 0ustar00 * * @final */ class HtmlDumper extends BaseDumper { private static $colors = [ 'block' => '#dfd', 'macro' => '#ddf', 'template' => '#ffd', 'big' => '#d44', ]; public function dump(Profile $profile) { return '
          '.parent::dump($profile).'
          '; } protected function formatTemplate(Profile $profile, $prefix) { return sprintf('%s└ %s', $prefix, self::$colors['template'], $profile->getTemplate()); } protected function formatNonTemplate(Profile $profile, $prefix) { return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName()); } protected function formatTime(Profile $profile, $percent) { return sprintf('%.2fms/%.0f%%', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent); } } class_alias('Twig\Profiler\Dumper\HtmlDumper', 'Twig_Profiler_Dumper_Html'); db/login/vendor/twig/twig/src/Lexer.php000064400000050144151502156020014042 0ustar00 */ class Lexer implements \Twig_LexerInterface { protected $tokens; protected $code; protected $cursor; protected $lineno; protected $end; protected $state; protected $states; protected $brackets; protected $env; // to be renamed to $name in 2.0 (where it is private) protected $filename; protected $options; protected $regexes; protected $position; protected $positions; protected $currentVarBlockLine; private $source; const STATE_DATA = 0; const STATE_BLOCK = 1; const STATE_VAR = 2; const STATE_STRING = 3; const STATE_INTERPOLATION = 4; const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A'; const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; const REGEX_DQ_STRING_DELIM = '/"/A'; const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; const PUNCTUATION = '()[]{}?:.,|'; public function __construct(Environment $env, array $options = []) { $this->env = $env; $this->options = array_merge([ 'tag_comment' => ['{#', '#}'], 'tag_block' => ['{%', '%}'], 'tag_variable' => ['{{', '}}'], 'whitespace_trim' => '-', 'whitespace_line_trim' => '~', 'whitespace_line_chars' => ' \t\0\x0B', 'interpolation' => ['#{', '}'], ], $options); // when PHP 7.3 is the min version, we will be able to remove the '#' part in preg_quote as it's part of the default $this->regexes = [ // }} 'lex_var' => '{ \s* (?:'. preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '#').'\s*'. // -}}\s* '|'. preg_quote($this->options['whitespace_line_trim'].$this->options['tag_variable'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~}}[ \t\0\x0B]* '|'. preg_quote($this->options['tag_variable'][1], '#'). // }} ') }Ax', // %} 'lex_block' => '{ \s* (?:'. preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*\n?'. // -%}\s*\n? '|'. preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* '|'. preg_quote($this->options['tag_block'][1], '#').'\n?'. // %}\n? ') }Ax', // {% endverbatim %} 'lex_raw_data' => '{'. preg_quote($this->options['tag_block'][0], '#'). // {% '('. $this->options['whitespace_trim']. // - '|'. $this->options['whitespace_line_trim']. // ~ ')?\s*'. '(?:end%s)'. // endraw or endverbatim '\s*'. '(?:'. preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%} '|'. preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* '|'. preg_quote($this->options['tag_block'][1], '#'). // %} ') }sx', 'operator' => $this->getOperatorRegex(), // #} 'lex_comment' => '{ (?:'. preg_quote($this->options['whitespace_trim']).preg_quote($this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n? '|'. preg_quote($this->options['whitespace_line_trim'].$this->options['tag_comment'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~#}[ \t\0\x0B]* '|'. preg_quote($this->options['tag_comment'][1], '#').'\n?'. // #}\n? ') }sx', // verbatim %} 'lex_block_raw' => '{ \s* (raw|verbatim) \s* (?:'. preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%}\s* '|'. preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* '|'. preg_quote($this->options['tag_block'][1], '#'). // %} ') }Asx', 'lex_block_line' => '{\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '#').'}As', // {{ or {% or {# 'lex_tokens_start' => '{ ('. preg_quote($this->options['tag_variable'][0], '#'). // {{ '|'. preg_quote($this->options['tag_block'][0], '#'). // {% '|'. preg_quote($this->options['tag_comment'][0], '#'). // {# ')('. preg_quote($this->options['whitespace_trim'], '#'). // - '|'. preg_quote($this->options['whitespace_line_trim'], '#'). // ~ ')? }sx', 'interpolation_start' => '{'.preg_quote($this->options['interpolation'][0], '#').'\s*}A', 'interpolation_end' => '{\s*'.preg_quote($this->options['interpolation'][1], '#').'}A', ]; } public function tokenize($code, $name = null) { if (!$code instanceof Source) { @trigger_error(sprintf('Passing a string as the $code argument of %s() is deprecated since version 1.27 and will be removed in 2.0. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED); $this->source = new Source($code, $name); } else { $this->source = $code; } if (((int) ini_get('mbstring.func_overload')) & 2) { @trigger_error('Support for having "mbstring.func_overload" different from 0 is deprecated version 1.29 and will be removed in 2.0.', E_USER_DEPRECATED); } if (\function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) { $mbEncoding = mb_internal_encoding(); mb_internal_encoding('ASCII'); } else { $mbEncoding = null; } $this->code = str_replace(["\r\n", "\r"], "\n", $this->source->getCode()); $this->filename = $this->source->getName(); $this->cursor = 0; $this->lineno = 1; $this->end = \strlen($this->code); $this->tokens = []; $this->state = self::STATE_DATA; $this->states = []; $this->brackets = []; $this->position = -1; // find all token starts in one go preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE); $this->positions = $matches; while ($this->cursor < $this->end) { // dispatch to the lexing functions depending // on the current state switch ($this->state) { case self::STATE_DATA: $this->lexData(); break; case self::STATE_BLOCK: $this->lexBlock(); break; case self::STATE_VAR: $this->lexVar(); break; case self::STATE_STRING: $this->lexString(); break; case self::STATE_INTERPOLATION: $this->lexInterpolation(); break; } } $this->pushToken(Token::EOF_TYPE); if (!empty($this->brackets)) { list($expect, $lineno) = array_pop($this->brackets); throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); } if ($mbEncoding) { mb_internal_encoding($mbEncoding); } return new TokenStream($this->tokens, $this->source); } protected function lexData() { // if no matches are left we return the rest of the template as simple text token if ($this->position == \count($this->positions[0]) - 1) { $this->pushToken(Token::TEXT_TYPE, substr($this->code, $this->cursor)); $this->cursor = $this->end; return; } // Find the first token after the current cursor $position = $this->positions[0][++$this->position]; while ($position[1] < $this->cursor) { if ($this->position == \count($this->positions[0]) - 1) { return; } $position = $this->positions[0][++$this->position]; } // push the template text first $text = $textContent = substr($this->code, $this->cursor, $position[1] - $this->cursor); // trim? if (isset($this->positions[2][$this->position][0])) { if ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0]) { // whitespace_trim detected ({%-, {{- or {#-) $text = rtrim($text); } elseif ($this->options['whitespace_line_trim'] === $this->positions[2][$this->position][0]) { // whitespace_line_trim detected ({%~, {{~ or {#~) // don't trim \r and \n $text = rtrim($text, " \t\0\x0B"); } } $this->pushToken(Token::TEXT_TYPE, $text); $this->moveCursor($textContent.$position[0]); switch ($this->positions[1][$this->position][0]) { case $this->options['tag_comment'][0]: $this->lexComment(); break; case $this->options['tag_block'][0]: // raw data? if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, 0, $this->cursor)) { $this->moveCursor($match[0]); $this->lexRawData($match[1]); // {% line \d+ %} } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, 0, $this->cursor)) { $this->moveCursor($match[0]); $this->lineno = (int) $match[1]; } else { $this->pushToken(Token::BLOCK_START_TYPE); $this->pushState(self::STATE_BLOCK); $this->currentVarBlockLine = $this->lineno; } break; case $this->options['tag_variable'][0]: $this->pushToken(Token::VAR_START_TYPE); $this->pushState(self::STATE_VAR); $this->currentVarBlockLine = $this->lineno; break; } } protected function lexBlock() { if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::BLOCK_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { $this->lexExpression(); } } protected function lexVar() { if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::VAR_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { $this->lexExpression(); } } protected function lexExpression() { // whitespace if (preg_match('/\s+/A', $this->code, $match, 0, $this->cursor)) { $this->moveCursor($match[0]); if ($this->cursor >= $this->end) { throw new SyntaxError(sprintf('Unclosed "%s".', self::STATE_BLOCK === $this->state ? 'block' : 'variable'), $this->currentVarBlockLine, $this->source); } } // arrow function if ('=' === $this->code[$this->cursor] && '>' === $this->code[$this->cursor + 1]) { $this->pushToken(Token::ARROW_TYPE, '=>'); $this->moveCursor('=>'); } // operators elseif (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0])); $this->moveCursor($match[0]); } // names elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::NAME_TYPE, $match[0]); $this->moveCursor($match[0]); } // numbers elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $this->cursor)) { $number = (float) $match[0]; // floats if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) { $number = (int) $match[0]; // integers lower than the maximum } $this->pushToken(Token::NUMBER_TYPE, $number); $this->moveCursor($match[0]); } // punctuation elseif (false !== strpos(self::PUNCTUATION, $this->code[$this->cursor])) { // opening bracket if (false !== strpos('([{', $this->code[$this->cursor])) { $this->brackets[] = [$this->code[$this->cursor], $this->lineno]; } // closing bracket elseif (false !== strpos(')]}', $this->code[$this->cursor])) { if (empty($this->brackets)) { throw new SyntaxError(sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } list($expect, $lineno) = array_pop($this->brackets); if ($this->code[$this->cursor] != strtr($expect, '([{', ')]}')) { throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); } } $this->pushToken(Token::PUNCTUATION_TYPE, $this->code[$this->cursor]); ++$this->cursor; } // strings elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1))); $this->moveCursor($match[0]); } // opening double quoted string elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) { $this->brackets[] = ['"', $this->lineno]; $this->pushState(self::STATE_STRING); $this->moveCursor($match[0]); } // unlexable else { throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } } protected function lexRawData($tag) { if ('raw' === $tag) { @trigger_error(sprintf('Twig Tag "raw" is deprecated since version 1.21. Use "verbatim" instead in %s at line %d.', $this->filename, $this->lineno), E_USER_DEPRECATED); } if (!preg_match(str_replace('%s', $tag, $this->regexes['lex_raw_data']), $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { throw new SyntaxError(sprintf('Unexpected end of file: Unclosed "%s" block.', $tag), $this->lineno, $this->source); } $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor); $this->moveCursor($text.$match[0][0]); // trim? if (isset($match[1][0])) { if ($this->options['whitespace_trim'] === $match[1][0]) { // whitespace_trim detected ({%-, {{- or {#-) $text = rtrim($text); } else { // whitespace_line_trim detected ({%~, {{~ or {#~) // don't trim \r and \n $text = rtrim($text, " \t\0\x0B"); } } $this->pushToken(Token::TEXT_TYPE, $text); } protected function lexComment() { if (!preg_match($this->regexes['lex_comment'], $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { throw new SyntaxError('Unclosed comment.', $this->lineno, $this->source); } $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]); } protected function lexString() { if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) { $this->brackets[] = [$this->options['interpolation'][0], $this->lineno]; $this->pushToken(Token::INTERPOLATION_START_TYPE); $this->moveCursor($match[0]); $this->pushState(self::STATE_INTERPOLATION); } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && \strlen($match[0]) > 0) { $this->pushToken(Token::STRING_TYPE, stripcslashes($match[0])); $this->moveCursor($match[0]); } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) { list($expect, $lineno) = array_pop($this->brackets); if ('"' != $this->code[$this->cursor]) { throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); } $this->popState(); ++$this->cursor; } else { // unlexable throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } } protected function lexInterpolation() { $bracket = end($this->brackets); if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) { array_pop($this->brackets); $this->pushToken(Token::INTERPOLATION_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { $this->lexExpression(); } } protected function pushToken($type, $value = '') { // do not push empty text tokens if (Token::TEXT_TYPE === $type && '' === $value) { return; } $this->tokens[] = new Token($type, $value, $this->lineno); } protected function moveCursor($text) { $this->cursor += \strlen($text); $this->lineno += substr_count($text, "\n"); } protected function getOperatorRegex() { $operators = array_merge( ['='], array_keys($this->env->getUnaryOperators()), array_keys($this->env->getBinaryOperators()) ); $operators = array_combine($operators, array_map('strlen', $operators)); arsort($operators); $regex = []; foreach ($operators as $operator => $length) { // an operator that ends with a character must be followed by // a whitespace or a parenthesis if (ctype_alpha($operator[$length - 1])) { $r = preg_quote($operator, '/').'(?=[\s()])'; } else { $r = preg_quote($operator, '/'); } // an operator with a space can be any amount of whitespaces $r = preg_replace('/\s+/', '\s+', $r); $regex[] = $r; } return '/'.implode('|', $regex).'/A'; } protected function pushState($state) { $this->states[] = $this->state; $this->state = $state; } protected function popState() { if (0 === \count($this->states)) { throw new \LogicException('Cannot pop state without a previous state.'); } $this->state = array_pop($this->states); } } class_alias('Twig\Lexer', 'Twig_Lexer'); db/login/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php000064400000021370151502156020021377 0ustar00 */ class OptimizerNodeVisitor extends AbstractNodeVisitor { const OPTIMIZE_ALL = -1; const OPTIMIZE_NONE = 0; const OPTIMIZE_FOR = 2; const OPTIMIZE_RAW_FILTER = 4; const OPTIMIZE_VAR_ACCESS = 8; protected $loops = []; protected $loopsTargets = []; protected $optimizers; protected $prependedNodes = []; protected $inABody = false; /** * @param int $optimizers The optimizer mode */ public function __construct($optimizers = -1) { if (!\is_int($optimizers) || $optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_VAR_ACCESS)) { throw new \InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers)); } $this->optimizers = $optimizers; } protected function doEnterNode(Node $node, Environment $env) { if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { $this->enterOptimizeFor($node, $env); } if (\PHP_VERSION_ID < 50400 && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('\Twig\Extension\SandboxExtension')) { if ($this->inABody) { if (!$node instanceof AbstractExpression) { if ('Twig_Node' !== \get_class($node)) { array_unshift($this->prependedNodes, []); } } else { $node = $this->optimizeVariables($node, $env); } } elseif ($node instanceof BodyNode) { $this->inABody = true; } } return $node; } protected function doLeaveNode(Node $node, Environment $env) { $expression = $node instanceof AbstractExpression; if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { $this->leaveOptimizeFor($node, $env); } if (self::OPTIMIZE_RAW_FILTER === (self::OPTIMIZE_RAW_FILTER & $this->optimizers)) { $node = $this->optimizeRawFilter($node, $env); } $node = $this->optimizePrintNode($node, $env); if (self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('\Twig\Extension\SandboxExtension')) { if ($node instanceof BodyNode) { $this->inABody = false; } elseif ($this->inABody) { if (!$expression && 'Twig_Node' !== \get_class($node) && $prependedNodes = array_shift($this->prependedNodes)) { $nodes = []; foreach (array_unique($prependedNodes) as $name) { $nodes[] = new SetTempNode($name, $node->getTemplateLine()); } $nodes[] = $node; $node = new Node($nodes); } } } return $node; } protected function optimizeVariables(\Twig_NodeInterface $node, Environment $env) { if ('Twig_Node_Expression_Name' === \get_class($node) && $node->isSimple()) { $this->prependedNodes[0][] = $node->getAttribute('name'); return new TempNameExpression($node->getAttribute('name'), $node->getTemplateLine()); } return $node; } /** * Optimizes print nodes. * * It replaces: * * * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()" * * @return \Twig_NodeInterface */ protected function optimizePrintNode(\Twig_NodeInterface $node, Environment $env) { if (!$node instanceof PrintNode) { return $node; } $exprNode = $node->getNode('expr'); if ( $exprNode instanceof BlockReferenceExpression || $exprNode instanceof ParentExpression ) { $exprNode->setAttribute('output', true); return $exprNode; } return $node; } /** * Removes "raw" filters. * * @return \Twig_NodeInterface */ protected function optimizeRawFilter(\Twig_NodeInterface $node, Environment $env) { if ($node instanceof FilterExpression && 'raw' == $node->getNode('filter')->getAttribute('value')) { return $node->getNode('node'); } return $node; } /** * Optimizes "for" tag by removing the "loop" variable creation whenever possible. */ protected function enterOptimizeFor(\Twig_NodeInterface $node, Environment $env) { if ($node instanceof ForNode) { // disable the loop variable by default $node->setAttribute('with_loop', false); array_unshift($this->loops, $node); array_unshift($this->loopsTargets, $node->getNode('value_target')->getAttribute('name')); array_unshift($this->loopsTargets, $node->getNode('key_target')->getAttribute('name')); } elseif (!$this->loops) { // we are outside a loop return; } // when do we need to add the loop variable back? // the loop variable is referenced for the current loop elseif ($node instanceof NameExpression && 'loop' === $node->getAttribute('name')) { $node->setAttribute('always_defined', true); $this->addLoopToCurrent(); } // optimize access to loop targets elseif ($node instanceof NameExpression && \in_array($node->getAttribute('name'), $this->loopsTargets)) { $node->setAttribute('always_defined', true); } // block reference elseif ($node instanceof BlockReferenceNode || $node instanceof BlockReferenceExpression) { $this->addLoopToCurrent(); } // include without the only attribute elseif ($node instanceof IncludeNode && !$node->getAttribute('only')) { $this->addLoopToAll(); } // include function without the with_context=false parameter elseif ($node instanceof FunctionExpression && 'include' === $node->getAttribute('name') && (!$node->getNode('arguments')->hasNode('with_context') || false !== $node->getNode('arguments')->getNode('with_context')->getAttribute('value') ) ) { $this->addLoopToAll(); } // the loop variable is referenced via an attribute elseif ($node instanceof GetAttrExpression && (!$node->getNode('attribute') instanceof ConstantExpression || 'parent' === $node->getNode('attribute')->getAttribute('value') ) && (true === $this->loops[0]->getAttribute('with_loop') || ($node->getNode('node') instanceof NameExpression && 'loop' === $node->getNode('node')->getAttribute('name') ) ) ) { $this->addLoopToAll(); } } /** * Optimizes "for" tag by removing the "loop" variable creation whenever possible. */ protected function leaveOptimizeFor(\Twig_NodeInterface $node, Environment $env) { if ($node instanceof ForNode) { array_shift($this->loops); array_shift($this->loopsTargets); array_shift($this->loopsTargets); } } protected function addLoopToCurrent() { $this->loops[0]->setAttribute('with_loop', true); } protected function addLoopToAll() { foreach ($this->loops as $loop) { $loop->setAttribute('with_loop', true); } } public function getPriority() { return 255; } } class_alias('Twig\NodeVisitor\OptimizerNodeVisitor', 'Twig_NodeVisitor_Optimizer'); db/login/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php000064400000016054151502156020021002 0ustar00 */ class EscaperNodeVisitor extends AbstractNodeVisitor { protected $statusStack = []; protected $blocks = []; protected $safeAnalysis; protected $traverser; protected $defaultStrategy = false; protected $safeVars = []; public function __construct() { $this->safeAnalysis = new SafeAnalysisNodeVisitor(); } protected function doEnterNode(Node $node, Environment $env) { if ($node instanceof ModuleNode) { if ($env->hasExtension('\Twig\Extension\EscaperExtension') && $defaultStrategy = $env->getExtension('\Twig\Extension\EscaperExtension')->getDefaultStrategy($node->getTemplateName())) { $this->defaultStrategy = $defaultStrategy; } $this->safeVars = []; $this->blocks = []; } elseif ($node instanceof AutoEscapeNode) { $this->statusStack[] = $node->getAttribute('value'); } elseif ($node instanceof BlockNode) { $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env); } elseif ($node instanceof ImportNode) { $this->safeVars[] = $node->getNode('var')->getAttribute('name'); } return $node; } protected function doLeaveNode(Node $node, Environment $env) { if ($node instanceof ModuleNode) { $this->defaultStrategy = false; $this->safeVars = []; $this->blocks = []; } elseif ($node instanceof FilterExpression) { return $this->preEscapeFilterNode($node, $env); } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping($env)) { $expression = $node->getNode('expr'); if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) { return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine()); } return $this->escapePrintNode($node, $env, $type); } if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) { array_pop($this->statusStack); } elseif ($node instanceof BlockReferenceNode) { $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env); } return $node; } private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, $type) { $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env); $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env); return $expr2Safe !== $expr3Safe; } private function unwrapConditional(ConditionalExpression $expression, Environment $env, $type) { // convert "echo a ? b : c" to "a ? echo b : echo c" recursively $expr2 = $expression->getNode('expr2'); if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) { $expr2 = $this->unwrapConditional($expr2, $env, $type); } else { $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type); } $expr3 = $expression->getNode('expr3'); if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) { $expr3 = $this->unwrapConditional($expr3, $env, $type); } else { $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type); } return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine()); } private function escapeInlinePrintNode(InlinePrint $node, Environment $env, $type) { $expression = $node->getNode('node'); if ($this->isSafeFor($type, $expression, $env)) { return $node; } return new InlinePrint($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); } protected function escapePrintNode(PrintNode $node, Environment $env, $type) { if (false === $type) { return $node; } $expression = $node->getNode('expr'); if ($this->isSafeFor($type, $expression, $env)) { return $node; } $class = \get_class($node); return new $class($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); } protected function preEscapeFilterNode(FilterExpression $filter, Environment $env) { $name = $filter->getNode('filter')->getAttribute('value'); $type = $env->getFilter($name)->getPreEscape(); if (null === $type) { return $filter; } $node = $filter->getNode('node'); if ($this->isSafeFor($type, $node, $env)) { return $filter; } $filter->setNode('node', $this->getEscaperFilter($type, $node)); return $filter; } protected function isSafeFor($type, \Twig_NodeInterface $expression, $env) { $safe = $this->safeAnalysis->getSafe($expression); if (null === $safe) { if (null === $this->traverser) { $this->traverser = new NodeTraverser($env, [$this->safeAnalysis]); } $this->safeAnalysis->setSafeVars($this->safeVars); $this->traverser->traverse($expression); $safe = $this->safeAnalysis->getSafe($expression); } return \in_array($type, $safe) || \in_array('all', $safe); } protected function needEscaping(Environment $env) { if (\count($this->statusStack)) { return $this->statusStack[\count($this->statusStack) - 1]; } return $this->defaultStrategy ? $this->defaultStrategy : false; } protected function getEscaperFilter($type, \Twig_NodeInterface $node) { $line = $node->getTemplateLine(); $name = new ConstantExpression('escape', $line); $args = new Node([new ConstantExpression((string) $type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); return new FilterExpression($node, $name, $args, $line); } public function getPriority() { return 0; } } class_alias('Twig\NodeVisitor\EscaperNodeVisitor', 'Twig_NodeVisitor_Escaper'); db/login/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php000064400000010321151502156020021005 0ustar00 */ class SandboxNodeVisitor extends AbstractNodeVisitor { protected $inAModule = false; protected $tags; protected $filters; protected $functions; private $needsToStringWrap = false; protected function doEnterNode(Node $node, Environment $env) { if ($node instanceof ModuleNode) { $this->inAModule = true; $this->tags = []; $this->filters = []; $this->functions = []; return $node; } elseif ($this->inAModule) { // look for tags if ($node->getNodeTag() && !isset($this->tags[$node->getNodeTag()])) { $this->tags[$node->getNodeTag()] = $node; } // look for filters if ($node instanceof FilterExpression && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) { $this->filters[$node->getNode('filter')->getAttribute('value')] = $node; } // look for functions if ($node instanceof FunctionExpression && !isset($this->functions[$node->getAttribute('name')])) { $this->functions[$node->getAttribute('name')] = $node; } // the .. operator is equivalent to the range() function if ($node instanceof RangeBinary && !isset($this->functions['range'])) { $this->functions['range'] = $node; } if ($node instanceof PrintNode) { $this->needsToStringWrap = true; $this->wrapNode($node, 'expr'); } if ($node instanceof SetNode && !$node->getAttribute('capture')) { $this->needsToStringWrap = true; } // wrap outer nodes that can implicitly call __toString() if ($this->needsToStringWrap) { if ($node instanceof ConcatBinary) { $this->wrapNode($node, 'left'); $this->wrapNode($node, 'right'); } if ($node instanceof FilterExpression) { $this->wrapNode($node, 'node'); $this->wrapArrayNode($node, 'arguments'); } if ($node instanceof FunctionExpression) { $this->wrapArrayNode($node, 'arguments'); } } } return $node; } protected function doLeaveNode(Node $node, Environment $env) { if ($node instanceof ModuleNode) { $this->inAModule = false; $node->getNode('constructor_end')->setNode('_security_check', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('display_start')])); } elseif ($this->inAModule) { if ($node instanceof PrintNode || $node instanceof SetNode) { $this->needsToStringWrap = false; } } return $node; } private function wrapNode(Node $node, $name) { $expr = $node->getNode($name); if ($expr instanceof NameExpression || $expr instanceof GetAttrExpression) { $node->setNode($name, new CheckToStringNode($expr)); } } private function wrapArrayNode(Node $node, $name) { $args = $node->getNode($name); foreach ($args as $name => $_) { $this->wrapNode($args, $name); } } public function getPriority() { return 0; } } class_alias('Twig\NodeVisitor\SandboxNodeVisitor', 'Twig_NodeVisitor_Sandbox'); db/login/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php000064400000002403151502156020021311 0ustar00 */ interface NodeVisitorInterface { /** * Called before child nodes are visited. * * @return \Twig_NodeInterface The modified node */ public function enterNode(\Twig_NodeInterface $node, Environment $env); /** * Called after child nodes are visited. * * @return \Twig_NodeInterface|false|null The modified node or null if the node must be removed */ public function leaveNode(\Twig_NodeInterface $node, Environment $env); /** * Returns the priority for this visitor. * * Priority should be between -10 and 10 (0 is the default). * * @return int The priority level */ public function getPriority(); } class_alias('Twig\NodeVisitor\NodeVisitorInterface', 'Twig_NodeVisitorInterface'); // Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name. class_exists('Twig\Environment'); db/login/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php000064400000003061151502156020021155 0ustar00 */ abstract class AbstractNodeVisitor implements NodeVisitorInterface { final public function enterNode(\Twig_NodeInterface $node, Environment $env) { if (!$node instanceof Node) { throw new \LogicException(sprintf('%s only supports \Twig\Node\Node instances.', __CLASS__)); } return $this->doEnterNode($node, $env); } final public function leaveNode(\Twig_NodeInterface $node, Environment $env) { if (!$node instanceof Node) { throw new \LogicException(sprintf('%s only supports \Twig\Node\Node instances.', __CLASS__)); } return $this->doLeaveNode($node, $env); } /** * Called before child nodes are visited. * * @return Node The modified node */ abstract protected function doEnterNode(Node $node, Environment $env); /** * Called after child nodes are visited. * * @return Node|false|null The modified node or null if the node must be removed */ abstract protected function doLeaveNode(Node $node, Environment $env); } class_alias('Twig\NodeVisitor\AbstractNodeVisitor', 'Twig_BaseNodeVisitor'); db/login/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php000064400000012016151502156020021774 0ustar00safeVars = $safeVars; } public function getSafe(\Twig_NodeInterface $node) { $hash = spl_object_hash($node); if (!isset($this->data[$hash])) { return; } foreach ($this->data[$hash] as $bucket) { if ($bucket['key'] !== $node) { continue; } if (\in_array('html_attr', $bucket['value'])) { $bucket['value'][] = 'html'; } return $bucket['value']; } } protected function setSafe(\Twig_NodeInterface $node, array $safe) { $hash = spl_object_hash($node); if (isset($this->data[$hash])) { foreach ($this->data[$hash] as &$bucket) { if ($bucket['key'] === $node) { $bucket['value'] = $safe; return; } } } $this->data[$hash][] = [ 'key' => $node, 'value' => $safe, ]; } protected function doEnterNode(Node $node, Environment $env) { return $node; } protected function doLeaveNode(Node $node, Environment $env) { if ($node instanceof ConstantExpression) { // constants are marked safe for all $this->setSafe($node, ['all']); } elseif ($node instanceof BlockReferenceExpression) { // blocks are safe by definition $this->setSafe($node, ['all']); } elseif ($node instanceof ParentExpression) { // parent block is safe by definition $this->setSafe($node, ['all']); } elseif ($node instanceof ConditionalExpression) { // intersect safeness of both operands $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3'))); $this->setSafe($node, $safe); } elseif ($node instanceof FilterExpression) { // filter expression is safe when the filter is safe $name = $node->getNode('filter')->getAttribute('value'); $args = $node->getNode('arguments'); if (false !== $filter = $env->getFilter($name)) { $safe = $filter->getSafe($args); if (null === $safe) { $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety()); } $this->setSafe($node, $safe); } else { $this->setSafe($node, []); } } elseif ($node instanceof FunctionExpression) { // function expression is safe when the function is safe $name = $node->getAttribute('name'); $args = $node->getNode('arguments'); $function = $env->getFunction($name); if (false !== $function) { $this->setSafe($node, $function->getSafe($args)); } else { $this->setSafe($node, []); } } elseif ($node instanceof MethodCallExpression) { if ($node->getAttribute('safe')) { $this->setSafe($node, ['all']); } else { $this->setSafe($node, []); } } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) { $name = $node->getNode('node')->getAttribute('name'); // attributes on template instances are safe if ('_self' == $name || \in_array($name, $this->safeVars)) { $this->setSafe($node, ['all']); } else { $this->setSafe($node, []); } } else { $this->setSafe($node, []); } return $node; } protected function intersectSafe(array $a = null, array $b = null) { if (null === $a || null === $b) { return []; } if (\in_array('all', $a)) { return $b; } if (\in_array('all', $b)) { return $a; } return array_intersect($a, $b); } public function getPriority() { return 0; } } class_alias('Twig\NodeVisitor\SafeAnalysisNodeVisitor', 'Twig_NodeVisitor_SafeAnalysis'); db/login/vendor/twig/twig/src/TwigFilter.php000064400000005375151502156020015051 0ustar00 */ class TwigFilter { protected $name; protected $callable; protected $options; protected $arguments = []; public function __construct($name, $callable, array $options = []) { $this->name = $name; $this->callable = $callable; $this->options = array_merge([ 'needs_environment' => false, 'needs_context' => false, 'is_variadic' => false, 'is_safe' => null, 'is_safe_callback' => null, 'pre_escape' => null, 'preserves_safety' => null, 'node_class' => '\Twig\Node\Expression\FilterExpression', 'deprecated' => false, 'alternative' => null, ], $options); } public function getName() { return $this->name; } public function getCallable() { return $this->callable; } public function getNodeClass() { return $this->options['node_class']; } public function setArguments($arguments) { $this->arguments = $arguments; } public function getArguments() { return $this->arguments; } public function needsEnvironment() { return $this->options['needs_environment']; } public function needsContext() { return $this->options['needs_context']; } public function getSafe(Node $filterArgs) { if (null !== $this->options['is_safe']) { return $this->options['is_safe']; } if (null !== $this->options['is_safe_callback']) { return \call_user_func($this->options['is_safe_callback'], $filterArgs); } } public function getPreservesSafety() { return $this->options['preserves_safety']; } public function getPreEscape() { return $this->options['pre_escape']; } public function isVariadic() { return $this->options['is_variadic']; } public function isDeprecated() { return (bool) $this->options['deprecated']; } public function getDeprecatedVersion() { return $this->options['deprecated']; } public function getAlternative() { return $this->options['alternative']; } } class_alias('Twig\TwigFilter', 'Twig_SimpleFilter'); // Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name. class_exists('Twig\Node\Node'); db/login/vendor/twig/twig/src/Error/SyntaxError.php000064400000002706151502156020016355 0ustar00 */ class SyntaxError extends Error { /** * Tweaks the error message to include suggestions. * * @param string $name The original name of the item that does not exist * @param array $items An array of possible items */ public function addSuggestions($name, array $items) { if (!$alternatives = self::computeAlternatives($name, $items)) { return; } $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', $alternatives))); } /** * @internal * * To be merged with the addSuggestions() method in 2.0. */ public static function computeAlternatives($name, $items) { $alternatives = []; foreach ($items as $item) { $lev = levenshtein($name, $item); if ($lev <= \strlen($name) / 3 || false !== strpos($item, $name)) { $alternatives[$item] = $lev; } } asort($alternatives); return array_keys($alternatives); } } class_alias('Twig\Error\SyntaxError', 'Twig_Error_Syntax'); db/login/vendor/twig/twig/src/Error/RuntimeError.php000064400000000714151502156020016507 0ustar00 */ class RuntimeError extends Error { } class_alias('Twig\Error\RuntimeError', 'Twig_Error_Runtime'); db/login/vendor/twig/twig/src/Error/Error.php000064400000023330151502156020015142 0ustar00 */ class Error extends \Exception { protected $lineno; // to be renamed to name in 2.0 protected $filename; protected $rawMessage; private $sourcePath; private $sourceCode; /** * Constructor. * * Set the line number to -1 to enable its automatic guessing. * Set the name to null to enable its automatic guessing. * * @param string $message The error message * @param int $lineno The template line where the error occurred * @param Source|string|null $source The source context where the error occurred * @param \Exception $previous The previous exception */ public function __construct($message, $lineno = -1, $source = null, \Exception $previous = null) { if (null === $source) { $name = null; } elseif (!$source instanceof Source) { // for compat with the Twig C ext., passing the template name as string is accepted $name = $source; } else { $name = $source->getName(); $this->sourceCode = $source->getCode(); $this->sourcePath = $source->getPath(); } parent::__construct('', 0, $previous); $this->lineno = $lineno; $this->filename = $name; $this->rawMessage = $message; $this->updateRepr(); } /** * Gets the raw message. * * @return string The raw message */ public function getRawMessage() { return $this->rawMessage; } /** * Gets the logical name where the error occurred. * * @return string The name * * @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead. */ public function getTemplateFile() { @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); return $this->filename; } /** * Sets the logical name where the error occurred. * * @param string $name The name * * @deprecated since 1.27 (to be removed in 2.0). Use setSourceContext() instead. */ public function setTemplateFile($name) { @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use setSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); $this->filename = $name; $this->updateRepr(); } /** * Gets the logical name where the error occurred. * * @return string The name * * @deprecated since 1.29 (to be removed in 2.0). Use getSourceContext() instead. */ public function getTemplateName() { @trigger_error(sprintf('The "%s" method is deprecated since version 1.29 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); return $this->filename; } /** * Sets the logical name where the error occurred. * * @param string $name The name * * @deprecated since 1.29 (to be removed in 2.0). Use setSourceContext() instead. */ public function setTemplateName($name) { @trigger_error(sprintf('The "%s" method is deprecated since version 1.29 and will be removed in 2.0. Use setSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); $this->filename = $name; $this->sourceCode = $this->sourcePath = null; $this->updateRepr(); } /** * Gets the template line where the error occurred. * * @return int The template line */ public function getTemplateLine() { return $this->lineno; } /** * Sets the template line where the error occurred. * * @param int $lineno The template line */ public function setTemplateLine($lineno) { $this->lineno = $lineno; $this->updateRepr(); } /** * Gets the source context of the Twig template where the error occurred. * * @return Source|null */ public function getSourceContext() { return $this->filename ? new Source($this->sourceCode, $this->filename, $this->sourcePath) : null; } /** * Sets the source context of the Twig template where the error occurred. */ public function setSourceContext(Source $source = null) { if (null === $source) { $this->sourceCode = $this->filename = $this->sourcePath = null; } else { $this->sourceCode = $source->getCode(); $this->filename = $source->getName(); $this->sourcePath = $source->getPath(); } $this->updateRepr(); } public function guess() { $this->guessTemplateInfo(); $this->updateRepr(); } public function appendMessage($rawMessage) { $this->rawMessage .= $rawMessage; $this->updateRepr(); } /** * @internal */ protected function updateRepr() { $this->message = $this->rawMessage; if ($this->sourcePath && $this->lineno > 0) { $this->file = $this->sourcePath; $this->line = $this->lineno; return; } $dot = false; if ('.' === substr($this->message, -1)) { $this->message = substr($this->message, 0, -1); $dot = true; } $questionMark = false; if ('?' === substr($this->message, -1)) { $this->message = substr($this->message, 0, -1); $questionMark = true; } if ($this->filename) { if (\is_string($this->filename) || (\is_object($this->filename) && method_exists($this->filename, '__toString'))) { $name = sprintf('"%s"', $this->filename); } else { $name = json_encode($this->filename); } $this->message .= sprintf(' in %s', $name); } if ($this->lineno && $this->lineno >= 0) { $this->message .= sprintf(' at line %d', $this->lineno); } if ($dot) { $this->message .= '.'; } if ($questionMark) { $this->message .= '?'; } } /** * @internal */ protected function guessTemplateInfo() { $template = null; $templateClass = null; $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT); foreach ($backtrace as $trace) { if (isset($trace['object']) && $trace['object'] instanceof Template && 'Twig_Template' !== \get_class($trace['object'])) { $currentClass = \get_class($trace['object']); $isEmbedContainer = 0 === strpos($templateClass, $currentClass); if (null === $this->filename || ($this->filename == $trace['object']->getTemplateName() && !$isEmbedContainer)) { $template = $trace['object']; $templateClass = \get_class($trace['object']); } } } // update template name if (null !== $template && null === $this->filename) { $this->filename = $template->getTemplateName(); } // update template path if any if (null !== $template && null === $this->sourcePath) { $src = $template->getSourceContext(); $this->sourceCode = $src->getCode(); $this->sourcePath = $src->getPath(); } if (null === $template || $this->lineno > -1) { return; } $r = new \ReflectionObject($template); $file = $r->getFileName(); $exceptions = [$e = $this]; while ($e instanceof self && $e = $e->getPrevious()) { $exceptions[] = $e; } while ($e = array_pop($exceptions)) { $traces = $e->getTrace(); array_unshift($traces, ['file' => $e->getFile(), 'line' => $e->getLine()]); while ($trace = array_shift($traces)) { if (!isset($trace['file']) || !isset($trace['line']) || $file != $trace['file']) { continue; } foreach ($template->getDebugInfo() as $codeLine => $templateLine) { if ($codeLine <= $trace['line']) { // update template line $this->lineno = $templateLine; return; } } } } } } class_alias('Twig\Error\Error', 'Twig_Error'); db/login/vendor/twig/twig/src/Error/LoaderError.php000064400000000700151502156020016265 0ustar00 */ class LoaderError extends Error { } class_alias('Twig\Error\LoaderError', 'Twig_Error_Loader'); db/login/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php000064400000001603151502156020021633 0ustar00 */ class FactoryRuntimeLoader implements RuntimeLoaderInterface { private $map; /** * @param array $map An array where keys are class names and values factory callables */ public function __construct($map = []) { $this->map = $map; } public function load($class) { if (isset($this->map[$class])) { $runtimeFactory = $this->map[$class]; return $runtimeFactory(); } } } class_alias('Twig\RuntimeLoader\FactoryRuntimeLoader', 'Twig_FactoryRuntimeLoader'); db/login/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php000064400000001722151502156020022150 0ustar00 * @author Robin Chalas */ class ContainerRuntimeLoader implements RuntimeLoaderInterface { private $container; public function __construct(ContainerInterface $container) { $this->container = $container; } public function load($class) { if ($this->container->has($class)) { return $this->container->get($class); } } } class_alias('Twig\RuntimeLoader\ContainerRuntimeLoader', 'Twig_ContainerRuntimeLoader'); db/login/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php000064400000001461151502156020022126 0ustar00 */ interface RuntimeLoaderInterface { /** * Creates the runtime implementation of a Twig element (filter/function/test). * * @param string $class A runtime class * * @return object|null The runtime instance or null if the loader does not know how to create the runtime for this class */ public function load($class); } class_alias('Twig\RuntimeLoader\RuntimeLoaderInterface', 'Twig_RuntimeLoaderInterface'); db/login/vendor/twig/twig/src/NodeTraverser.php000064400000004040151502156020015540 0ustar00 */ class NodeTraverser { protected $env; protected $visitors = []; /** * @param NodeVisitorInterface[] $visitors */ public function __construct(Environment $env, array $visitors = []) { $this->env = $env; foreach ($visitors as $visitor) { $this->addVisitor($visitor); } } public function addVisitor(NodeVisitorInterface $visitor) { $this->visitors[$visitor->getPriority()][] = $visitor; } /** * Traverses a node and calls the registered visitors. * * @return \Twig_NodeInterface */ public function traverse(\Twig_NodeInterface $node) { ksort($this->visitors); foreach ($this->visitors as $visitors) { foreach ($visitors as $visitor) { $node = $this->traverseForVisitor($visitor, $node); } } return $node; } protected function traverseForVisitor(NodeVisitorInterface $visitor, \Twig_NodeInterface $node = null) { if (null === $node) { return; } $node = $visitor->enterNode($node, $this->env); foreach ($node as $k => $n) { if (null === $n) { continue; } if (false !== ($m = $this->traverseForVisitor($visitor, $n)) && null !== $m) { if ($m !== $n) { $node->setNode($k, $m); } } else { $node->removeNode($k); } } return $visitor->leaveNode($node, $this->env); } } class_alias('Twig\NodeTraverser', 'Twig_NodeTraverser'); db/login/vendor/twig/twig/src/ExpressionParser.php000064400000077767151502156020016323 0ustar00 * * @internal */ class ExpressionParser { const OPERATOR_LEFT = 1; const OPERATOR_RIGHT = 2; protected $parser; protected $unaryOperators; protected $binaryOperators; private $env; public function __construct(Parser $parser, $env = null) { $this->parser = $parser; if ($env instanceof Environment) { $this->env = $env; $this->unaryOperators = $env->getUnaryOperators(); $this->binaryOperators = $env->getBinaryOperators(); } else { @trigger_error('Passing the operators as constructor arguments to '.__METHOD__.' is deprecated since version 1.27. Pass the environment instead.', E_USER_DEPRECATED); $this->env = $parser->getEnvironment(); $this->unaryOperators = func_get_arg(1); $this->binaryOperators = func_get_arg(2); } } public function parseExpression($precedence = 0, $allowArrow = false) { if ($allowArrow && $arrow = $this->parseArrow()) { return $arrow; } $expr = $this->getPrimary(); $token = $this->parser->getCurrentToken(); while ($this->isBinary($token) && $this->binaryOperators[$token->getValue()]['precedence'] >= $precedence) { $op = $this->binaryOperators[$token->getValue()]; $this->parser->getStream()->next(); if ('is not' === $token->getValue()) { $expr = $this->parseNotTestExpression($expr); } elseif ('is' === $token->getValue()) { $expr = $this->parseTestExpression($expr); } elseif (isset($op['callable'])) { $expr = \call_user_func($op['callable'], $this->parser, $expr); } else { $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); $class = $op['class']; $expr = new $class($expr, $expr1, $token->getLine()); } $token = $this->parser->getCurrentToken(); } if (0 === $precedence) { return $this->parseConditionalExpression($expr); } return $expr; } /** * @return ArrowFunctionExpression|null */ private function parseArrow() { $stream = $this->parser->getStream(); // short array syntax (one argument, no parentheses)? if ($stream->look(1)->test(Token::ARROW_TYPE)) { $line = $stream->getCurrent()->getLine(); $token = $stream->expect(Token::NAME_TYPE); $names = [new AssignNameExpression($token->getValue(), $token->getLine())]; $stream->expect(Token::ARROW_TYPE); return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); } // first, determine if we are parsing an arrow function by finding => (long form) $i = 0; if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, '(')) { return null; } ++$i; while (true) { // variable name ++$i; if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ',')) { break; } ++$i; } if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ')')) { return null; } ++$i; if (!$stream->look($i)->test(Token::ARROW_TYPE)) { return null; } // yes, let's parse it properly $token = $stream->expect(Token::PUNCTUATION_TYPE, '('); $line = $token->getLine(); $names = []; while (true) { $token = $stream->expect(Token::NAME_TYPE); $names[] = new AssignNameExpression($token->getValue(), $token->getLine()); if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } $stream->expect(Token::PUNCTUATION_TYPE, ')'); $stream->expect(Token::ARROW_TYPE); return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); } protected function getPrimary() { $token = $this->parser->getCurrentToken(); if ($this->isUnary($token)) { $operator = $this->unaryOperators[$token->getValue()]; $this->parser->getStream()->next(); $expr = $this->parseExpression($operator['precedence']); $class = $operator['class']; return $this->parsePostfixExpression(new $class($expr, $token->getLine())); } elseif ($token->test(Token::PUNCTUATION_TYPE, '(')) { $this->parser->getStream()->next(); $expr = $this->parseExpression(); $this->parser->getStream()->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); return $this->parsePostfixExpression($expr); } return $this->parsePrimaryExpression(); } protected function parseConditionalExpression($expr) { while ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, '?')) { if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ':')) { $expr2 = $this->parseExpression(); if ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ':')) { $expr3 = $this->parseExpression(); } else { $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); } } else { $expr2 = $expr; $expr3 = $this->parseExpression(); } $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); } return $expr; } protected function isUnary(Token $token) { return $token->test(Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]); } protected function isBinary(Token $token) { return $token->test(Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]); } public function parsePrimaryExpression() { $token = $this->parser->getCurrentToken(); switch ($token->getType()) { case Token::NAME_TYPE: $this->parser->getStream()->next(); switch ($token->getValue()) { case 'true': case 'TRUE': $node = new ConstantExpression(true, $token->getLine()); break; case 'false': case 'FALSE': $node = new ConstantExpression(false, $token->getLine()); break; case 'none': case 'NONE': case 'null': case 'NULL': $node = new ConstantExpression(null, $token->getLine()); break; default: if ('(' === $this->parser->getCurrentToken()->getValue()) { $node = $this->getFunctionNode($token->getValue(), $token->getLine()); } else { $node = new NameExpression($token->getValue(), $token->getLine()); } } break; case Token::NUMBER_TYPE: $this->parser->getStream()->next(); $node = new ConstantExpression($token->getValue(), $token->getLine()); break; case Token::STRING_TYPE: case Token::INTERPOLATION_START_TYPE: $node = $this->parseStringExpression(); break; case Token::OPERATOR_TYPE: if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { // in this context, string operators are variable names $this->parser->getStream()->next(); $node = new NameExpression($token->getValue(), $token->getLine()); break; } elseif (isset($this->unaryOperators[$token->getValue()])) { $class = $this->unaryOperators[$token->getValue()]['class']; $ref = new \ReflectionClass($class); $negClass = 'Twig\Node\Expression\Unary\NegUnary'; $posClass = 'Twig\Node\Expression\Unary\PosUnary'; if (!(\in_array($ref->getName(), [$negClass, $posClass, 'Twig_Node_Expression_Unary_Neg', 'Twig_Node_Expression_Unary_Pos']) || $ref->isSubclassOf($negClass) || $ref->isSubclassOf($posClass) || $ref->isSubclassOf('Twig_Node_Expression_Unary_Neg') || $ref->isSubclassOf('Twig_Node_Expression_Unary_Pos')) ) { throw new SyntaxError(sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } $this->parser->getStream()->next(); $expr = $this->parsePrimaryExpression(); $node = new $class($expr, $token->getLine()); break; } // no break default: if ($token->test(Token::PUNCTUATION_TYPE, '[')) { $node = $this->parseArrayExpression(); } elseif ($token->test(Token::PUNCTUATION_TYPE, '{')) { $node = $this->parseHashExpression(); } elseif ($token->test(Token::OPERATOR_TYPE, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { throw new SyntaxError(sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } else { throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } } return $this->parsePostfixExpression($node); } public function parseStringExpression() { $stream = $this->parser->getStream(); $nodes = []; // a string cannot be followed by another string in a single expression $nextCanBeString = true; while (true) { if ($nextCanBeString && $token = $stream->nextIf(Token::STRING_TYPE)) { $nodes[] = new ConstantExpression($token->getValue(), $token->getLine()); $nextCanBeString = false; } elseif ($stream->nextIf(Token::INTERPOLATION_START_TYPE)) { $nodes[] = $this->parseExpression(); $stream->expect(Token::INTERPOLATION_END_TYPE); $nextCanBeString = true; } else { break; } } $expr = array_shift($nodes); foreach ($nodes as $node) { $expr = new ConcatBinary($expr, $node, $node->getTemplateLine()); } return $expr; } public function parseArrayExpression() { $stream = $this->parser->getStream(); $stream->expect(Token::PUNCTUATION_TYPE, '[', 'An array element was expected'); $node = new ArrayExpression([], $stream->getCurrent()->getLine()); $first = true; while (!$stream->test(Token::PUNCTUATION_TYPE, ']')) { if (!$first) { $stream->expect(Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma'); // trailing ,? if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { break; } } $first = false; $node->addElement($this->parseExpression()); } $stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed'); return $node; } public function parseHashExpression() { $stream = $this->parser->getStream(); $stream->expect(Token::PUNCTUATION_TYPE, '{', 'A hash element was expected'); $node = new ArrayExpression([], $stream->getCurrent()->getLine()); $first = true; while (!$stream->test(Token::PUNCTUATION_TYPE, '}')) { if (!$first) { $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma'); // trailing ,? if ($stream->test(Token::PUNCTUATION_TYPE, '}')) { break; } } $first = false; // a hash key can be: // // * a number -- 12 // * a string -- 'a' // * a name, which is equivalent to a string -- a // * an expression, which must be enclosed in parentheses -- (1 + 2) if (($token = $stream->nextIf(Token::STRING_TYPE)) || ($token = $stream->nextIf(Token::NAME_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) { $key = new ConstantExpression($token->getValue(), $token->getLine()); } elseif ($stream->test(Token::PUNCTUATION_TYPE, '(')) { $key = $this->parseExpression(); } else { $current = $stream->getCurrent(); throw new SyntaxError(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext()); } $stream->expect(Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)'); $value = $this->parseExpression(); $node->addElement($value, $key); } $stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed'); return $node; } public function parsePostfixExpression($node) { while (true) { $token = $this->parser->getCurrentToken(); if (Token::PUNCTUATION_TYPE == $token->getType()) { if ('.' == $token->getValue() || '[' == $token->getValue()) { $node = $this->parseSubscriptExpression($node); } elseif ('|' == $token->getValue()) { $node = $this->parseFilterExpression($node); } else { break; } } else { break; } } return $node; } public function getFunctionNode($name, $line) { switch ($name) { case 'parent': $this->parseArguments(); if (!\count($this->parser->getBlockStack())) { throw new SyntaxError('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext()); } if (!$this->parser->getParent() && !$this->parser->hasTraits()) { throw new SyntaxError('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext()); } return new ParentExpression($this->parser->peekBlockStack(), $line); case 'block': $args = $this->parseArguments(); if (\count($args) < 1) { throw new SyntaxError('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext()); } return new BlockReferenceExpression($args->getNode(0), \count($args) > 1 ? $args->getNode(1) : null, $line); case 'attribute': $args = $this->parseArguments(); if (\count($args) < 2) { throw new SyntaxError('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext()); } return new GetAttrExpression($args->getNode(0), $args->getNode(1), \count($args) > 2 ? $args->getNode(2) : null, Template::ANY_CALL, $line); default: if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { $arguments = new ArrayExpression([], $line); foreach ($this->parseArguments() as $n) { $arguments->addElement($n); } $node = new MethodCallExpression($alias['node'], $alias['name'], $arguments, $line); $node->setAttribute('safe', true); return $node; } $args = $this->parseArguments(true); $class = $this->getFunctionNodeClass($name, $line); return new $class($name, $args, $line); } } public function parseSubscriptExpression($node) { $stream = $this->parser->getStream(); $token = $stream->next(); $lineno = $token->getLine(); $arguments = new ArrayExpression([], $lineno); $type = Template::ANY_CALL; if ('.' == $token->getValue()) { $token = $stream->next(); if ( Token::NAME_TYPE == $token->getType() || Token::NUMBER_TYPE == $token->getType() || (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) ) { $arg = new ConstantExpression($token->getValue(), $lineno); if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { $type = Template::METHOD_CALL; foreach ($this->parseArguments() as $n) { $arguments->addElement($n); } } } else { throw new SyntaxError('Expected name or number.', $lineno, $stream->getSourceContext()); } if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { if (!$arg instanceof ConstantExpression) { throw new SyntaxError(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $stream->getSourceContext()); } $name = $arg->getAttribute('value'); if ($this->parser->isReservedMacroName($name)) { throw new SyntaxError(sprintf('"%s" cannot be called as macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getSourceContext()); } $node = new MethodCallExpression($node, 'get'.$name, $arguments, $lineno); $node->setAttribute('safe', true); return $node; } } else { $type = Template::ARRAY_CALL; // slice? $slice = false; if ($stream->test(Token::PUNCTUATION_TYPE, ':')) { $slice = true; $arg = new ConstantExpression(0, $token->getLine()); } else { $arg = $this->parseExpression(); } if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) { $slice = true; } if ($slice) { if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { $length = new ConstantExpression(null, $token->getLine()); } else { $length = $this->parseExpression(); } $class = $this->getFilterNodeClass('slice', $token->getLine()); $arguments = new Node([$arg, $length]); $filter = new $class($node, new ConstantExpression('slice', $token->getLine()), $arguments, $token->getLine()); $stream->expect(Token::PUNCTUATION_TYPE, ']'); return $filter; } $stream->expect(Token::PUNCTUATION_TYPE, ']'); } return new GetAttrExpression($node, $arg, $arguments, $type, $lineno); } public function parseFilterExpression($node) { $this->parser->getStream()->next(); return $this->parseFilterExpressionRaw($node); } public function parseFilterExpressionRaw($node, $tag = null) { while (true) { $token = $this->parser->getStream()->expect(Token::NAME_TYPE); $name = new ConstantExpression($token->getValue(), $token->getLine()); if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '(')) { $arguments = new Node(); } else { $arguments = $this->parseArguments(true, false, true); } $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); $node = new $class($node, $name, $arguments, $token->getLine(), $tag); if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '|')) { break; } $this->parser->getStream()->next(); } return $node; } /** * Parses arguments. * * @param bool $namedArguments Whether to allow named arguments or not * @param bool $definition Whether we are parsing arguments for a function definition * * @return Node * * @throws SyntaxError */ public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false) { $args = []; $stream = $this->parser->getStream(); $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { if (!empty($args)) { $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); } if ($definition) { $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine()); } else { $value = $this->parseExpression(0, $allowArrow); } $name = null; if ($namedArguments && $token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) { if (!$value instanceof NameExpression) { throw new SyntaxError(sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); } $name = $value->getAttribute('name'); if ($definition) { $value = $this->parsePrimaryExpression(); if (!$this->checkConstantExpression($value)) { throw new SyntaxError(sprintf('A default value for an argument must be a constant (a boolean, a string, a number, or an array).'), $token->getLine(), $stream->getSourceContext()); } } else { $value = $this->parseExpression(0, $allowArrow); } } if ($definition) { if (null === $name) { $name = $value->getAttribute('name'); $value = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); } $args[$name] = $value; } else { if (null === $name) { $args[] = $value; } else { $args[$name] = $value; } } } $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); return new Node($args); } public function parseAssignmentExpression() { $stream = $this->parser->getStream(); $targets = []; while (true) { $token = $this->parser->getCurrentToken(); if ($stream->test(Token::OPERATOR_TYPE) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { // in this context, string operators are variable names $this->parser->getStream()->next(); } else { $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to'); } $value = $token->getValue(); if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) { throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); } $targets[] = new AssignNameExpression($value, $token->getLine()); if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } return new Node($targets); } public function parseMultitargetExpression() { $targets = []; while (true) { $targets[] = $this->parseExpression(); if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } return new Node($targets); } private function parseNotTestExpression(\Twig_NodeInterface $node) { return new NotUnary($this->parseTestExpression($node), $this->parser->getCurrentToken()->getLine()); } private function parseTestExpression(\Twig_NodeInterface $node) { $stream = $this->parser->getStream(); list($name, $test) = $this->getTest($node->getTemplateLine()); $class = $this->getTestNodeClass($test); $arguments = null; if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { $arguments = $this->parseArguments(true); } return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine()); } private function getTest($line) { $stream = $this->parser->getStream(); $name = $stream->expect(Token::NAME_TYPE)->getValue(); if ($test = $this->env->getTest($name)) { return [$name, $test]; } if ($stream->test(Token::NAME_TYPE)) { // try 2-words tests $name = $name.' '.$this->parser->getCurrentToken()->getValue(); if ($test = $this->env->getTest($name)) { $stream->next(); return [$name, $test]; } } $e = new SyntaxError(sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getTests())); throw $e; } private function getTestNodeClass($test) { if ($test instanceof TwigTest && $test->isDeprecated()) { $stream = $this->parser->getStream(); $message = sprintf('Twig Test "%s" is deprecated', $test->getName()); if (!\is_bool($test->getDeprecatedVersion())) { $message .= sprintf(' since version %s', $test->getDeprecatedVersion()); } if ($test->getAlternative()) { $message .= sprintf('. Use "%s" instead', $test->getAlternative()); } $src = $stream->getSourceContext(); $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $stream->getCurrent()->getLine()); @trigger_error($message, E_USER_DEPRECATED); } if ($test instanceof TwigTest) { return $test->getNodeClass(); } return $test instanceof \Twig_Test_Node ? $test->getClass() : 'Twig\Node\Expression\TestExpression'; } protected function getFunctionNodeClass($name, $line) { if (false === $function = $this->env->getFunction($name)) { $e = new SyntaxError(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFunctions())); throw $e; } if ($function instanceof TwigFunction && $function->isDeprecated()) { $message = sprintf('Twig Function "%s" is deprecated', $function->getName()); if (!\is_bool($function->getDeprecatedVersion())) { $message .= sprintf(' since version %s', $function->getDeprecatedVersion()); } if ($function->getAlternative()) { $message .= sprintf('. Use "%s" instead', $function->getAlternative()); } $src = $this->parser->getStream()->getSourceContext(); $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line); @trigger_error($message, E_USER_DEPRECATED); } if ($function instanceof TwigFunction) { return $function->getNodeClass(); } return $function instanceof \Twig_Function_Node ? $function->getClass() : 'Twig\Node\Expression\FunctionExpression'; } protected function getFilterNodeClass($name, $line) { if (false === $filter = $this->env->getFilter($name)) { $e = new SyntaxError(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFilters())); throw $e; } if ($filter instanceof TwigFilter && $filter->isDeprecated()) { $message = sprintf('Twig Filter "%s" is deprecated', $filter->getName()); if (!\is_bool($filter->getDeprecatedVersion())) { $message .= sprintf(' since version %s', $filter->getDeprecatedVersion()); } if ($filter->getAlternative()) { $message .= sprintf('. Use "%s" instead', $filter->getAlternative()); } $src = $this->parser->getStream()->getSourceContext(); $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line); @trigger_error($message, E_USER_DEPRECATED); } if ($filter instanceof TwigFilter) { return $filter->getNodeClass(); } return $filter instanceof \Twig_Filter_Node ? $filter->getClass() : 'Twig\Node\Expression\FilterExpression'; } // checks that the node only contains "constant" elements protected function checkConstantExpression(\Twig_NodeInterface $node) { if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression || $node instanceof NegUnary || $node instanceof PosUnary )) { return false; } foreach ($node as $n) { if (!$this->checkConstantExpression($n)) { return false; } } return true; } } class_alias('Twig\ExpressionParser', 'Twig_ExpressionParser'); db/login/vendor/twig/twig/src/TwigFunction.php000064400000005017151502156020015402 0ustar00 */ class TwigFunction { protected $name; protected $callable; protected $options; protected $arguments = []; public function __construct($name, $callable, array $options = []) { $this->name = $name; $this->callable = $callable; $this->options = array_merge([ 'needs_environment' => false, 'needs_context' => false, 'is_variadic' => false, 'is_safe' => null, 'is_safe_callback' => null, 'node_class' => '\Twig\Node\Expression\FunctionExpression', 'deprecated' => false, 'alternative' => null, ], $options); } public function getName() { return $this->name; } public function getCallable() { return $this->callable; } public function getNodeClass() { return $this->options['node_class']; } public function setArguments($arguments) { $this->arguments = $arguments; } public function getArguments() { return $this->arguments; } public function needsEnvironment() { return $this->options['needs_environment']; } public function needsContext() { return $this->options['needs_context']; } public function getSafe(Node $functionArgs) { if (null !== $this->options['is_safe']) { return $this->options['is_safe']; } if (null !== $this->options['is_safe_callback']) { return \call_user_func($this->options['is_safe_callback'], $functionArgs); } return []; } public function isVariadic() { return $this->options['is_variadic']; } public function isDeprecated() { return (bool) $this->options['deprecated']; } public function getDeprecatedVersion() { return $this->options['deprecated']; } public function getAlternative() { return $this->options['alternative']; } } class_alias('Twig\TwigFunction', 'Twig_SimpleFunction'); // Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name. class_exists('Twig\Node\Node'); db/login/vendor/twig/twig/src/Token.php000064400000013551151502156020014044 0ustar00 * * @final */ class Token { protected $value; protected $type; protected $lineno; const EOF_TYPE = -1; const TEXT_TYPE = 0; const BLOCK_START_TYPE = 1; const VAR_START_TYPE = 2; const BLOCK_END_TYPE = 3; const VAR_END_TYPE = 4; const NAME_TYPE = 5; const NUMBER_TYPE = 6; const STRING_TYPE = 7; const OPERATOR_TYPE = 8; const PUNCTUATION_TYPE = 9; const INTERPOLATION_START_TYPE = 10; const INTERPOLATION_END_TYPE = 11; const ARROW_TYPE = 12; /** * @param int $type The type of the token * @param string $value The token value * @param int $lineno The line position in the source */ public function __construct($type, $value, $lineno) { $this->type = $type; $this->value = $value; $this->lineno = $lineno; } public function __toString() { return sprintf('%s(%s)', self::typeToString($this->type, true), $this->value); } /** * Tests the current token for a type and/or a value. * * Parameters may be: * * just type * * type and value (or array of possible values) * * just value (or array of possible values) (NAME_TYPE is used as type) * * @param array|string|int $type The type to test * @param array|string|null $values The token value * * @return bool */ public function test($type, $values = null) { if (null === $values && !\is_int($type)) { $values = $type; $type = self::NAME_TYPE; } return ($this->type === $type) && ( null === $values || (\is_array($values) && \in_array($this->value, $values)) || $this->value == $values ); } /** * @return int */ public function getLine() { return $this->lineno; } /** * @return int */ public function getType() { return $this->type; } /** * @return string */ public function getValue() { return $this->value; } /** * Returns the constant representation (internal) of a given type. * * @param int $type The type as an integer * @param bool $short Whether to return a short representation or not * * @return string The string representation */ public static function typeToString($type, $short = false) { switch ($type) { case self::EOF_TYPE: $name = 'EOF_TYPE'; break; case self::TEXT_TYPE: $name = 'TEXT_TYPE'; break; case self::BLOCK_START_TYPE: $name = 'BLOCK_START_TYPE'; break; case self::VAR_START_TYPE: $name = 'VAR_START_TYPE'; break; case self::BLOCK_END_TYPE: $name = 'BLOCK_END_TYPE'; break; case self::VAR_END_TYPE: $name = 'VAR_END_TYPE'; break; case self::NAME_TYPE: $name = 'NAME_TYPE'; break; case self::NUMBER_TYPE: $name = 'NUMBER_TYPE'; break; case self::STRING_TYPE: $name = 'STRING_TYPE'; break; case self::OPERATOR_TYPE: $name = 'OPERATOR_TYPE'; break; case self::PUNCTUATION_TYPE: $name = 'PUNCTUATION_TYPE'; break; case self::INTERPOLATION_START_TYPE: $name = 'INTERPOLATION_START_TYPE'; break; case self::INTERPOLATION_END_TYPE: $name = 'INTERPOLATION_END_TYPE'; break; case self::ARROW_TYPE: $name = 'ARROW_TYPE'; break; default: throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type)); } return $short ? $name : 'Twig\Token::'.$name; } /** * Returns the English representation of a given type. * * @param int $type The type as an integer * * @return string The string representation */ public static function typeToEnglish($type) { switch ($type) { case self::EOF_TYPE: return 'end of template'; case self::TEXT_TYPE: return 'text'; case self::BLOCK_START_TYPE: return 'begin of statement block'; case self::VAR_START_TYPE: return 'begin of print statement'; case self::BLOCK_END_TYPE: return 'end of statement block'; case self::VAR_END_TYPE: return 'end of print statement'; case self::NAME_TYPE: return 'name'; case self::NUMBER_TYPE: return 'number'; case self::STRING_TYPE: return 'string'; case self::OPERATOR_TYPE: return 'operator'; case self::PUNCTUATION_TYPE: return 'punctuation'; case self::INTERPOLATION_START_TYPE: return 'begin of string interpolation'; case self::INTERPOLATION_END_TYPE: return 'end of string interpolation'; case self::ARROW_TYPE: return 'arrow function'; default: throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type)); } } } class_alias('Twig\Token', 'Twig_Token'); db/login/vendor/twig/twig/src/TokenStream.php000064400000012564151502156020015223 0ustar00 */ class TokenStream { protected $tokens; protected $current = 0; protected $filename; private $source; /** * @param array $tokens An array of tokens * @param string|null $name The name of the template which tokens are associated with * @param string|null $source The source code associated with the tokens */ public function __construct(array $tokens, $name = null, $source = null) { if (!$name instanceof Source) { if (null !== $name || null !== $source) { @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED); } $this->source = new Source($source, $name); } else { $this->source = $name; } $this->tokens = $tokens; // deprecated, not used anymore, to be removed in 2.0 $this->filename = $this->source->getName(); } public function __toString() { return implode("\n", $this->tokens); } public function injectTokens(array $tokens) { $this->tokens = array_merge(\array_slice($this->tokens, 0, $this->current), $tokens, \array_slice($this->tokens, $this->current)); } /** * Sets the pointer to the next token and returns the old one. * * @return Token */ public function next() { if (!isset($this->tokens[++$this->current])) { throw new SyntaxError('Unexpected end of template.', $this->tokens[$this->current - 1]->getLine(), $this->source); } return $this->tokens[$this->current - 1]; } /** * Tests a token, sets the pointer to the next one and returns it or throws a syntax error. * * @return Token|null The next token if the condition is true, null otherwise */ public function nextIf($primary, $secondary = null) { if ($this->tokens[$this->current]->test($primary, $secondary)) { return $this->next(); } } /** * Tests a token and returns it or throws a syntax error. * * @return Token */ public function expect($type, $value = null, $message = null) { $token = $this->tokens[$this->current]; if (!$token->test($type, $value)) { $line = $token->getLine(); throw new SyntaxError(sprintf('%sUnexpected token "%s"%s ("%s" expected%s).', $message ? $message.'. ' : '', Token::typeToEnglish($token->getType()), $token->getValue() ? sprintf(' of value "%s"', $token->getValue()) : '', Token::typeToEnglish($type), $value ? sprintf(' with value "%s"', $value) : ''), $line, $this->source ); } $this->next(); return $token; } /** * Looks at the next token. * * @param int $number * * @return Token */ public function look($number = 1) { if (!isset($this->tokens[$this->current + $number])) { throw new SyntaxError('Unexpected end of template.', $this->tokens[$this->current + $number - 1]->getLine(), $this->source); } return $this->tokens[$this->current + $number]; } /** * Tests the current token. * * @return bool */ public function test($primary, $secondary = null) { return $this->tokens[$this->current]->test($primary, $secondary); } /** * Checks if end of stream was reached. * * @return bool */ public function isEOF() { return Token::EOF_TYPE === $this->tokens[$this->current]->getType(); } /** * @return Token */ public function getCurrent() { return $this->tokens[$this->current]; } /** * Gets the name associated with this stream (null if not defined). * * @return string|null * * @deprecated since 1.27 (to be removed in 2.0) */ public function getFilename() { @trigger_error(sprintf('The %s() method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); return $this->source->getName(); } /** * Gets the source code associated with this stream. * * @return string * * @internal Don't use this as it might be empty depending on the environment configuration * * @deprecated since 1.27 (to be removed in 2.0) */ public function getSource() { @trigger_error(sprintf('The %s() method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); return $this->source->getCode(); } /** * Gets the source associated with this stream. * * @return Source * * @internal */ public function getSourceContext() { return $this->source; } } class_alias('Twig\TokenStream', 'Twig_TokenStream'); db/login/vendor/twig/twig/src/TokenParser/DoTokenParser.php000064400000001440151502156020017733 0ustar00parser->getExpressionParser()->parseExpression(); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); return new DoNode($expr, $token->getLine(), $this->getTag()); } public function getTag() { return 'do'; } } class_alias('Twig\TokenParser\DoTokenParser', 'Twig_TokenParser_Do'); db/login/vendor/twig/twig/src/TokenParser/WithTokenParser.php000064400000002410151502156020020302 0ustar00 * * @final */ class WithTokenParser extends AbstractTokenParser { public function parse(Token $token) { $stream = $this->parser->getStream(); $variables = null; $only = false; if (!$stream->test(Token::BLOCK_END_TYPE)) { $variables = $this->parser->getExpressionParser()->parseExpression(); $only = $stream->nextIf(Token::NAME_TYPE, 'only'); } $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideWithEnd'], true); $stream->expect(Token::BLOCK_END_TYPE); return new WithNode($body, $variables, $only, $token->getLine(), $this->getTag()); } public function decideWithEnd(Token $token) { return $token->test('endwith'); } public function getTag() { return 'with'; } } class_alias('Twig\TokenParser\WithTokenParser', 'Twig_TokenParser_With'); db/login/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php000064400000005132151502156020021424 0ustar00getLine(); $stream = $this->parser->getStream(); if ($stream->test(Token::BLOCK_END_TYPE)) { $value = 'html'; } else { $expr = $this->parser->getExpressionParser()->parseExpression(); if (!$expr instanceof ConstantExpression) { throw new SyntaxError('An escaping strategy must be a string or a bool.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } $value = $expr->getAttribute('value'); $compat = true === $value || false === $value; if (true === $value) { $value = 'html'; } if ($compat && $stream->test(Token::NAME_TYPE)) { @trigger_error('Using the autoescape tag with "true" or "false" before the strategy name is deprecated since version 1.21.', E_USER_DEPRECATED); if (false === $value) { throw new SyntaxError('Unexpected escaping strategy as you set autoescaping to false.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } $value = $stream->next()->getValue(); } } $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); $stream->expect(Token::BLOCK_END_TYPE); return new AutoEscapeNode($value, $body, $lineno, $this->getTag()); } public function decideBlockEnd(Token $token) { return $token->test('endautoescape'); } public function getTag() { return 'autoescape'; } } class_alias('Twig\TokenParser\AutoEscapeTokenParser', 'Twig_TokenParser_AutoEscape'); db/login/vendor/twig/twig/src/TokenParser/FromTokenParser.php000064400000003570151502156020020302 0ustar00parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); $stream->expect(Token::NAME_TYPE, 'import'); $targets = []; do { $name = $stream->expect(Token::NAME_TYPE)->getValue(); $alias = $name; if ($stream->nextIf('as')) { $alias = $stream->expect(Token::NAME_TYPE)->getValue(); } $targets[$name] = $alias; if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } while (true); $stream->expect(Token::BLOCK_END_TYPE); $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag()); foreach ($targets as $name => $alias) { if ($this->parser->isReservedMacroName($name)) { throw new SyntaxError(sprintf('"%s" cannot be an imported macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getSourceContext()); } $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $var); } return $node; } public function getTag() { return 'from'; } } class_alias('Twig\TokenParser\FromTokenParser', 'Twig_TokenParser_From'); db/login/vendor/twig/twig/src/TokenParser/SetTokenParser.php000064400000004037151502156020020131 0ustar00getLine(); $stream = $this->parser->getStream(); $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); $capture = false; if ($stream->nextIf(Token::OPERATOR_TYPE, '=')) { $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); $stream->expect(Token::BLOCK_END_TYPE); if (\count($names) !== \count($values)) { throw new SyntaxError('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } } else { $capture = true; if (\count($names) > 1) { throw new SyntaxError('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } $stream->expect(Token::BLOCK_END_TYPE); $values = $this->parser->subparse([$this, 'decideBlockEnd'], true); $stream->expect(Token::BLOCK_END_TYPE); } return new SetNode($capture, $names, $values, $lineno, $this->getTag()); } public function decideBlockEnd(Token $token) { return $token->test('endset'); } public function getTag() { return 'set'; } } class_alias('Twig\TokenParser\SetTokenParser', 'Twig_TokenParser_Set'); db/login/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php000064400000002661151502156020020464 0ustar00getLine(); $name = $this->parser->getVarName(); $ref = new TempNameExpression($name, $lineno); $ref->setAttribute('always_defined', true); $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideApplyEnd'], true); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); return new Node([ new SetNode(true, $ref, $body, $lineno, $this->getTag()), new PrintNode($filter, $lineno, $this->getTag()), ]); } public function decideApplyEnd(Token $token) { return $token->test('endapply'); } public function getTag() { return 'apply'; } } db/login/vendor/twig/twig/src/TokenParser/IfTokenParser.php000064400000004713151502156020017735 0ustar00 * {% for user in users %} *
        • {{ user.username|e }}
        • * {% endfor %} * * {% endif %} * * @final */ class IfTokenParser extends AbstractTokenParser { public function parse(Token $token) { $lineno = $token->getLine(); $expr = $this->parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideIfFork']); $tests = [$expr, $body]; $else = null; $end = false; while (!$end) { switch ($stream->next()->getValue()) { case 'else': $stream->expect(Token::BLOCK_END_TYPE); $else = $this->parser->subparse([$this, 'decideIfEnd']); break; case 'elseif': $expr = $this->parser->getExpressionParser()->parseExpression(); $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideIfFork']); $tests[] = $expr; $tests[] = $body; break; case 'endif': $end = true; break; default: throw new SyntaxError(sprintf('Unexpected end of template. Twig was looking for the following tags "else", "elseif", or "endif" to close the "if" block started at line %d).', $lineno), $stream->getCurrent()->getLine(), $stream->getSourceContext()); } } $stream->expect(Token::BLOCK_END_TYPE); return new IfNode(new Node($tests), $else, $lineno, $this->getTag()); } public function decideIfFork(Token $token) { return $token->test(['elseif', 'else', 'endif']); } public function decideIfEnd(Token $token) { return $token->test(['endif']); } public function getTag() { return 'if'; } } class_alias('Twig\TokenParser\IfTokenParser', 'Twig_TokenParser_If'); db/login/vendor/twig/twig/src/TokenParser/ForTokenParser.php000064400000011152151502156020020120 0ustar00 * {% for user in users %} *
        • {{ user.username|e }}
        • * {% endfor %} * * * @final */ class ForTokenParser extends AbstractTokenParser { public function parse(Token $token) { $lineno = $token->getLine(); $stream = $this->parser->getStream(); $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); $stream->expect(Token::OPERATOR_TYPE, 'in'); $seq = $this->parser->getExpressionParser()->parseExpression(); $ifexpr = null; if ($stream->nextIf(Token::NAME_TYPE, 'if')) { $ifexpr = $this->parser->getExpressionParser()->parseExpression(); } $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideForFork']); if ('else' == $stream->next()->getValue()) { $stream->expect(Token::BLOCK_END_TYPE); $else = $this->parser->subparse([$this, 'decideForEnd'], true); } else { $else = null; } $stream->expect(Token::BLOCK_END_TYPE); if (\count($targets) > 1) { $keyTarget = $targets->getNode(0); $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); $valueTarget = $targets->getNode(1); $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); } else { $keyTarget = new AssignNameExpression('_key', $lineno); $valueTarget = $targets->getNode(0); $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); } if ($ifexpr) { $this->checkLoopUsageCondition($stream, $ifexpr); $this->checkLoopUsageBody($stream, $body); } return new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, $lineno, $this->getTag()); } public function decideForFork(Token $token) { return $token->test(['else', 'endfor']); } public function decideForEnd(Token $token) { return $token->test('endfor'); } // the loop variable cannot be used in the condition protected function checkLoopUsageCondition(TokenStream $stream, \Twig_NodeInterface $node) { if ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression && 'loop' == $node->getNode('node')->getAttribute('name')) { throw new SyntaxError('The "loop" variable cannot be used in a looping condition.', $node->getTemplateLine(), $stream->getSourceContext()); } foreach ($node as $n) { if (!$n) { continue; } $this->checkLoopUsageCondition($stream, $n); } } // check usage of non-defined loop-items // it does not catch all problems (for instance when a for is included into another or when the variable is used in an include) protected function checkLoopUsageBody(TokenStream $stream, \Twig_NodeInterface $node) { if ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression && 'loop' == $node->getNode('node')->getAttribute('name')) { $attribute = $node->getNode('attribute'); if ($attribute instanceof ConstantExpression && \in_array($attribute->getAttribute('value'), ['length', 'revindex0', 'revindex', 'last'])) { throw new SyntaxError(sprintf('The "loop.%s" variable is not defined when looping with a condition.', $attribute->getAttribute('value')), $node->getTemplateLine(), $stream->getSourceContext()); } } // should check for parent.loop.XXX usage if ($node instanceof ForNode) { return; } foreach ($node as $n) { if (!$n) { continue; } $this->checkLoopUsageBody($stream, $n); } } public function getTag() { return 'for'; } } class_alias('Twig\TokenParser\ForTokenParser', 'Twig_TokenParser_For'); db/login/vendor/twig/twig/src/TokenParser/TokenParserInterface.php000064400000002161151502156020021272 0ustar00 */ interface TokenParserInterface { /** * Sets the parser associated with this token parser. */ public function setParser(Parser $parser); /** * Parses a token and returns a node. * * @return \Twig_NodeInterface * * @throws SyntaxError */ public function parse(Token $token); /** * Gets the tag name associated with this token parser. * * @return string The tag name */ public function getTag(); } class_alias('Twig\TokenParser\TokenParserInterface', 'Twig_TokenParserInterface'); // Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name. class_exists('Twig\Token'); class_exists('Twig\Parser'); db/login/vendor/twig/twig/src/TokenParser/FlushTokenParser.php000064400000001336151502156020020456 0ustar00parser->getStream()->expect(Token::BLOCK_END_TYPE); return new FlushNode($token->getLine(), $this->getTag()); } public function getTag() { return 'flush'; } } class_alias('Twig\TokenParser\FlushTokenParser', 'Twig_TokenParser_Flush'); db/login/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php000064400000002604151502156020021006 0ustar00parser->getStream(); if ($this->parser->peekBlockStack()) { throw new SyntaxError('Cannot use "extend" in a block.', $token->getLine(), $stream->getSourceContext()); } elseif (!$this->parser->isMainScope()) { throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext()); } if (null !== $this->parser->getParent()) { throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); } $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); $stream->expect(Token::BLOCK_END_TYPE); return new Node(); } public function getTag() { return 'extends'; } } class_alias('Twig\TokenParser\ExtendsTokenParser', 'Twig_TokenParser_Extends'); db/login/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php000064400000001201151502156020021127 0ustar00 */ abstract class AbstractTokenParser implements TokenParserInterface { /** * @var Parser */ protected $parser; public function setParser(Parser $parser) { $this->parser = $parser; } } class_alias('Twig\TokenParser\AbstractTokenParser', 'Twig_TokenParser'); db/login/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php000064400000001765151502156020021443 0ustar00 * * @final */ class DeprecatedTokenParser extends AbstractTokenParser { public function parse(Token $token) { $expr = $this->parser->getExpressionParser()->parseExpression(); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); return new DeprecatedNode($expr, $token->getLine(), $this->getTag()); } public function getTag() { return 'deprecated'; } } class_alias('Twig\TokenParser\DeprecatedTokenParser', 'Twig_TokenParser_Deprecated'); db/login/vendor/twig/twig/src/TokenParser/MacroTokenParser.php000064400000003565151502156020020444 0ustar00 * {% endmacro %} * * @final */ class MacroTokenParser extends AbstractTokenParser { public function parse(Token $token) { $lineno = $token->getLine(); $stream = $this->parser->getStream(); $name = $stream->expect(Token::NAME_TYPE)->getValue(); $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); $stream->expect(Token::BLOCK_END_TYPE); $this->parser->pushLocalScope(); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); if ($token = $stream->nextIf(Token::NAME_TYPE)) { $value = $token->getValue(); if ($value != $name) { throw new SyntaxError(sprintf('Expected endmacro for macro "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); } } $this->parser->popLocalScope(); $stream->expect(Token::BLOCK_END_TYPE); $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno, $this->getTag())); return new Node(); } public function decideBlockEnd(Token $token) { return $token->test('endmacro'); } public function getTag() { return 'macro'; } } class_alias('Twig\TokenParser\MacroTokenParser', 'Twig_TokenParser_Macro'); db/login/vendor/twig/twig/src/TokenParser/FilterTokenParser.php000064400000003100151502156020020611 0ustar00parser->getVarName(); $ref = new BlockReferenceExpression(new ConstantExpression($name, $token->getLine()), null, $token->getLine(), $this->getTag()); $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $block = new BlockNode($name, $body, $token->getLine()); $this->parser->setBlock($name, $block); return new PrintNode($filter, $token->getLine(), $this->getTag()); } public function decideBlockEnd(Token $token) { return $token->test('endfilter'); } public function getTag() { return 'filter'; } } class_alias('Twig\TokenParser\FilterTokenParser', 'Twig_TokenParser_Filter'); db/login/vendor/twig/twig/src/TokenParser/ImportTokenParser.php000064400000002206151502156020020644 0ustar00parser->getExpressionParser()->parseExpression(); $this->parser->getStream()->expect(Token::NAME_TYPE, 'as'); $var = new AssignNameExpression($this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(), $token->getLine()); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $this->parser->addImportedSymbol('template', $var->getAttribute('name')); return new ImportNode($macro, $var, $token->getLine(), $this->getTag()); } public function getTag() { return 'import'; } } class_alias('Twig\TokenParser\ImportTokenParser', 'Twig_TokenParser_Import'); db/login/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php000064400000003444151502156020020775 0ustar00parser->getStream(); $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); $stream->expect(Token::BLOCK_END_TYPE); // in a sandbox tag, only include tags are allowed if (!$body instanceof IncludeNode) { foreach ($body as $node) { if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { continue; } if (!$node instanceof IncludeNode) { throw new SyntaxError('Only "include" tags are allowed within a "sandbox" section.', $node->getTemplateLine(), $stream->getSourceContext()); } } } return new SandboxNode($body, $token->getLine(), $this->getTag()); } public function decideBlockEnd(Token $token) { return $token->test('endsandbox'); } public function getTag() { return 'sandbox'; } } class_alias('Twig\TokenParser\SandboxTokenParser', 'Twig_TokenParser_Sandbox'); db/login/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php000064400000003123151502156020020754 0ustar00parser->getExpressionParser()->parseExpression(); list($variables, $only, $ignoreMissing) = $this->parseArguments(); return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); } protected function parseArguments() { $stream = $this->parser->getStream(); $ignoreMissing = false; if ($stream->nextIf(Token::NAME_TYPE, 'ignore')) { $stream->expect(Token::NAME_TYPE, 'missing'); $ignoreMissing = true; } $variables = null; if ($stream->nextIf(Token::NAME_TYPE, 'with')) { $variables = $this->parser->getExpressionParser()->parseExpression(); } $only = false; if ($stream->nextIf(Token::NAME_TYPE, 'only')) { $only = true; } $stream->expect(Token::BLOCK_END_TYPE); return [$variables, $only, $ignoreMissing]; } public function getTag() { return 'include'; } } class_alias('Twig\TokenParser\IncludeTokenParser', 'Twig_TokenParser_Include'); db/login/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php000064400000004304151502156020020407 0ustar00parser->getStream(); $parent = $this->parser->getExpressionParser()->parseExpression(); list($variables, $only, $ignoreMissing) = $this->parseArguments(); $parentToken = $fakeParentToken = new Token(Token::STRING_TYPE, '__parent__', $token->getLine()); if ($parent instanceof ConstantExpression) { $parentToken = new Token(Token::STRING_TYPE, $parent->getAttribute('value'), $token->getLine()); } elseif ($parent instanceof NameExpression) { $parentToken = new Token(Token::NAME_TYPE, $parent->getAttribute('name'), $token->getLine()); } // inject a fake parent to make the parent() function work $stream->injectTokens([ new Token(Token::BLOCK_START_TYPE, '', $token->getLine()), new Token(Token::NAME_TYPE, 'extends', $token->getLine()), $parentToken, new Token(Token::BLOCK_END_TYPE, '', $token->getLine()), ]); $module = $this->parser->parse($stream, [$this, 'decideBlockEnd'], true); // override the parent with the correct one if ($fakeParentToken === $parentToken) { $module->setNode('parent', $parent); } $this->parser->embedTemplate($module); $stream->expect(Token::BLOCK_END_TYPE); return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); } public function decideBlockEnd(Token $token) { return $token->test('endembed'); } public function getTag() { return 'embed'; } } class_alias('Twig\TokenParser\EmbedTokenParser', 'Twig_TokenParser_Embed'); db/login/vendor/twig/twig/src/TokenParser/UseTokenParser.php000064400000003712151502156020020131 0ustar00parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); if (!$template instanceof ConstantExpression) { throw new SyntaxError('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } $targets = []; if ($stream->nextIf('with')) { do { $name = $stream->expect(Token::NAME_TYPE)->getValue(); $alias = $name; if ($stream->nextIf('as')) { $alias = $stream->expect(Token::NAME_TYPE)->getValue(); } $targets[$name] = new ConstantExpression($alias, -1); if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } while (true); } $stream->expect(Token::BLOCK_END_TYPE); $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); return new Node(); } public function getTag() { return 'use'; } } class_alias('Twig\TokenParser\UseTokenParser', 'Twig_TokenParser_Use'); db/login/vendor/twig/twig/src/TokenParser/SpacelessTokenParser.php000064400000002262151502156020021316 0ustar00 * foo * * {% endspaceless %} * {# output will be
          foo
          #} * * @final */ class SpacelessTokenParser extends AbstractTokenParser { public function parse(Token $token) { $lineno = $token->getLine(); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideSpacelessEnd'], true); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); return new SpacelessNode($body, $lineno, $this->getTag()); } public function decideSpacelessEnd(Token $token) { return $token->test('endspaceless'); } public function getTag() { return 'spaceless'; } } class_alias('Twig\TokenParser\SpacelessTokenParser', 'Twig_TokenParser_Spaceless'); db/login/vendor/twig/twig/src/TokenParser/BlockTokenParser.php000064400000004677151502156020020442 0ustar00 * {% block title %}{% endblock %} - My Webpage * {% endblock %} * * @final */ class BlockTokenParser extends AbstractTokenParser { public function parse(Token $token) { $lineno = $token->getLine(); $stream = $this->parser->getStream(); $name = $stream->expect(Token::NAME_TYPE)->getValue(); if ($this->parser->hasBlock($name)) { throw new SyntaxError(sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext()); } $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno)); $this->parser->pushLocalScope(); $this->parser->pushBlockStack($name); if ($stream->nextIf(Token::BLOCK_END_TYPE)) { $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); if ($token = $stream->nextIf(Token::NAME_TYPE)) { $value = $token->getValue(); if ($value != $name) { throw new SyntaxError(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); } } } else { $body = new Node([ new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno), ]); } $stream->expect(Token::BLOCK_END_TYPE); $block->setNode('body', $body); $this->parser->popBlockStack(); $this->parser->popLocalScope(); return new BlockReferenceNode($name, $lineno, $this->getTag()); } public function decideBlockEnd(Token $token) { return $token->test('endblock'); } public function getTag() { return 'block'; } } class_alias('Twig\TokenParser\BlockTokenParser', 'Twig_TokenParser_Block'); db/login/vendor/twig/twig/src/Compiler.php000064400000016172151502156020014540 0ustar00 */ class Compiler implements \Twig_CompilerInterface { protected $lastLine; protected $source; protected $indentation; protected $env; protected $debugInfo = []; protected $sourceOffset; protected $sourceLine; protected $filename; private $varNameSalt = 0; public function __construct(Environment $env) { $this->env = $env; } /** * @deprecated since 1.25 (to be removed in 2.0) */ public function getFilename() { @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); return $this->filename; } /** * Returns the environment instance related to this compiler. * * @return Environment */ public function getEnvironment() { return $this->env; } /** * Gets the current PHP code after compilation. * * @return string The PHP code */ public function getSource() { return $this->source; } /** * Compiles a node. * * @param int $indentation The current indentation * * @return $this */ public function compile(\Twig_NodeInterface $node, $indentation = 0) { $this->lastLine = null; $this->source = ''; $this->debugInfo = []; $this->sourceOffset = 0; // source code starts at 1 (as we then increment it when we encounter new lines) $this->sourceLine = 1; $this->indentation = $indentation; $this->varNameSalt = 0; if ($node instanceof ModuleNode) { // to be removed in 2.0 $this->filename = $node->getTemplateName(); } $node->compile($this); return $this; } public function subcompile(\Twig_NodeInterface $node, $raw = true) { if (false === $raw) { $this->source .= str_repeat(' ', $this->indentation * 4); } $node->compile($this); return $this; } /** * Adds a raw string to the compiled code. * * @param string $string The string * * @return $this */ public function raw($string) { $this->source .= $string; return $this; } /** * Writes a string to the compiled code by adding indentation. * * @return $this */ public function write() { $strings = \func_get_args(); foreach ($strings as $string) { $this->source .= str_repeat(' ', $this->indentation * 4).$string; } return $this; } /** * Appends an indentation to the current PHP code after compilation. * * @return $this * * @deprecated since 1.27 (to be removed in 2.0). */ public function addIndentation() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use write(\'\') instead.', E_USER_DEPRECATED); $this->source .= str_repeat(' ', $this->indentation * 4); return $this; } /** * Adds a quoted string to the compiled code. * * @param string $value The string * * @return $this */ public function string($value) { $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); return $this; } /** * Returns a PHP representation of a given value. * * @param mixed $value The value to convert * * @return $this */ public function repr($value) { if (\is_int($value) || \is_float($value)) { if (false !== $locale = setlocale(LC_NUMERIC, '0')) { setlocale(LC_NUMERIC, 'C'); } $this->raw(var_export($value, true)); if (false !== $locale) { setlocale(LC_NUMERIC, $locale); } } elseif (null === $value) { $this->raw('null'); } elseif (\is_bool($value)) { $this->raw($value ? 'true' : 'false'); } elseif (\is_array($value)) { $this->raw('['); $first = true; foreach ($value as $key => $v) { if (!$first) { $this->raw(', '); } $first = false; $this->repr($key); $this->raw(' => '); $this->repr($v); } $this->raw(']'); } else { $this->string($value); } return $this; } /** * Adds debugging information. * * @return $this */ public function addDebugInfo(\Twig_NodeInterface $node) { if ($node->getTemplateLine() != $this->lastLine) { $this->write(sprintf("// line %d\n", $node->getTemplateLine())); // when mbstring.func_overload is set to 2 // mb_substr_count() replaces substr_count() // but they have different signatures! if (((int) ini_get('mbstring.func_overload')) & 2) { @trigger_error('Support for having "mbstring.func_overload" different from 0 is deprecated version 1.29 and will be removed in 2.0.', E_USER_DEPRECATED); // this is much slower than the "right" version $this->sourceLine += mb_substr_count(mb_substr($this->source, $this->sourceOffset), "\n"); } else { $this->sourceLine += substr_count($this->source, "\n", $this->sourceOffset); } $this->sourceOffset = \strlen($this->source); $this->debugInfo[$this->sourceLine] = $node->getTemplateLine(); $this->lastLine = $node->getTemplateLine(); } return $this; } public function getDebugInfo() { ksort($this->debugInfo); return $this->debugInfo; } /** * Indents the generated code. * * @param int $step The number of indentation to add * * @return $this */ public function indent($step = 1) { $this->indentation += $step; return $this; } /** * Outdents the generated code. * * @param int $step The number of indentation to remove * * @return $this * * @throws \LogicException When trying to outdent too much so the indentation would become negative */ public function outdent($step = 1) { // can't outdent by more steps than the current indentation level if ($this->indentation < $step) { throw new \LogicException('Unable to call outdent() as the indentation would become negative.'); } $this->indentation -= $step; return $this; } public function getVarName() { return sprintf('__internal_%s', hash('sha256', __METHOD__.$this->varNameSalt++)); } } class_alias('Twig\Compiler', 'Twig_Compiler'); db/login/vendor/twig/twig/src/FileExtensionEscapingStrategy.php000064400000002761151502156020020736 0ustar00 */ class FileExtensionEscapingStrategy { /** * Guesses the best autoescaping strategy based on the file name. * * @param string $name The template name * * @return string|false The escaping strategy name to use or false to disable */ public static function guess($name) { if (\in_array(substr($name, -1), ['/', '\\'])) { return 'html'; // return html for directories } if ('.twig' === substr($name, -5)) { $name = substr($name, 0, -5); } $extension = pathinfo($name, PATHINFO_EXTENSION); switch ($extension) { case 'js': return 'js'; case 'css': return 'css'; case 'txt': return false; default: return 'html'; } } } class_alias('Twig\FileExtensionEscapingStrategy', 'Twig_FileExtensionEscapingStrategy'); db/login/vendor/twig/twig/src/TemplateWrapper.php000064400000007636151502156020016107 0ustar00 */ final class TemplateWrapper { private $env; private $template; /** * This method is for internal use only and should never be called * directly (use Twig\Environment::load() instead). * * @internal */ public function __construct(Environment $env, Template $template) { $this->env = $env; $this->template = $template; } /** * Renders the template. * * @param array $context An array of parameters to pass to the template * * @return string The rendered template */ public function render($context = []) { // using func_get_args() allows to not expose the blocks argument // as it should only be used by internal code return $this->template->render($context, \func_num_args() > 1 ? func_get_arg(1) : []); } /** * Displays the template. * * @param array $context An array of parameters to pass to the template */ public function display($context = []) { // using func_get_args() allows to not expose the blocks argument // as it should only be used by internal code $this->template->display($context, \func_num_args() > 1 ? func_get_arg(1) : []); } /** * Checks if a block is defined. * * @param string $name The block name * @param array $context An array of parameters to pass to the template * * @return bool */ public function hasBlock($name, $context = []) { return $this->template->hasBlock($name, $context); } /** * Returns defined block names in the template. * * @param array $context An array of parameters to pass to the template * * @return string[] An array of defined template block names */ public function getBlockNames($context = []) { return $this->template->getBlockNames($context); } /** * Renders a template block. * * @param string $name The block name to render * @param array $context An array of parameters to pass to the template * * @return string The rendered block */ public function renderBlock($name, $context = []) { $context = $this->env->mergeGlobals($context); $level = ob_get_level(); if ($this->env->isDebug()) { ob_start(); } else { ob_start(function () { return ''; }); } try { $this->template->displayBlock($name, $context); } catch (\Exception $e) { while (ob_get_level() > $level) { ob_end_clean(); } throw $e; } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } throw $e; } return ob_get_clean(); } /** * Displays a template block. * * @param string $name The block name to render * @param array $context An array of parameters to pass to the template */ public function displayBlock($name, $context = []) { $this->template->displayBlock($name, $this->env->mergeGlobals($context)); } /** * @return Source */ public function getSourceContext() { return $this->template->getSourceContext(); } /** * @return string */ public function getTemplateName() { return $this->template->getTemplateName(); } /** * @internal * * @return Template */ public function unwrap() { return $this->template; } } class_alias('Twig\TemplateWrapper', 'Twig_TemplateWrapper'); db/login/vendor/twig/twig/src/Parser.php000064400000032630151502156020014217 0ustar00 */ class Parser implements \Twig_ParserInterface { protected $stack = []; protected $stream; protected $parent; protected $handlers; protected $visitors; protected $expressionParser; protected $blocks; protected $blockStack; protected $macros; protected $env; protected $reservedMacroNames; protected $importedSymbols; protected $traits; protected $embeddedTemplates = []; private $varNameSalt = 0; public function __construct(Environment $env) { $this->env = $env; } /** * @deprecated since 1.27 (to be removed in 2.0) */ public function getEnvironment() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED); return $this->env; } public function getVarName() { return sprintf('__internal_%s', hash('sha256', __METHOD__.$this->stream->getSourceContext()->getCode().$this->varNameSalt++)); } /** * @deprecated since 1.27 (to be removed in 2.0). Use $parser->getStream()->getSourceContext()->getPath() instead. */ public function getFilename() { @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use $parser->getStream()->getSourceContext()->getPath() instead.', __METHOD__), E_USER_DEPRECATED); return $this->stream->getSourceContext()->getName(); } public function parse(TokenStream $stream, $test = null, $dropNeedle = false) { // push all variables into the stack to keep the current state of the parser // using get_object_vars() instead of foreach would lead to https://bugs.php.net/71336 // This hack can be removed when min version if PHP 7.0 $vars = []; foreach ($this as $k => $v) { $vars[$k] = $v; } unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']); $this->stack[] = $vars; // tag handlers if (null === $this->handlers) { $this->handlers = $this->env->getTokenParsers(); $this->handlers->setParser($this); } // node visitors if (null === $this->visitors) { $this->visitors = $this->env->getNodeVisitors(); } if (null === $this->expressionParser) { $this->expressionParser = new ExpressionParser($this, $this->env); } $this->stream = $stream; $this->parent = null; $this->blocks = []; $this->macros = []; $this->traits = []; $this->blockStack = []; $this->importedSymbols = [[]]; $this->embeddedTemplates = []; $this->varNameSalt = 0; try { $body = $this->subparse($test, $dropNeedle); if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { $body = new Node(); } } catch (SyntaxError $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->stream->getSourceContext()); } if (!$e->getTemplateLine()) { $e->setTemplateLine($this->stream->getCurrent()->getLine()); } throw $e; } $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); $traverser = new NodeTraverser($this->env, $this->visitors); $node = $traverser->traverse($node); // restore previous stack so previous parse() call can resume working foreach (array_pop($this->stack) as $key => $val) { $this->$key = $val; } return $node; } public function subparse($test, $dropNeedle = false) { $lineno = $this->getCurrentToken()->getLine(); $rv = []; while (!$this->stream->isEOF()) { switch ($this->getCurrentToken()->getType()) { case Token::TEXT_TYPE: $token = $this->stream->next(); $rv[] = new TextNode($token->getValue(), $token->getLine()); break; case Token::VAR_START_TYPE: $token = $this->stream->next(); $expr = $this->expressionParser->parseExpression(); $this->stream->expect(Token::VAR_END_TYPE); $rv[] = new PrintNode($expr, $token->getLine()); break; case Token::BLOCK_START_TYPE: $this->stream->next(); $token = $this->getCurrentToken(); if (Token::NAME_TYPE !== $token->getType()) { throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext()); } if (null !== $test && \call_user_func($test, $token)) { if ($dropNeedle) { $this->stream->next(); } if (1 === \count($rv)) { return $rv[0]; } return new Node($rv, [], $lineno); } $subparser = $this->handlers->getTokenParser($token->getValue()); if (null === $subparser) { if (null !== $test) { $e = new SyntaxError(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); if (\is_array($test) && isset($test[0]) && $test[0] instanceof TokenParserInterface) { $e->appendMessage(sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $test[0]->getTag(), $lineno)); } } else { $e = new SyntaxError(sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); $e->addSuggestions($token->getValue(), array_keys($this->env->getTags())); } throw $e; } $this->stream->next(); $node = $subparser->parse($token); if (null !== $node) { $rv[] = $node; } break; default: throw new SyntaxError('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); } } if (1 === \count($rv)) { return $rv[0]; } return new Node($rv, [], $lineno); } /** * @deprecated since 1.27 (to be removed in 2.0) */ public function addHandler($name, $class) { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED); $this->handlers[$name] = $class; } /** * @deprecated since 1.27 (to be removed in 2.0) */ public function addNodeVisitor(NodeVisitorInterface $visitor) { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED); $this->visitors[] = $visitor; } public function getBlockStack() { return $this->blockStack; } public function peekBlockStack() { return isset($this->blockStack[\count($this->blockStack) - 1]) ? $this->blockStack[\count($this->blockStack) - 1] : null; } public function popBlockStack() { array_pop($this->blockStack); } public function pushBlockStack($name) { $this->blockStack[] = $name; } public function hasBlock($name) { return isset($this->blocks[$name]); } public function getBlock($name) { return $this->blocks[$name]; } public function setBlock($name, BlockNode $value) { $this->blocks[$name] = new BodyNode([$value], [], $value->getTemplateLine()); } public function hasMacro($name) { return isset($this->macros[$name]); } public function setMacro($name, MacroNode $node) { if ($this->isReservedMacroName($name)) { throw new SyntaxError(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword.', $name), $node->getTemplateLine(), $this->stream->getSourceContext()); } $this->macros[$name] = $node; } public function isReservedMacroName($name) { if (null === $this->reservedMacroNames) { $this->reservedMacroNames = []; $r = new \ReflectionClass($this->env->getBaseTemplateClass()); foreach ($r->getMethods() as $method) { $methodName = strtr($method->getName(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) { $this->reservedMacroNames[] = substr($methodName, 3); } } } return \in_array(strtr($name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), $this->reservedMacroNames); } public function addTrait($trait) { $this->traits[] = $trait; } public function hasTraits() { return \count($this->traits) > 0; } public function embedTemplate(ModuleNode $template) { $template->setIndex(mt_rand()); $this->embeddedTemplates[] = $template; } public function addImportedSymbol($type, $alias, $name = null, AbstractExpression $node = null) { $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node]; } public function getImportedSymbol($type, $alias) { if (null !== $this->peekBlockStack()) { foreach ($this->importedSymbols as $functions) { if (isset($functions[$type][$alias])) { if (\count($this->blockStack) > 1) { return null; } return $functions[$type][$alias]; } } } else { return isset($this->importedSymbols[0][$type][$alias]) ? $this->importedSymbols[0][$type][$alias] : null; } } public function isMainScope() { return 1 === \count($this->importedSymbols); } public function pushLocalScope() { array_unshift($this->importedSymbols, []); } public function popLocalScope() { array_shift($this->importedSymbols); } /** * @return ExpressionParser */ public function getExpressionParser() { return $this->expressionParser; } public function getParent() { return $this->parent; } public function setParent($parent) { $this->parent = $parent; } /** * @return TokenStream */ public function getStream() { return $this->stream; } /** * @return Token */ public function getCurrentToken() { return $this->stream->getCurrent(); } protected function filterBodyNodes(\Twig_NodeInterface $node) { // check that the body does not contain non-empty output nodes if ( ($node instanceof TextNode && !ctype_space($node->getAttribute('data'))) || (!$node instanceof TextNode && !$node instanceof BlockReferenceNode && $node instanceof NodeOutputInterface) ) { if (false !== strpos((string) $node, \chr(0xEF).\chr(0xBB).\chr(0xBF))) { $t = substr($node->getAttribute('data'), 3); if ('' === $t || ctype_space($t)) { // bypass empty nodes starting with a BOM return; } } throw new SyntaxError('A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag?', $node->getTemplateLine(), $this->stream->getSourceContext()); } // bypass nodes that will "capture" the output if ($node instanceof NodeCaptureInterface) { return $node; } if ($node instanceof NodeOutputInterface) { return; } foreach ($node as $k => $n) { if (null !== $n && null === $this->filterBodyNodes($n)) { $node->removeNode($k); } } return $node; } } class_alias('Twig\Parser', 'Twig_Parser'); db/login/vendor/twig/twig/src/Loader/SourceContextLoaderInterface.php000064400000001520151502156020021740 0ustar00 * * @deprecated since 1.27 (to be removed in 3.0) */ interface SourceContextLoaderInterface { /** * Returns the source context for a given template logical name. * * @param string $name The template logical name * * @return Source * * @throws LoaderError When $name is not found */ public function getSourceContext($name); } class_alias('Twig\Loader\SourceContextLoaderInterface', 'Twig_SourceContextLoaderInterface'); db/login/vendor/twig/twig/src/Loader/FilesystemLoader.php000064400000022263151502156020017445 0ustar00 */ class FilesystemLoader implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface { /** Identifier of the main namespace. */ const MAIN_NAMESPACE = '__main__'; protected $paths = []; protected $cache = []; protected $errorCache = []; private $rootPath; /** * @param string|array $paths A path or an array of paths where to look for templates * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) */ public function __construct($paths = [], $rootPath = null) { $this->rootPath = (null === $rootPath ? getcwd() : $rootPath).\DIRECTORY_SEPARATOR; if (false !== $realPath = realpath($rootPath)) { $this->rootPath = $realPath.\DIRECTORY_SEPARATOR; } if ($paths) { $this->setPaths($paths); } } /** * Returns the paths to the templates. * * @param string $namespace A path namespace * * @return array The array of paths where to look for templates */ public function getPaths($namespace = self::MAIN_NAMESPACE) { return isset($this->paths[$namespace]) ? $this->paths[$namespace] : []; } /** * Returns the path namespaces. * * The main namespace is always defined. * * @return array The array of defined namespaces */ public function getNamespaces() { return array_keys($this->paths); } /** * Sets the paths where templates are stored. * * @param string|array $paths A path or an array of paths where to look for templates * @param string $namespace A path namespace */ public function setPaths($paths, $namespace = self::MAIN_NAMESPACE) { if (!\is_array($paths)) { $paths = [$paths]; } $this->paths[$namespace] = []; foreach ($paths as $path) { $this->addPath($path, $namespace); } } /** * Adds a path where templates are stored. * * @param string $path A path where to look for templates * @param string $namespace A path namespace * * @throws LoaderError */ public function addPath($path, $namespace = self::MAIN_NAMESPACE) { // invalidate the cache $this->cache = $this->errorCache = []; $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; if (!is_dir($checkPath)) { throw new LoaderError(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath)); } $this->paths[$namespace][] = rtrim($path, '/\\'); } /** * Prepends a path where templates are stored. * * @param string $path A path where to look for templates * @param string $namespace A path namespace * * @throws LoaderError */ public function prependPath($path, $namespace = self::MAIN_NAMESPACE) { // invalidate the cache $this->cache = $this->errorCache = []; $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; if (!is_dir($checkPath)) { throw new LoaderError(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath)); } $path = rtrim($path, '/\\'); if (!isset($this->paths[$namespace])) { $this->paths[$namespace][] = $path; } else { array_unshift($this->paths[$namespace], $path); } } public function getSource($name) { @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED); if (null === ($path = $this->findTemplate($name)) || false === $path) { return ''; } return file_get_contents($path); } public function getSourceContext($name) { if (null === ($path = $this->findTemplate($name)) || false === $path) { return new Source('', $name, ''); } return new Source(file_get_contents($path), $name, $path); } public function getCacheKey($name) { if (null === ($path = $this->findTemplate($name)) || false === $path) { return ''; } $len = \strlen($this->rootPath); if (0 === strncmp($this->rootPath, $path, $len)) { return substr($path, $len); } return $path; } public function exists($name) { $name = $this->normalizeName($name); if (isset($this->cache[$name])) { return true; } try { return null !== ($path = $this->findTemplate($name, false)) && false !== $path; } catch (LoaderError $e) { @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', \get_class($this)), E_USER_DEPRECATED); return false; } } public function isFresh($name, $time) { // false support to be removed in 3.0 if (null === ($path = $this->findTemplate($name)) || false === $path) { return false; } return filemtime($path) < $time; } /** * Checks if the template can be found. * * @param string $name The template name * * @return string|false|null The template name or false/null */ protected function findTemplate($name) { $throw = \func_num_args() > 1 ? func_get_arg(1) : true; $name = $this->normalizeName($name); if (isset($this->cache[$name])) { return $this->cache[$name]; } if (isset($this->errorCache[$name])) { if (!$throw) { return false; } throw new LoaderError($this->errorCache[$name]); } try { $this->validateName($name); list($namespace, $shortname) = $this->parseName($name); } catch (LoaderError $e) { if (!$throw) { return false; } throw $e; } if (!isset($this->paths[$namespace])) { $this->errorCache[$name] = sprintf('There are no registered paths for namespace "%s".', $namespace); if (!$throw) { return false; } throw new LoaderError($this->errorCache[$name]); } foreach ($this->paths[$namespace] as $path) { if (!$this->isAbsolutePath($path)) { $path = $this->rootPath.$path; } if (is_file($path.'/'.$shortname)) { if (false !== $realpath = realpath($path.'/'.$shortname)) { return $this->cache[$name] = $realpath; } return $this->cache[$name] = $path.'/'.$shortname; } } $this->errorCache[$name] = sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace])); if (!$throw) { return false; } throw new LoaderError($this->errorCache[$name]); } protected function parseName($name, $default = self::MAIN_NAMESPACE) { if (isset($name[0]) && '@' == $name[0]) { if (false === $pos = strpos($name, '/')) { throw new LoaderError(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name)); } $namespace = substr($name, 1, $pos - 1); $shortname = substr($name, $pos + 1); return [$namespace, $shortname]; } return [$default, $name]; } protected function normalizeName($name) { return preg_replace('#/{2,}#', '/', str_replace('\\', '/', (string) $name)); } protected function validateName($name) { if (false !== strpos($name, "\0")) { throw new LoaderError('A template name cannot contain NUL bytes.'); } $name = ltrim($name, '/'); $parts = explode('/', $name); $level = 0; foreach ($parts as $part) { if ('..' === $part) { --$level; } elseif ('.' !== $part) { ++$level; } if ($level < 0) { throw new LoaderError(sprintf('Looks like you try to load a template outside configured directories (%s).', $name)); } } } private function isAbsolutePath($file) { return strspn($file, '/\\', 0, 1) || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === substr($file, 1, 1) && strspn($file, '/\\', 2, 1) ) || null !== parse_url($file, PHP_URL_SCHEME) ; } } class_alias('Twig\Loader\FilesystemLoader', 'Twig_Loader_Filesystem'); db/login/vendor/twig/twig/src/Loader/ExistsLoaderInterface.php000064400000001423151502156020020414 0ustar00 * * @deprecated since 1.12 (to be removed in 3.0) */ interface ExistsLoaderInterface { /** * Check if we have the source code of a template, given its name. * * @param string $name The name of the template to check if we can load * * @return bool If the template source code is handled by this loader or not */ public function exists($name); } class_alias('Twig\Loader\ExistsLoaderInterface', 'Twig_ExistsLoaderInterface'); db/login/vendor/twig/twig/src/Loader/ArrayLoader.php000064400000005373151502156020016402 0ustar00 */ class ArrayLoader implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface { protected $templates = []; /** * @param array $templates An array of templates (keys are the names, and values are the source code) */ public function __construct(array $templates = []) { $this->templates = $templates; } /** * Adds or overrides a template. * * @param string $name The template name * @param string $template The template source */ public function setTemplate($name, $template) { $this->templates[(string) $name] = $template; } public function getSource($name) { @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED); $name = (string) $name; if (!isset($this->templates[$name])) { throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); } return $this->templates[$name]; } public function getSourceContext($name) { $name = (string) $name; if (!isset($this->templates[$name])) { throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); } return new Source($this->templates[$name], $name); } public function exists($name) { return isset($this->templates[(string) $name]); } public function getCacheKey($name) { $name = (string) $name; if (!isset($this->templates[$name])) { throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); } return $name.':'.$this->templates[$name]; } public function isFresh($name, $time) { $name = (string) $name; if (!isset($this->templates[$name])) { throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); } return true; } } class_alias('Twig\Loader\ArrayLoader', 'Twig_Loader_Array'); db/login/vendor/twig/twig/src/Loader/ChainLoader.php000064400000011051151502156020016334 0ustar00 */ class ChainLoader implements LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface { private $hasSourceCache = []; protected $loaders = []; /** * @param LoaderInterface[] $loaders */ public function __construct(array $loaders = []) { foreach ($loaders as $loader) { $this->addLoader($loader); } } public function addLoader(LoaderInterface $loader) { $this->loaders[] = $loader; $this->hasSourceCache = []; } /** * @return LoaderInterface[] */ public function getLoaders() { return $this->loaders; } public function getSource($name) { @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED); $exceptions = []; foreach ($this->loaders as $loader) { if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { return $loader->getSource($name); } catch (LoaderError $e) { $exceptions[] = $e->getMessage(); } } throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); } public function getSourceContext($name) { $exceptions = []; foreach ($this->loaders as $loader) { if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { if ($loader instanceof SourceContextLoaderInterface) { return $loader->getSourceContext($name); } return new Source($loader->getSource($name), $name); } catch (LoaderError $e) { $exceptions[] = $e->getMessage(); } } throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); } public function exists($name) { $name = (string) $name; if (isset($this->hasSourceCache[$name])) { return $this->hasSourceCache[$name]; } foreach ($this->loaders as $loader) { if ($loader instanceof ExistsLoaderInterface) { if ($loader->exists($name)) { return $this->hasSourceCache[$name] = true; } continue; } try { if ($loader instanceof SourceContextLoaderInterface) { $loader->getSourceContext($name); } else { $loader->getSource($name); } return $this->hasSourceCache[$name] = true; } catch (LoaderError $e) { } } return $this->hasSourceCache[$name] = false; } public function getCacheKey($name) { $exceptions = []; foreach ($this->loaders as $loader) { if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { return $loader->getCacheKey($name); } catch (LoaderError $e) { $exceptions[] = \get_class($loader).': '.$e->getMessage(); } } throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); } public function isFresh($name, $time) { $exceptions = []; foreach ($this->loaders as $loader) { if ($loader instanceof ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { return $loader->isFresh($name, $time); } catch (LoaderError $e) { $exceptions[] = \get_class($loader).': '.$e->getMessage(); } } throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); } } class_alias('Twig\Loader\ChainLoader', 'Twig_Loader_Chain'); db/login/vendor/twig/twig/src/Loader/LoaderInterface.php000064400000003043151502156020017214 0ustar00 */ interface LoaderInterface { /** * Gets the source code of a template, given its name. * * @param string $name The name of the template to load * * @return string The template source code * * @throws LoaderError When $name is not found * * @deprecated since 1.27 (to be removed in 2.0), implement Twig\Loader\SourceContextLoaderInterface */ public function getSource($name); /** * Gets the cache key to use for the cache for a given template name. * * @param string $name The name of the template to load * * @return string The cache key * * @throws LoaderError When $name is not found */ public function getCacheKey($name); /** * Returns true if the template is still fresh. * * @param string $name The template name * @param int $time Timestamp of the last modification time of the * cached template * * @return bool true if the template is fresh, false otherwise * * @throws LoaderError When $name is not found */ public function isFresh($name, $time); } class_alias('Twig\Loader\LoaderInterface', 'Twig_LoaderInterface'); db/login/vendor/twig/twig/src/Environment.php000064400000147340151502156020015274 0ustar00 */ class Environment { const VERSION = '1.42.5'; const VERSION_ID = 14205; const MAJOR_VERSION = 1; const MINOR_VERSION = 42; const RELEASE_VERSION = 5; const EXTRA_VERSION = ''; protected $charset; protected $loader; protected $debug; protected $autoReload; protected $cache; protected $lexer; protected $parser; protected $compiler; protected $baseTemplateClass; protected $extensions; protected $parsers; protected $visitors; protected $filters; protected $tests; protected $functions; protected $globals; protected $runtimeInitialized = false; protected $extensionInitialized = false; protected $loadedTemplates; protected $strictVariables; protected $unaryOperators; protected $binaryOperators; protected $templateClassPrefix = '__TwigTemplate_'; protected $functionCallbacks = []; protected $filterCallbacks = []; protected $staging; private $originalCache; private $bcWriteCacheFile = false; private $bcGetCacheFilename = false; private $lastModifiedExtension = 0; private $extensionsByClass = []; private $runtimeLoaders = []; private $runtimes = []; private $optionsHash; /** * Constructor. * * Available options: * * * debug: When set to true, it automatically set "auto_reload" to true as * well (default to false). * * * charset: The charset used by the templates (default to UTF-8). * * * base_template_class: The base template class to use for generated * templates (default to \Twig\Template). * * * cache: An absolute path where to store the compiled templates, * a \Twig\Cache\CacheInterface implementation, * or false to disable compilation cache (default). * * * auto_reload: Whether to reload the template if the original source changed. * If you don't provide the auto_reload option, it will be * determined automatically based on the debug value. * * * strict_variables: Whether to ignore invalid variables in templates * (default to false). * * * autoescape: Whether to enable auto-escaping (default to html): * * false: disable auto-escaping * * true: equivalent to html * * html, js: set the autoescaping to one of the supported strategies * * name: set the autoescaping strategy based on the template name extension * * PHP callback: a PHP callback that returns an escaping strategy based on the template "name" * * * optimizations: A flag that indicates which optimizations to apply * (default to -1 which means that all optimizations are enabled; * set it to 0 to disable). */ public function __construct(LoaderInterface $loader = null, $options = []) { if (null !== $loader) { $this->setLoader($loader); } else { @trigger_error('Not passing a "Twig\Lodaer\LoaderInterface" as the first constructor argument of "Twig\Environment" is deprecated since version 1.21.', E_USER_DEPRECATED); } $options = array_merge([ 'debug' => false, 'charset' => 'UTF-8', 'base_template_class' => '\Twig\Template', 'strict_variables' => false, 'autoescape' => 'html', 'cache' => false, 'auto_reload' => null, 'optimizations' => -1, ], $options); $this->debug = (bool) $options['debug']; $this->charset = strtoupper($options['charset']); $this->baseTemplateClass = $options['base_template_class']; $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; $this->strictVariables = (bool) $options['strict_variables']; $this->setCache($options['cache']); $this->addExtension(new CoreExtension()); $this->addExtension(new EscaperExtension($options['autoescape'])); $this->addExtension(new OptimizerExtension($options['optimizations'])); $this->staging = new StagingExtension(); // For BC if (\is_string($this->originalCache)) { $r = new \ReflectionMethod($this, 'writeCacheFile'); if (__CLASS__ !== $r->getDeclaringClass()->getName()) { @trigger_error('The Twig\Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); $this->bcWriteCacheFile = true; } $r = new \ReflectionMethod($this, 'getCacheFilename'); if (__CLASS__ !== $r->getDeclaringClass()->getName()) { @trigger_error('The Twig\Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); $this->bcGetCacheFilename = true; } } } /** * Gets the base template class for compiled templates. * * @return string The base template class name */ public function getBaseTemplateClass() { return $this->baseTemplateClass; } /** * Sets the base template class for compiled templates. * * @param string $class The base template class name */ public function setBaseTemplateClass($class) { $this->baseTemplateClass = $class; $this->updateOptionsHash(); } /** * Enables debugging mode. */ public function enableDebug() { $this->debug = true; $this->updateOptionsHash(); } /** * Disables debugging mode. */ public function disableDebug() { $this->debug = false; $this->updateOptionsHash(); } /** * Checks if debug mode is enabled. * * @return bool true if debug mode is enabled, false otherwise */ public function isDebug() { return $this->debug; } /** * Enables the auto_reload option. */ public function enableAutoReload() { $this->autoReload = true; } /** * Disables the auto_reload option. */ public function disableAutoReload() { $this->autoReload = false; } /** * Checks if the auto_reload option is enabled. * * @return bool true if auto_reload is enabled, false otherwise */ public function isAutoReload() { return $this->autoReload; } /** * Enables the strict_variables option. */ public function enableStrictVariables() { $this->strictVariables = true; $this->updateOptionsHash(); } /** * Disables the strict_variables option. */ public function disableStrictVariables() { $this->strictVariables = false; $this->updateOptionsHash(); } /** * Checks if the strict_variables option is enabled. * * @return bool true if strict_variables is enabled, false otherwise */ public function isStrictVariables() { return $this->strictVariables; } /** * Gets the current cache implementation. * * @param bool $original Whether to return the original cache option or the real cache instance * * @return CacheInterface|string|false A Twig\Cache\CacheInterface implementation, * an absolute path to the compiled templates, * or false to disable cache */ public function getCache($original = true) { return $original ? $this->originalCache : $this->cache; } /** * Sets the current cache implementation. * * @param CacheInterface|string|false $cache A Twig\Cache\CacheInterface implementation, * an absolute path to the compiled templates, * or false to disable cache */ public function setCache($cache) { if (\is_string($cache)) { $this->originalCache = $cache; $this->cache = new FilesystemCache($cache); } elseif (false === $cache) { $this->originalCache = $cache; $this->cache = new NullCache(); } elseif (null === $cache) { @trigger_error('Using "null" as the cache strategy is deprecated since version 1.23 and will be removed in Twig 2.0.', E_USER_DEPRECATED); $this->originalCache = false; $this->cache = new NullCache(); } elseif ($cache instanceof CacheInterface) { $this->originalCache = $this->cache = $cache; } else { throw new \LogicException(sprintf('Cache can only be a string, false, or a \Twig\Cache\CacheInterface implementation.')); } } /** * Gets the cache filename for a given template. * * @param string $name The template name * * @return string|false The cache file name or false when caching is disabled * * @deprecated since 1.22 (to be removed in 2.0) */ public function getCacheFilename($name) { @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); $key = $this->cache->generateKey($name, $this->getTemplateClass($name)); return !$key ? false : $key; } /** * Gets the template class associated with the given string. * * The generated template class is based on the following parameters: * * * The cache key for the given template; * * The currently enabled extensions; * * Whether the Twig C extension is available or not; * * PHP version; * * Twig version; * * Options with what environment was created. * * @param string $name The name for which to calculate the template class name * @param int|null $index The index if it is an embedded template * * @return string The template class name */ public function getTemplateClass($name, $index = null) { $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; return $this->templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '___'.$index); } /** * Gets the template class prefix. * * @return string The template class prefix * * @deprecated since 1.22 (to be removed in 2.0) */ public function getTemplateClassPrefix() { @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); return $this->templateClassPrefix; } /** * Renders a template. * * @param string|TemplateWrapper $name The template name * @param array $context An array of parameters to pass to the template * * @return string The rendered template * * @throws LoaderError When the template cannot be found * @throws SyntaxError When an error occurred during compilation * @throws RuntimeError When an error occurred during rendering */ public function render($name, array $context = []) { return $this->load($name)->render($context); } /** * Displays a template. * * @param string|TemplateWrapper $name The template name * @param array $context An array of parameters to pass to the template * * @throws LoaderError When the template cannot be found * @throws SyntaxError When an error occurred during compilation * @throws RuntimeError When an error occurred during rendering */ public function display($name, array $context = []) { $this->load($name)->display($context); } /** * Loads a template. * * @param string|TemplateWrapper|\Twig\Template $name The template name * * @throws LoaderError When the template cannot be found * @throws RuntimeError When a previously generated cache is corrupted * @throws SyntaxError When an error occurred during compilation * * @return TemplateWrapper */ public function load($name) { if ($name instanceof TemplateWrapper) { return $name; } if ($name instanceof Template) { return new TemplateWrapper($this, $name); } return new TemplateWrapper($this, $this->loadTemplate($name)); } /** * Loads a template internal representation. * * This method is for internal use only and should never be called * directly. * * @param string $name The template name * @param int $index The index if it is an embedded template * * @return \Twig_TemplateInterface A template instance representing the given template name * * @throws LoaderError When the template cannot be found * @throws RuntimeError When a previously generated cache is corrupted * @throws SyntaxError When an error occurred during compilation * * @internal */ public function loadTemplate($name, $index = null) { return $this->loadClass($this->getTemplateClass($name), $name, $index); } /** * @internal */ public function loadClass($cls, $name, $index = null) { $mainCls = $cls; if (null !== $index) { $cls .= '___'.$index; } if (isset($this->loadedTemplates[$cls])) { return $this->loadedTemplates[$cls]; } if (!class_exists($cls, false)) { if ($this->bcGetCacheFilename) { $key = $this->getCacheFilename($name); } else { $key = $this->cache->generateKey($name, $mainCls); } if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { $this->cache->load($key); } $source = null; if (!class_exists($cls, false)) { $loader = $this->getLoader(); if (!$loader instanceof SourceContextLoaderInterface) { $source = new Source($loader->getSource($name), $name); } else { $source = $loader->getSourceContext($name); } $content = $this->compileSource($source); if ($this->bcWriteCacheFile) { $this->writeCacheFile($key, $content); } else { $this->cache->write($key, $content); $this->cache->load($key); } if (!class_exists($mainCls, false)) { /* Last line of defense if either $this->bcWriteCacheFile was used, * $this->cache is implemented as a no-op or we have a race condition * where the cache was cleared between the above calls to write to and load from * the cache. */ eval('?>'.$content); } } if (!class_exists($cls, false)) { throw new RuntimeError(sprintf('Failed to load Twig template "%s", index "%s": cache might be corrupted.', $name, $index), -1, $source); } } if (!$this->runtimeInitialized) { $this->initRuntime(); } return $this->loadedTemplates[$cls] = new $cls($this); } /** * Creates a template from source. * * This method should not be used as a generic way to load templates. * * @param string $template The template source * @param string $name An optional name of the template to be used in error messages * * @return TemplateWrapper A template instance representing the given template name * * @throws LoaderError When the template cannot be found * @throws SyntaxError When an error occurred during compilation */ public function createTemplate($template, $name = null) { $hash = hash('sha256', $template, false); if (null !== $name) { $name = sprintf('%s (string template %s)', $name, $hash); } else { $name = sprintf('__string_template__%s', $hash); } $loader = new ChainLoader([ new ArrayLoader([$name => $template]), $current = $this->getLoader(), ]); $this->setLoader($loader); try { $template = new TemplateWrapper($this, $this->loadTemplate($name)); } catch (\Exception $e) { $this->setLoader($current); throw $e; } catch (\Throwable $e) { $this->setLoader($current); throw $e; } $this->setLoader($current); return $template; } /** * Returns true if the template is still fresh. * * Besides checking the loader for freshness information, * this method also checks if the enabled extensions have * not changed. * * @param string $name The template name * @param int $time The last modification time of the cached template * * @return bool true if the template is fresh, false otherwise */ public function isTemplateFresh($name, $time) { if (0 === $this->lastModifiedExtension) { foreach ($this->extensions as $extension) { $r = new \ReflectionObject($extension); if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) { $this->lastModifiedExtension = $extensionTime; } } } return $this->lastModifiedExtension <= $time && $this->getLoader()->isFresh($name, $time); } /** * Tries to load a template consecutively from an array. * * Similar to load() but it also accepts instances of \Twig\Template and * \Twig\TemplateWrapper, and an array of templates where each is tried to be loaded. * * @param string|Template|\Twig\TemplateWrapper|array $names A template or an array of templates to try consecutively * * @return TemplateWrapper|Template * * @throws LoaderError When none of the templates can be found * @throws SyntaxError When an error occurred during compilation */ public function resolveTemplate($names) { if (!\is_array($names)) { $names = [$names]; } foreach ($names as $name) { if ($name instanceof Template) { return $name; } if ($name instanceof TemplateWrapper) { return $name; } try { return $this->loadTemplate($name); } catch (LoaderError $e) { if (1 === \count($names)) { throw $e; } } } throw new LoaderError(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); } /** * Clears the internal template cache. * * @deprecated since 1.18.3 (to be removed in 2.0) */ public function clearTemplateCache() { @trigger_error(sprintf('The %s method is deprecated since version 1.18.3 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); $this->loadedTemplates = []; } /** * Clears the template cache files on the filesystem. * * @deprecated since 1.22 (to be removed in 2.0) */ public function clearCacheFiles() { @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); if (\is_string($this->originalCache)) { foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->originalCache), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { if ($file->isFile()) { @unlink($file->getPathname()); } } } } /** * Gets the Lexer instance. * * @return \Twig_LexerInterface * * @deprecated since 1.25 (to be removed in 2.0) */ public function getLexer() { @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); if (null === $this->lexer) { $this->lexer = new Lexer($this); } return $this->lexer; } public function setLexer(\Twig_LexerInterface $lexer) { $this->lexer = $lexer; } /** * Tokenizes a source code. * * @param string|Source $source The template source code * @param string $name The template name (deprecated) * * @return TokenStream * * @throws SyntaxError When the code is syntactically wrong */ public function tokenize($source, $name = null) { if (!$source instanceof Source) { @trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED); $source = new Source($source, $name); } if (null === $this->lexer) { $this->lexer = new Lexer($this); } return $this->lexer->tokenize($source); } /** * Gets the Parser instance. * * @return \Twig_ParserInterface * * @deprecated since 1.25 (to be removed in 2.0) */ public function getParser() { @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); if (null === $this->parser) { $this->parser = new Parser($this); } return $this->parser; } public function setParser(\Twig_ParserInterface $parser) { $this->parser = $parser; } /** * Converts a token stream to a node tree. * * @return ModuleNode * * @throws SyntaxError When the token stream is syntactically or semantically wrong */ public function parse(TokenStream $stream) { if (null === $this->parser) { $this->parser = new Parser($this); } return $this->parser->parse($stream); } /** * Gets the Compiler instance. * * @return \Twig_CompilerInterface * * @deprecated since 1.25 (to be removed in 2.0) */ public function getCompiler() { @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); if (null === $this->compiler) { $this->compiler = new Compiler($this); } return $this->compiler; } public function setCompiler(\Twig_CompilerInterface $compiler) { $this->compiler = $compiler; } /** * Compiles a node and returns the PHP code. * * @return string The compiled PHP source code */ public function compile(\Twig_NodeInterface $node) { if (null === $this->compiler) { $this->compiler = new Compiler($this); } return $this->compiler->compile($node)->getSource(); } /** * Compiles a template source code. * * @param string|Source $source The template source code * @param string $name The template name (deprecated) * * @return string The compiled PHP source code * * @throws SyntaxError When there was an error during tokenizing, parsing or compiling */ public function compileSource($source, $name = null) { if (!$source instanceof Source) { @trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED); $source = new Source($source, $name); } try { return $this->compile($this->parse($this->tokenize($source))); } catch (Error $e) { $e->setSourceContext($source); throw $e; } catch (\Exception $e) { throw new SyntaxError(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e); } } public function setLoader(LoaderInterface $loader) { if (!$loader instanceof SourceContextLoaderInterface && 0 !== strpos(\get_class($loader), 'Mock_')) { @trigger_error(sprintf('Twig loader "%s" should implement Twig\Loader\SourceContextLoaderInterface since version 1.27.', \get_class($loader)), E_USER_DEPRECATED); } $this->loader = $loader; } /** * Gets the Loader instance. * * @return LoaderInterface */ public function getLoader() { if (null === $this->loader) { throw new \LogicException('You must set a loader first.'); } return $this->loader; } /** * Sets the default template charset. * * @param string $charset The default charset */ public function setCharset($charset) { $this->charset = strtoupper($charset); } /** * Gets the default template charset. * * @return string The default charset */ public function getCharset() { return $this->charset; } /** * Initializes the runtime environment. * * @deprecated since 1.23 (to be removed in 2.0) */ public function initRuntime() { $this->runtimeInitialized = true; foreach ($this->getExtensions() as $name => $extension) { if (!$extension instanceof InitRuntimeInterface) { $m = new \ReflectionMethod($extension, 'initRuntime'); $parentClass = $m->getDeclaringClass()->getName(); if ('Twig_Extension' !== $parentClass && 'Twig\Extension\AbstractExtension' !== $parentClass) { @trigger_error(sprintf('Defining the initRuntime() method in the "%s" extension is deprecated since version 1.23. Use the `needs_environment` option to get the \Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig\Extension\InitRuntimeInterface if needed (not recommended).', $name), E_USER_DEPRECATED); } } $extension->initRuntime($this); } } /** * Returns true if the given extension is registered. * * @param string $class The extension class name * * @return bool Whether the extension is registered or not */ public function hasExtension($class) { $class = ltrim($class, '\\'); if (!isset($this->extensionsByClass[$class]) && class_exists($class, false)) { // For BC/FC with namespaced aliases $class = new \ReflectionClass($class); $class = $class->name; } if (isset($this->extensions[$class])) { if ($class !== \get_class($this->extensions[$class])) { @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); } return true; } return isset($this->extensionsByClass[$class]); } /** * Adds a runtime loader. */ public function addRuntimeLoader(RuntimeLoaderInterface $loader) { $this->runtimeLoaders[] = $loader; } /** * Gets an extension by class name. * * @param string $class The extension class name * * @return ExtensionInterface */ public function getExtension($class) { $class = ltrim($class, '\\'); if (!isset($this->extensionsByClass[$class]) && class_exists($class, false)) { // For BC/FC with namespaced aliases $class = new \ReflectionClass($class); $class = $class->name; } if (isset($this->extensions[$class])) { if ($class !== \get_class($this->extensions[$class])) { @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); } return $this->extensions[$class]; } if (!isset($this->extensionsByClass[$class])) { throw new RuntimeError(sprintf('The "%s" extension is not enabled.', $class)); } return $this->extensionsByClass[$class]; } /** * Returns the runtime implementation of a Twig element (filter/function/test). * * @param string $class A runtime class name * * @return object The runtime implementation * * @throws RuntimeError When the template cannot be found */ public function getRuntime($class) { if (isset($this->runtimes[$class])) { return $this->runtimes[$class]; } foreach ($this->runtimeLoaders as $loader) { if (null !== $runtime = $loader->load($class)) { return $this->runtimes[$class] = $runtime; } } throw new RuntimeError(sprintf('Unable to load the "%s" runtime.', $class)); } public function addExtension(ExtensionInterface $extension) { if ($this->extensionInitialized) { throw new \LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName())); } $class = \get_class($extension); if ($class !== $extension->getName()) { if (isset($this->extensions[$extension->getName()])) { unset($this->extensions[$extension->getName()], $this->extensionsByClass[$class]); @trigger_error(sprintf('The possibility to register the same extension twice ("%s") is deprecated since version 1.23 and will be removed in Twig 2.0. Use proper PHP inheritance instead.', $extension->getName()), E_USER_DEPRECATED); } } $this->lastModifiedExtension = 0; $this->extensionsByClass[$class] = $extension; $this->extensions[$extension->getName()] = $extension; $this->updateOptionsHash(); } /** * Removes an extension by name. * * This method is deprecated and you should not use it. * * @param string $name The extension name * * @deprecated since 1.12 (to be removed in 2.0) */ public function removeExtension($name) { @trigger_error(sprintf('The %s method is deprecated since version 1.12 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); if ($this->extensionInitialized) { throw new \LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name)); } $class = ltrim($name, '\\'); if (!isset($this->extensionsByClass[$class]) && class_exists($class, false)) { // For BC/FC with namespaced aliases $class = new \ReflectionClass($class); $class = $class->name; } if (isset($this->extensions[$class])) { if ($class !== \get_class($this->extensions[$class])) { @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); } unset($this->extensions[$class]); } unset($this->extensions[$class]); $this->updateOptionsHash(); } /** * Registers an array of extensions. * * @param array $extensions An array of extensions */ public function setExtensions(array $extensions) { foreach ($extensions as $extension) { $this->addExtension($extension); } } /** * Returns all registered extensions. * * @return ExtensionInterface[] An array of extensions (keys are for internal usage only and should not be relied on) */ public function getExtensions() { return $this->extensions; } public function addTokenParser(TokenParserInterface $parser) { if ($this->extensionInitialized) { throw new \LogicException('Unable to add a token parser as extensions have already been initialized.'); } $this->staging->addTokenParser($parser); } /** * Gets the registered Token Parsers. * * @return \Twig_TokenParserBrokerInterface * * @internal */ public function getTokenParsers() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->parsers; } /** * Gets registered tags. * * Be warned that this method cannot return tags defined by \Twig_TokenParserBrokerInterface classes. * * @return TokenParserInterface[] * * @internal */ public function getTags() { $tags = []; foreach ($this->getTokenParsers()->getParsers() as $parser) { if ($parser instanceof TokenParserInterface) { $tags[$parser->getTag()] = $parser; } } return $tags; } public function addNodeVisitor(NodeVisitorInterface $visitor) { if ($this->extensionInitialized) { throw new \LogicException('Unable to add a node visitor as extensions have already been initialized.'); } $this->staging->addNodeVisitor($visitor); } /** * Gets the registered Node Visitors. * * @return NodeVisitorInterface[] * * @internal */ public function getNodeVisitors() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->visitors; } /** * Registers a Filter. * * @param string|TwigFilter $name The filter name or a \Twig_SimpleFilter instance * @param \Twig_FilterInterface|TwigFilter $filter */ public function addFilter($name, $filter = null) { if (!$name instanceof TwigFilter && !($filter instanceof TwigFilter || $filter instanceof \Twig_FilterInterface)) { throw new \LogicException('A filter must be an instance of \Twig_FilterInterface or \Twig_SimpleFilter.'); } if ($name instanceof TwigFilter) { $filter = $name; $name = $filter->getName(); } else { @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED); } if ($this->extensionInitialized) { throw new \LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name)); } $this->staging->addFilter($name, $filter); } /** * Get a filter by name. * * Subclasses may override this method and load filters differently; * so no list of filters is available. * * @param string $name The filter name * * @return \Twig_Filter|false * * @internal */ public function getFilter($name) { if (!$this->extensionInitialized) { $this->initExtensions(); } if (isset($this->filters[$name])) { return $this->filters[$name]; } foreach ($this->filters as $pattern => $filter) { $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); if ($count) { if (preg_match('#^'.$pattern.'$#', $name, $matches)) { array_shift($matches); $filter->setArguments($matches); return $filter; } } } foreach ($this->filterCallbacks as $callback) { if (false !== $filter = \call_user_func($callback, $name)) { return $filter; } } return false; } public function registerUndefinedFilterCallback($callable) { $this->filterCallbacks[] = $callable; } /** * Gets the registered Filters. * * Be warned that this method cannot return filters defined with registerUndefinedFilterCallback. * * @return \Twig_FilterInterface[] * * @see registerUndefinedFilterCallback * * @internal */ public function getFilters() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->filters; } /** * Registers a Test. * * @param string|TwigTest $name The test name or a \Twig_SimpleTest instance * @param \Twig_TestInterface|TwigTest $test A \Twig_TestInterface instance or a \Twig_SimpleTest instance */ public function addTest($name, $test = null) { if (!$name instanceof TwigTest && !($test instanceof TwigTest || $test instanceof \Twig_TestInterface)) { throw new \LogicException('A test must be an instance of \Twig_TestInterface or \Twig_SimpleTest.'); } if ($name instanceof TwigTest) { $test = $name; $name = $test->getName(); } else { @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED); } if ($this->extensionInitialized) { throw new \LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name)); } $this->staging->addTest($name, $test); } /** * Gets the registered Tests. * * @return \Twig_TestInterface[] * * @internal */ public function getTests() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->tests; } /** * Gets a test by name. * * @param string $name The test name * * @return \Twig_Test|false * * @internal */ public function getTest($name) { if (!$this->extensionInitialized) { $this->initExtensions(); } if (isset($this->tests[$name])) { return $this->tests[$name]; } foreach ($this->tests as $pattern => $test) { $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); if ($count) { if (preg_match('#^'.$pattern.'$#', $name, $matches)) { array_shift($matches); $test->setArguments($matches); return $test; } } } return false; } /** * Registers a Function. * * @param string|TwigFunction $name The function name or a \Twig_SimpleFunction instance * @param \Twig_FunctionInterface|TwigFunction $function */ public function addFunction($name, $function = null) { if (!$name instanceof TwigFunction && !($function instanceof TwigFunction || $function instanceof \Twig_FunctionInterface)) { throw new \LogicException('A function must be an instance of \Twig_FunctionInterface or \Twig_SimpleFunction.'); } if ($name instanceof TwigFunction) { $function = $name; $name = $function->getName(); } else { @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED); } if ($this->extensionInitialized) { throw new \LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name)); } $this->staging->addFunction($name, $function); } /** * Get a function by name. * * Subclasses may override this method and load functions differently; * so no list of functions is available. * * @param string $name function name * * @return \Twig_Function|false * * @internal */ public function getFunction($name) { if (!$this->extensionInitialized) { $this->initExtensions(); } if (isset($this->functions[$name])) { return $this->functions[$name]; } foreach ($this->functions as $pattern => $function) { $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); if ($count) { if (preg_match('#^'.$pattern.'$#', $name, $matches)) { array_shift($matches); $function->setArguments($matches); return $function; } } } foreach ($this->functionCallbacks as $callback) { if (false !== $function = \call_user_func($callback, $name)) { return $function; } } return false; } public function registerUndefinedFunctionCallback($callable) { $this->functionCallbacks[] = $callable; } /** * Gets registered functions. * * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback. * * @return \Twig_FunctionInterface[] * * @see registerUndefinedFunctionCallback * * @internal */ public function getFunctions() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->functions; } /** * Registers a Global. * * New globals can be added before compiling or rendering a template; * but after, you can only update existing globals. * * @param string $name The global name * @param mixed $value The global value */ public function addGlobal($name, $value) { if ($this->extensionInitialized || $this->runtimeInitialized) { if (null === $this->globals) { $this->globals = $this->initGlobals(); } if (!\array_key_exists($name, $this->globals)) { // The deprecation notice must be turned into the following exception in Twig 2.0 @trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated since version 1.21.', $name), E_USER_DEPRECATED); //throw new \LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name)); } } if ($this->extensionInitialized || $this->runtimeInitialized) { // update the value $this->globals[$name] = $value; } else { $this->staging->addGlobal($name, $value); } } /** * Gets the registered Globals. * * @return array An array of globals * * @internal */ public function getGlobals() { if (!$this->runtimeInitialized && !$this->extensionInitialized) { return $this->initGlobals(); } if (null === $this->globals) { $this->globals = $this->initGlobals(); } return $this->globals; } /** * Merges a context with the defined globals. * * @param array $context An array representing the context * * @return array The context merged with the globals */ public function mergeGlobals(array $context) { // we don't use array_merge as the context being generally // bigger than globals, this code is faster. foreach ($this->getGlobals() as $key => $value) { if (!\array_key_exists($key, $context)) { $context[$key] = $value; } } return $context; } /** * Gets the registered unary Operators. * * @return array An array of unary operators * * @internal */ public function getUnaryOperators() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->unaryOperators; } /** * Gets the registered binary Operators. * * @return array An array of binary operators * * @internal */ public function getBinaryOperators() { if (!$this->extensionInitialized) { $this->initExtensions(); } return $this->binaryOperators; } /** * @deprecated since 1.23 (to be removed in 2.0) */ public function computeAlternatives($name, $items) { @trigger_error(sprintf('The %s method is deprecated since version 1.23 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); return SyntaxError::computeAlternatives($name, $items); } /** * @internal */ protected function initGlobals() { $globals = []; foreach ($this->extensions as $name => $extension) { if (!$extension instanceof GlobalsInterface) { $m = new \ReflectionMethod($extension, 'getGlobals'); $parentClass = $m->getDeclaringClass()->getName(); if ('Twig_Extension' !== $parentClass && 'Twig\Extension\AbstractExtension' !== $parentClass) { @trigger_error(sprintf('Defining the getGlobals() method in the "%s" extension without explicitly implementing Twig\Extension\GlobalsInterface is deprecated since version 1.23.', $name), E_USER_DEPRECATED); } } $extGlob = $extension->getGlobals(); if (!\is_array($extGlob)) { throw new \UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', \get_class($extension))); } $globals[] = $extGlob; } $globals[] = $this->staging->getGlobals(); return \call_user_func_array('array_merge', $globals); } /** * @internal */ protected function initExtensions() { if ($this->extensionInitialized) { return; } $this->parsers = new \Twig_TokenParserBroker([], [], false); $this->filters = []; $this->functions = []; $this->tests = []; $this->visitors = []; $this->unaryOperators = []; $this->binaryOperators = []; foreach ($this->extensions as $extension) { $this->initExtension($extension); } $this->initExtension($this->staging); // Done at the end only, so that an exception during initialization does not mark the environment as initialized when catching the exception $this->extensionInitialized = true; } /** * @internal */ protected function initExtension(ExtensionInterface $extension) { // filters foreach ($extension->getFilters() as $name => $filter) { if ($filter instanceof TwigFilter) { $name = $filter->getName(); } else { @trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated since version 1.21. Use \Twig_SimpleFilter instead.', \get_class($filter), $name), E_USER_DEPRECATED); } $this->filters[$name] = $filter; } // functions foreach ($extension->getFunctions() as $name => $function) { if ($function instanceof TwigFunction) { $name = $function->getName(); } else { @trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated since version 1.21. Use \Twig_SimpleFunction instead.', \get_class($function), $name), E_USER_DEPRECATED); } $this->functions[$name] = $function; } // tests foreach ($extension->getTests() as $name => $test) { if ($test instanceof TwigTest) { $name = $test->getName(); } else { @trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated since version 1.21. Use \Twig_SimpleTest instead.', \get_class($test), $name), E_USER_DEPRECATED); } $this->tests[$name] = $test; } // token parsers foreach ($extension->getTokenParsers() as $parser) { if ($parser instanceof TokenParserInterface) { $this->parsers->addTokenParser($parser); } elseif ($parser instanceof \Twig_TokenParserBrokerInterface) { @trigger_error('Registering a \Twig_TokenParserBrokerInterface instance is deprecated since version 1.21.', E_USER_DEPRECATED); $this->parsers->addTokenParserBroker($parser); } else { throw new \LogicException('getTokenParsers() must return an array of \Twig_TokenParserInterface or \Twig_TokenParserBrokerInterface instances.'); } } // node visitors foreach ($extension->getNodeVisitors() as $visitor) { $this->visitors[] = $visitor; } // operators if ($operators = $extension->getOperators()) { if (!\is_array($operators)) { throw new \InvalidArgumentException(sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), \is_object($operators) ? \get_class($operators) : \gettype($operators).(\is_resource($operators) ? '' : '#'.$operators))); } if (2 !== \count($operators)) { throw new \InvalidArgumentException(sprintf('"%s::getOperators()" must return an array of 2 elements, got %d.', \get_class($extension), \count($operators))); } $this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); $this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); } } /** * @deprecated since 1.22 (to be removed in 2.0) */ protected function writeCacheFile($file, $content) { $this->cache->write($file, $content); } private function updateOptionsHash() { $hashParts = array_merge( array_keys($this->extensions), [ (int) \function_exists('twig_template_get_attributes'), PHP_MAJOR_VERSION, PHP_MINOR_VERSION, self::VERSION, (int) $this->debug, $this->baseTemplateClass, (int) $this->strictVariables, ] ); $this->optionsHash = implode(':', $hashParts); } } class_alias('Twig\Environment', 'Twig_Environment'); db/login/vendor/twig/twig/src/Cache/NullCache.php000064400000001257151502156020015625 0ustar00 */ class NullCache implements CacheInterface { public function generateKey($name, $className) { return ''; } public function write($key, $content) { } public function load($key) { } public function getTimestamp($key) { return 0; } } class_alias('Twig\Cache\NullCache', 'Twig_Cache_Null'); db/login/vendor/twig/twig/src/Cache/FilesystemCache.php000064400000005060151502156020017033 0ustar00 */ class FilesystemCache implements CacheInterface { const FORCE_BYTECODE_INVALIDATION = 1; private $directory; private $options; /** * @param string $directory The root cache directory * @param int $options A set of options */ public function __construct($directory, $options = 0) { $this->directory = rtrim($directory, '\/').'/'; $this->options = $options; } public function generateKey($name, $className) { $hash = hash('sha256', $className); return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php'; } public function load($key) { if (file_exists($key)) { @include_once $key; } } public function write($key, $content) { $dir = \dirname($key); if (!is_dir($dir)) { if (false === @mkdir($dir, 0777, true)) { clearstatcache(true, $dir); if (!is_dir($dir)) { throw new \RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir)); } } } elseif (!is_writable($dir)) { throw new \RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir)); } $tmpFile = tempnam($dir, basename($key)); if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $key)) { @chmod($key, 0666 & ~umask()); if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) { // Compile cached file into bytecode cache if (\function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN)) { @opcache_invalidate($key, true); } elseif (\function_exists('apc_compile_file')) { apc_compile_file($key); } } return; } throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $key)); } public function getTimestamp($key) { if (!file_exists($key)) { return 0; } return (int) @filemtime($key); } } class_alias('Twig\Cache\FilesystemCache', 'Twig_Cache_Filesystem'); db/login/vendor/twig/twig/src/Cache/CacheInterface.php000064400000002676151502156020016621 0ustar00 */ interface CacheInterface { /** * Generates a cache key for the given template class name. * * @param string $name The template name * @param string $className The template class name * * @return string */ public function generateKey($name, $className); /** * Writes the compiled template to cache. * * @param string $key The cache key * @param string $content The template representation as a PHP class */ public function write($key, $content); /** * Loads a template from the cache. * * @param string $key The cache key */ public function load($key); /** * Returns the modification timestamp of a key. * * @param string $key The cache key * * @return int */ public function getTimestamp($key); } class_alias('Twig\Cache\CacheInterface', 'Twig_CacheInterface'); db/login/vendor/twig/twig/src/TwigTest.php000064400000003227151502156020014535 0ustar00 */ class TwigTest { protected $name; protected $callable; protected $options; private $arguments = []; public function __construct($name, $callable, array $options = []) { $this->name = $name; $this->callable = $callable; $this->options = array_merge([ 'is_variadic' => false, 'node_class' => '\Twig\Node\Expression\TestExpression', 'deprecated' => false, 'alternative' => null, ], $options); } public function getName() { return $this->name; } public function getCallable() { return $this->callable; } public function getNodeClass() { return $this->options['node_class']; } public function isVariadic() { return $this->options['is_variadic']; } public function isDeprecated() { return (bool) $this->options['deprecated']; } public function getDeprecatedVersion() { return $this->options['deprecated']; } public function getAlternative() { return $this->options['alternative']; } public function setArguments($arguments) { $this->arguments = $arguments; } public function getArguments() { return $this->arguments; } } class_alias('Twig\TwigTest', 'Twig_SimpleTest'); db/login/vendor/twig/twig/src/Source.php000064400000002005151502156020014214 0ustar00 */ class Source { private $code; private $name; private $path; /** * @param string $code The template source code * @param string $name The template logical name * @param string $path The filesystem path of the template if any */ public function __construct($code, $name, $path = '') { $this->code = $code; $this->name = $name; $this->path = $path; } public function getCode() { return $this->code; } public function getName() { return $this->name; } public function getPath() { return $this->path; } } class_alias('Twig\Source', 'Twig_Source'); db/login/vendor/twig/twig/src/Template.php000064400000062163151502156020014542 0ustar00load() * instead, which returns an instance of \Twig\TemplateWrapper. * * @author Fabien Potencier * * @internal */ abstract class Template implements \Twig_TemplateInterface { /** * @internal */ protected static $cache = []; protected $parent; protected $parents = []; protected $env; protected $blocks = []; protected $traits = []; protected $sandbox; public function __construct(Environment $env) { $this->env = $env; } /** * @internal this method will be removed in 2.0 and is only used internally to provide an upgrade path from 1.x to 2.0 */ public function __toString() { return $this->getTemplateName(); } /** * Returns the template name. * * @return string The template name */ abstract public function getTemplateName(); /** * Returns debug information about the template. * * @return array Debug information */ public function getDebugInfo() { return []; } /** * Returns the template source code. * * @return string The template source code * * @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return ''; } /** * Returns information about the original template source code. * * @return Source */ public function getSourceContext() { return new Source('', $this->getTemplateName()); } /** * @deprecated since 1.20 (to be removed in 2.0) */ public function getEnvironment() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED); return $this->env; } /** * Returns the parent template. * * This method is for internal use only and should never be called * directly. * * @param array $context * * @return \Twig_TemplateInterface|TemplateWrapper|false The parent template or false if there is no parent * * @internal */ public function getParent(array $context) { if (null !== $this->parent) { return $this->parent; } try { $parent = $this->doGetParent($context); if (false === $parent) { return false; } if ($parent instanceof self || $parent instanceof TemplateWrapper) { return $this->parents[$parent->getSourceContext()->getName()] = $parent; } if (!isset($this->parents[$parent])) { $this->parents[$parent] = $this->loadTemplate($parent); } } catch (LoaderError $e) { $e->setSourceContext(null); $e->guess(); throw $e; } return $this->parents[$parent]; } protected function doGetParent(array $context) { return false; } public function isTraitable() { return true; } /** * Displays a parent block. * * This method is for internal use only and should never be called * directly. * * @param string $name The block name to display from the parent * @param array $context The context * @param array $blocks The current set of blocks */ public function displayParentBlock($name, array $context, array $blocks = []) { $name = (string) $name; if (isset($this->traits[$name])) { $this->traits[$name][0]->displayBlock($name, $context, $blocks, false); } elseif (false !== $parent = $this->getParent($context)) { $parent->displayBlock($name, $context, $blocks, false); } else { throw new RuntimeError(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext()); } } /** * Displays a block. * * This method is for internal use only and should never be called * directly. * * @param string $name The block name to display * @param array $context The context * @param array $blocks The current set of blocks * @param bool $useBlocks Whether to use the current set of blocks */ public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true) { $name = (string) $name; if ($useBlocks && isset($blocks[$name])) { $template = $blocks[$name][0]; $block = $blocks[$name][1]; } elseif (isset($this->blocks[$name])) { $template = $this->blocks[$name][0]; $block = $this->blocks[$name][1]; } else { $template = null; $block = null; } // avoid RCEs when sandbox is enabled if (null !== $template && !$template instanceof self) { throw new \LogicException('A block must be a method on a \Twig\Template instance.'); } if (null !== $template) { try { $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions // see \Twig\Error\LoaderError if (-1 === $e->getTemplateLine()) { $e->guess(); } throw $e; } catch (\Exception $e) { $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e); $e->guess(); throw $e; } } elseif (false !== $parent = $this->getParent($context)) { $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false); } else { @trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED); } } /** * Renders a parent block. * * This method is for internal use only and should never be called * directly. * * @param string $name The block name to render from the parent * @param array $context The context * @param array $blocks The current set of blocks * * @return string The rendered block */ public function renderParentBlock($name, array $context, array $blocks = []) { if ($this->env->isDebug()) { ob_start(); } else { ob_start(function () { return ''; }); } $this->displayParentBlock($name, $context, $blocks); return ob_get_clean(); } /** * Renders a block. * * This method is for internal use only and should never be called * directly. * * @param string $name The block name to render * @param array $context The context * @param array $blocks The current set of blocks * @param bool $useBlocks Whether to use the current set of blocks * * @return string The rendered block */ public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true) { if ($this->env->isDebug()) { ob_start(); } else { ob_start(function () { return ''; }); } $this->displayBlock($name, $context, $blocks, $useBlocks); return ob_get_clean(); } /** * Returns whether a block exists or not in the current context of the template. * * This method checks blocks defined in the current template * or defined in "used" traits or defined in parent templates. * * @param string $name The block name * @param array $context The context * @param array $blocks The current set of blocks * * @return bool true if the block exists, false otherwise */ public function hasBlock($name, array $context = null, array $blocks = []) { if (null === $context) { @trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); return isset($this->blocks[(string) $name]); } if (isset($blocks[$name])) { return $blocks[$name][0] instanceof self; } if (isset($this->blocks[$name])) { return true; } if (false !== $parent = $this->getParent($context)) { return $parent->hasBlock($name, $context); } return false; } /** * Returns all block names in the current context of the template. * * This method checks blocks defined in the current template * or defined in "used" traits or defined in parent templates. * * @param array $context The context * @param array $blocks The current set of blocks * * @return array An array of block names */ public function getBlockNames(array $context = null, array $blocks = []) { if (null === $context) { @trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); return array_keys($this->blocks); } $names = array_merge(array_keys($blocks), array_keys($this->blocks)); if (false !== $parent = $this->getParent($context)) { $names = array_merge($names, $parent->getBlockNames($context)); } return array_unique($names); } /** * @return Template|TemplateWrapper */ protected function loadTemplate($template, $templateName = null, $line = null, $index = null) { try { if (\is_array($template)) { return $this->env->resolveTemplate($template); } if ($template instanceof self || $template instanceof TemplateWrapper) { return $template; } if ($template === $this->getTemplateName()) { $class = \get_class($this); if (false !== $pos = strrpos($class, '___', -1)) { $class = substr($class, 0, $pos); } return $this->env->loadClass($class, $template, $index); } return $this->env->loadTemplate($template, $index); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($templateName ? new Source('', $templateName) : $this->getSourceContext()); } if ($e->getTemplateLine() > 0) { throw $e; } if (!$line) { $e->guess(); } else { $e->setTemplateLine($line); } throw $e; } } /** * @internal * * @return Template */ protected function unwrap() { return $this; } /** * Returns all blocks. * * This method is for internal use only and should never be called * directly. * * @return array An array of blocks */ public function getBlocks() { return $this->blocks; } public function display(array $context, array $blocks = []) { $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); } public function render(array $context) { $level = ob_get_level(); if ($this->env->isDebug()) { ob_start(); } else { ob_start(function () { return ''; }); } try { $this->display($context); } catch (\Exception $e) { while (ob_get_level() > $level) { ob_end_clean(); } throw $e; } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } throw $e; } return ob_get_clean(); } protected function displayWithErrorHandling(array $context, array $blocks = []) { try { $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions // see \Twig\Error\LoaderError if (-1 === $e->getTemplateLine()) { $e->guess(); } throw $e; } catch (\Exception $e) { $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e); $e->guess(); throw $e; } } /** * Auto-generated method to display the template with the given context. * * @param array $context An array of parameters to pass to the template * @param array $blocks An array of blocks to pass to the template */ abstract protected function doDisplay(array $context, array $blocks = []); /** * Returns a variable from the context. * * This method is for internal use only and should never be called * directly. * * This method should not be overridden in a sub-class as this is an * implementation detail that has been introduced to optimize variable * access for versions of PHP before 5.4. This is not a way to override * the way to get a variable value. * * @param array $context The context * @param string $item The variable to return from the context * @param bool $ignoreStrictCheck Whether to ignore the strict variable check or not * * @return mixed The content of the context variable * * @throws RuntimeError if the variable does not exist and Twig is running in strict mode * * @internal */ final protected function getContext($context, $item, $ignoreStrictCheck = false) { if (!\array_key_exists($item, $context)) { if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return; } throw new RuntimeError(sprintf('Variable "%s" does not exist.', $item), -1, $this->getSourceContext()); } return $context[$item]; } /** * Returns the attribute value for a given array/object. * * @param mixed $object The object or array from where to get the item * @param mixed $item The item to get from the array or object * @param array $arguments An array of arguments to pass if the item is an object method * @param string $type The type of attribute (@see \Twig\Template constants) * @param bool $isDefinedTest Whether this is only a defined check * @param bool $ignoreStrictCheck Whether to ignore the strict attribute check or not * * @return mixed The attribute value, or a Boolean when $isDefinedTest is true, or null when the attribute is not set and $ignoreStrictCheck is true * * @throws RuntimeError if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false * * @internal */ protected function getAttribute($object, $item, array $arguments = [], $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) { // array if (self::METHOD_CALL !== $type) { $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item; if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object))) || ($object instanceof \ArrayAccess && isset($object[$arrayItem])) ) { if ($isDefinedTest) { return true; } return $object[$arrayItem]; } if (self::ARRAY_CALL === $type || !\is_object($object)) { if ($isDefinedTest) { return false; } if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return; } if ($object instanceof \ArrayAccess) { $message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist.', $arrayItem, \get_class($object)); } elseif (\is_object($object)) { $message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, \get_class($object)); } elseif (\is_array($object)) { if (empty($object)) { $message = sprintf('Key "%s" does not exist as the array is empty.', $arrayItem); } else { $message = sprintf('Key "%s" for array with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); } } elseif (self::ARRAY_CALL === $type) { if (null === $object) { $message = sprintf('Impossible to access a key ("%s") on a null variable.', $item); } else { $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); } } elseif (null === $object) { $message = sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); } else { $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); } throw new RuntimeError($message, -1, $this->getSourceContext()); } } if (!\is_object($object)) { if ($isDefinedTest) { return false; } if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return; } if (null === $object) { $message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item); } elseif (\is_array($object)) { $message = sprintf('Impossible to invoke a method ("%s") on an array.', $item); } else { $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); } throw new RuntimeError($message, -1, $this->getSourceContext()); } // object property if (self::METHOD_CALL !== $type && !$object instanceof self) { // \Twig\Template does not have public properties, and we don't want to allow access to internal ones if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) { if ($isDefinedTest) { return true; } if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) { $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkPropertyAllowed($object, $item); } return $object->$item; } } $class = \get_class($object); // object method if (!isset(self::$cache[$class])) { // get_class_methods returns all methods accessible in the scope, but we only want public ones to be accessible in templates if ($object instanceof self) { $ref = new \ReflectionClass($class); $methods = []; foreach ($ref->getMethods(\ReflectionMethod::IS_PUBLIC) as $refMethod) { // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment if ('getenvironment' !== strtr($refMethod->name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')) { $methods[] = $refMethod->name; } } } else { $methods = get_class_methods($object); } // sort values to have consistent behavior, so that "get" methods win precedence over "is" methods sort($methods); $cache = []; foreach ($methods as $method) { $cache[$method] = $method; $cache[$lcName = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')] = $method; if ('g' === $lcName[0] && 0 === strpos($lcName, 'get')) { $name = substr($method, 3); $lcName = substr($lcName, 3); } elseif ('i' === $lcName[0] && 0 === strpos($lcName, 'is')) { $name = substr($method, 2); $lcName = substr($lcName, 2); } else { continue; } // skip get() and is() methods (in which case, $name is empty) if ($name) { if (!isset($cache[$name])) { $cache[$name] = $method; } if (!isset($cache[$lcName])) { $cache[$lcName] = $method; } } } self::$cache[$class] = $cache; } $call = false; if (isset(self::$cache[$class][$item])) { $method = self::$cache[$class][$item]; } elseif (isset(self::$cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) { $method = self::$cache[$class][$lcItem]; } elseif (isset(self::$cache[$class]['__call'])) { $method = $item; $call = true; } else { if ($isDefinedTest) { return false; } if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { return; } throw new RuntimeError(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext()); } if ($isDefinedTest) { return true; } if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) { $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkMethodAllowed($object, $method); } // Some objects throw exceptions when they have __call, and the method we try // to call is not supported. If ignoreStrictCheck is true, we should return null. try { if (!$arguments) { $ret = $object->$method(); } else { $ret = \call_user_func_array([$object, $method], $arguments); } } catch (\BadMethodCallException $e) { if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { return; } throw $e; } // @deprecated in 1.28 if ($object instanceof \Twig_TemplateInterface) { $self = $object->getTemplateName() === $this->getTemplateName(); $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName()); if ('renderBlock' === $method || 'displayBlock' === $method) { $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template'); } elseif ('hasBlock' === $method) { $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template'); } elseif ('render' === $method || 'display' === $method) { $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName()); } @trigger_error($message, E_USER_DEPRECATED); return '' === $ret ? '' : new Markup($ret, $this->env->getCharset()); } return $ret; } } class_alias('Twig\Template', 'Twig_Template'); db/login/vendor/twig/twig/src/Test/IntegrationTestCase.php000064400000020401151502156020017612 0ustar00 * @author Karma Dordrak */ abstract class IntegrationTestCase extends TestCase { /** * @return string */ abstract protected function getFixturesDir(); /** * @return RuntimeLoaderInterface[] */ protected function getRuntimeLoaders() { return []; } /** * @return ExtensionInterface[] */ protected function getExtensions() { return []; } /** * @return TwigFilter[] */ protected function getTwigFilters() { return []; } /** * @return TwigFunction[] */ protected function getTwigFunctions() { return []; } /** * @return TwigTest[] */ protected function getTwigTests() { return []; } /** * @dataProvider getTests */ public function testIntegration($file, $message, $condition, $templates, $exception, $outputs) { $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs); } /** * @dataProvider getLegacyTests * @group legacy */ public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs) { $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs); } public function getTests($name, $legacyTests = false) { $fixturesDir = realpath($this->getFixturesDir()); $tests = []; foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($fixturesDir), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { if (!preg_match('/\.test$/', $file)) { continue; } if ($legacyTests xor false !== strpos($file->getRealpath(), '.legacy.test')) { continue; } $test = file_get_contents($file->getRealpath()); if (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) { $message = $match[1]; $condition = $match[2]; $templates = self::parseTemplates($match[3]); $exception = $match[5]; $outputs = [[null, $match[4], null, '']]; } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) { $message = $match[1]; $condition = $match[2]; $templates = self::parseTemplates($match[3]); $exception = false; preg_match_all('/--DATA--(.*?)(?:--CONFIG--(.*?))?--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $outputs, PREG_SET_ORDER); } else { throw new \InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file))); } $tests[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs]; } if ($legacyTests && empty($tests)) { // add a dummy test to avoid a PHPUnit message return [['not', '-', '', [], '', []]]; } return $tests; } public function getLegacyTests() { return $this->getTests('testLegacyIntegration', true); } protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs) { if (!$outputs) { $this->markTestSkipped('no tests to run'); } if ($condition) { eval('$ret = '.$condition.';'); if (!$ret) { $this->markTestSkipped($condition); } } $loader = new ArrayLoader($templates); foreach ($outputs as $i => $match) { $config = array_merge([ 'cache' => false, 'strict_variables' => true, ], $match[2] ? eval($match[2].';') : []); $twig = new Environment($loader, $config); $twig->addGlobal('global', 'global'); foreach ($this->getRuntimeLoaders() as $runtimeLoader) { $twig->addRuntimeLoader($runtimeLoader); } foreach ($this->getExtensions() as $extension) { $twig->addExtension($extension); } foreach ($this->getTwigFilters() as $filter) { $twig->addFilter($filter); } foreach ($this->getTwigTests() as $test) { $twig->addTest($test); } foreach ($this->getTwigFunctions() as $function) { $twig->addFunction($function); } $p = new \ReflectionProperty($twig, 'templateClassPrefix'); $p->setAccessible(true); $p->setValue($twig, '__TwigTemplate_'.hash('sha256', uniqid(mt_rand(), true), false).'_'); try { $template = $twig->load('index.twig'); } catch (\Exception $e) { if (false !== $exception) { $message = $e->getMessage(); $this->assertSame(trim($exception), trim(sprintf('%s: %s', \get_class($e), $message))); $last = substr($message, \strlen($message) - 1); $this->assertTrue('.' === $last || '?' === $last, 'Exception message must end with a dot or a question mark.'); return; } throw new Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e); } try { $output = trim($template->render(eval($match[1].';')), "\n "); } catch (\Exception $e) { if (false !== $exception) { $this->assertSame(trim($exception), trim(sprintf('%s: %s', \get_class($e), $e->getMessage()))); return; } $e = new Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e); $output = trim(sprintf('%s: %s', \get_class($e), $e->getMessage())); } if (false !== $exception) { list($class) = explode(':', $exception); $constraintClass = class_exists('PHPUnit\Framework\Constraint\Exception') ? 'PHPUnit\Framework\Constraint\Exception' : 'PHPUnit_Framework_Constraint_Exception'; $this->assertThat(null, new $constraintClass($class)); } $expected = trim($match[3], "\n "); if ($expected !== $output) { printf("Compiled templates that failed on case %d:\n", $i + 1); foreach (array_keys($templates) as $name) { echo "Template: $name\n"; $loader = $twig->getLoader(); if (!$loader instanceof SourceContextLoaderInterface) { $source = new Source($loader->getSource($name), $name); } else { $source = $loader->getSourceContext($name); } echo $twig->compile($twig->parse($twig->tokenize($source))); } } $this->assertEquals($expected, $output, $message.' (in '.$file.')'); } } protected static function parseTemplates($test) { $templates = []; preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER); foreach ($matches as $match) { $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2]; } return $templates; } } class_alias('Twig\Test\IntegrationTestCase', 'Twig_Test_IntegrationTestCase'); db/login/vendor/twig/twig/src/Test/NodeTestCase.php000064400000004152151502156020016221 0ustar00assertNodeCompilation($source, $node, $environment, $isPattern); } public function assertNodeCompilation($source, Node $node, Environment $environment = null, $isPattern = false) { $compiler = $this->getCompiler($environment); $compiler->compile($node); if ($isPattern) { $this->assertStringMatchesFormat($source, trim($compiler->getSource())); } else { $this->assertEquals($source, trim($compiler->getSource())); } } protected function getCompiler(Environment $environment = null) { return new Compiler(null === $environment ? $this->getEnvironment() : $environment); } protected function getEnvironment() { return new Environment(new ArrayLoader([])); } protected function getVariableGetter($name, $line = false) { $line = $line > 0 ? "// line {$line}\n" : ''; if (\PHP_VERSION_ID >= 70000) { return sprintf('%s($context["%s"] ?? null)', $line, $name); } if (\PHP_VERSION_ID >= 50400) { return sprintf('%s(isset($context["%s"]) ? $context["%s"] : null)', $line, $name, $name); } return sprintf('%s$this->getContext($context, "%s")', $line, $name); } protected function getAttributeGetter() { if (\function_exists('twig_template_get_attributes')) { return 'twig_template_get_attributes($this, '; } return '$this->getAttribute('; } } class_alias('Twig\Test\NodeTestCase', 'Twig_Test_NodeTestCase'); db/login/vendor/twig/twig/.php_cs.dist000064400000001437151502156020013703 0ustar00setRules([ '@Symfony' => true, '@Symfony:risky' => true, '@PHPUnit75Migration:risky' => true, 'php_unit_dedicate_assert' => ['target' => '5.6'], 'array_syntax' => ['syntax' => 'short'], 'php_unit_fqcn_annotation' => true, 'no_unreachable_default_argument_value' => false, 'braces' => ['allow_single_line_closure' => true], 'heredoc_to_nowdoc' => false, 'ordered_imports' => true, 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], 'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'all'], ]) ->setRiskyAllowed(true) ->setFinder(PhpCsFixer\Finder::create()->in(__DIR__)) ; db/login/vendor/twig/twig/LICENSE000064400000002702151502156020012465 0ustar00Copyright (c) 2009-2020 by the Twig Team. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. db/login/vendor/twig/twig/.travis.yml000064400000001754151502156020013577 0ustar00language: php dist: trusty sudo: false cache: directories: - vendor - $HOME/.composer/cache/files env: global: - TWIG_EXT=no - SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1 before_install: - phpenv config-rm xdebug.ini || return 0 install: - travis_retry composer install before_script: - if [ "$TWIG_EXT" == "yes" ]; then sh -c "cd ext/twig && phpize && ./configure --enable-twig && make && make install"; fi - if [ "$TWIG_EXT" == "yes" ]; then echo "extension=twig.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi script: ./vendor/bin/simple-phpunit jobs: fast_finish: true include: - php: 5.5 - php: 5.5 env: TWIG_EXT=yes - php: 5.6 - php: 5.6 env: TWIG_EXT=yes - php: 7.0 - php: 7.1 - php: 7.2 - php: 7.3 - php: 7.4snapshot - stage: integration tests php: 7.3 script: ./drupal_test.sh db/login/vendor/twig/extensions/README.rst000064400000000615151502156020014375 0ustar00Twig Extensions Repository ========================== This repository hosts Twig Extensions that do not belong to the core but can be nonetheless interesting to share with other developers. Fork this repository, add your extension, and request a pull. More Information ---------------- Read the `documentation`_ for more information. .. _documentation: http://twig-extensions.readthedocs.io/ db/login/vendor/twig/extensions/lib/Twig/Extensions/Extension/Intl.php000064400000011256151502156020022123 0ustar00 true)), new Twig_SimpleFilter('localizednumber', 'twig_localized_number_filter'), new Twig_SimpleFilter('localizedcurrency', 'twig_localized_currency_filter'), ); } /** * {@inheritdoc} */ public function getName() { return 'intl'; } } function twig_localized_date_filter(Twig_Environment $env, $date, $dateFormat = 'medium', $timeFormat = 'medium', $locale = null, $timezone = null, $format = null, $calendar = 'gregorian') { $date = twig_date_converter($env, $date, $timezone); $formatValues = array( 'none' => IntlDateFormatter::NONE, 'short' => IntlDateFormatter::SHORT, 'medium' => IntlDateFormatter::MEDIUM, 'long' => IntlDateFormatter::LONG, 'full' => IntlDateFormatter::FULL, ); if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) { $formatter = IntlDateFormatter::create( $locale, $formatValues[$dateFormat], $formatValues[$timeFormat], $date->getTimezone()->getName(), 'gregorian' === $calendar ? IntlDateFormatter::GREGORIAN : IntlDateFormatter::TRADITIONAL, $format ); return $formatter->format($date->getTimestamp()); } $formatter = IntlDateFormatter::create( $locale, $formatValues[$dateFormat], $formatValues[$timeFormat], IntlTimeZone::createTimeZone($date->getTimezone()->getName()), 'gregorian' === $calendar ? IntlDateFormatter::GREGORIAN : IntlDateFormatter::TRADITIONAL, $format ); return $formatter->format($date->getTimestamp()); } function twig_localized_number_filter($number, $style = 'decimal', $type = 'default', $locale = null) { static $typeValues = array( 'default' => NumberFormatter::TYPE_DEFAULT, 'int32' => NumberFormatter::TYPE_INT32, 'int64' => NumberFormatter::TYPE_INT64, 'double' => NumberFormatter::TYPE_DOUBLE, 'currency' => NumberFormatter::TYPE_CURRENCY, ); $formatter = twig_get_number_formatter($locale, $style); if (!isset($typeValues[$type])) { throw new Twig_Error_Syntax(sprintf('The type "%s" does not exist. Known types are: "%s"', $type, implode('", "', array_keys($typeValues)))); } return $formatter->format($number, $typeValues[$type]); } function twig_localized_currency_filter($number, $currency = null, $locale = null) { $formatter = twig_get_number_formatter($locale, 'currency'); return $formatter->formatCurrency($number, $currency); } /** * Gets a number formatter instance according to given locale and formatter. * * @param string $locale Locale in which the number would be formatted * @param int $style Style of the formatting * * @return NumberFormatter A NumberFormatter instance */ function twig_get_number_formatter($locale, $style) { static $formatter, $currentStyle; $locale = null !== $locale ? $locale : Locale::getDefault(); if ($formatter && $formatter->getLocale() === $locale && $currentStyle === $style) { // Return same instance of NumberFormatter if parameters are the same // to those in previous call return $formatter; } static $styleValues = array( 'decimal' => NumberFormatter::DECIMAL, 'currency' => NumberFormatter::CURRENCY, 'percent' => NumberFormatter::PERCENT, 'scientific' => NumberFormatter::SCIENTIFIC, 'spellout' => NumberFormatter::SPELLOUT, 'ordinal' => NumberFormatter::ORDINAL, 'duration' => NumberFormatter::DURATION, ); if (!isset($styleValues[$style])) { throw new Twig_Error_Syntax(sprintf('The style "%s" does not exist. Known styles are: "%s"', $style, implode('", "', array_keys($styleValues)))); } $currentStyle = $style; $formatter = NumberFormatter::create($locale, $styleValues[$style]); return $formatter; } class_alias('Twig_Extensions_Extension_Intl', 'Twig\Extensions\IntlExtension', false); db/login/vendor/twig/extensions/lib/Twig/Extensions/Extension/Date.php000064400000005612151502156020022071 0ustar00 */ class Twig_Extensions_Extension_Date extends Twig_Extension { public static $units = array( 'y' => 'year', 'm' => 'month', 'd' => 'day', 'h' => 'hour', 'i' => 'minute', 's' => 'second', ); /** * @var TranslatorInterface */ private $translator; public function __construct(TranslatorInterface $translator = null) { // Ignore the IdentityTranslator, otherwise the parameters won't be replaced properly if ($translator instanceof IdentityTranslator) { $translator = null; } $this->translator = $translator; } /** * {@inheritdoc} */ public function getFilters() { return array( new Twig_SimpleFilter('time_diff', array($this, 'diff'), array('needs_environment' => true)), ); } /** * Filter for converting dates to a time ago string like Facebook and Twitter has. * * @param Twig_Environment $env a Twig_Environment instance * @param string|DateTime $date a string or DateTime object to convert * @param string|DateTime $now A string or DateTime object to compare with. If none given, the current time will be used. * * @return string the converted time */ public function diff(Twig_Environment $env, $date, $now = null) { // Convert both dates to DateTime instances. $date = twig_date_converter($env, $date); $now = twig_date_converter($env, $now); // Get the difference between the two DateTime objects. $diff = $date->diff($now); // Check for each interval if it appears in the $diff object. foreach (self::$units as $attribute => $unit) { $count = $diff->$attribute; if (0 !== $count) { return $this->getPluralizedInterval($count, $diff->invert, $unit); } } return ''; } protected function getPluralizedInterval($count, $invert, $unit) { if ($this->translator) { $id = sprintf('diff.%s.%s', $invert ? 'in' : 'ago', $unit); return $this->translator->transChoice($id, $count, array('%count%' => $count), 'date'); } if (1 !== $count) { $unit .= 's'; } return $invert ? "in $count $unit" : "$count $unit ago"; } /** * {@inheritdoc} */ public function getName() { return 'date'; } } class_alias('Twig_Extensions_Extension_Date', 'Twig\Extensions\DateExtension', false); db/login/vendor/twig/extensions/lib/Twig/Extensions/Extension/Array.php000064400000001770151502156020022273 0ustar00 */ class Twig_Extensions_Extension_Array extends Twig_Extension { /** * {@inheritdoc} */ public function getFilters() { $filters = array( new Twig_SimpleFilter('shuffle', 'twig_shuffle_filter'), ); return $filters; } /** * {@inheritdoc} */ public function getName() { return 'array'; } } /** * Shuffles an array. * * @param array|Traversable $array An array * * @return array */ function twig_shuffle_filter($array) { if ($array instanceof Traversable) { $array = iterator_to_array($array, false); } shuffle($array); return $array; } class_alias('Twig_Extensions_Extension_Array', 'Twig\Extensions\ArrayExtension', false); db/login/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php000064400000005540151502156020022140 0ustar00 */ class Twig_Extensions_Extension_Text extends Twig_Extension { /** * {@inheritdoc} */ public function getFilters() { return array( new Twig_SimpleFilter('truncate', 'twig_truncate_filter', array('needs_environment' => true)), new Twig_SimpleFilter('wordwrap', 'twig_wordwrap_filter', array('needs_environment' => true)), ); } /** * {@inheritdoc} */ public function getName() { return 'Text'; } } if (function_exists('mb_get_info')) { function twig_truncate_filter(Twig_Environment $env, $value, $length = 30, $preserve = false, $separator = '...') { if (mb_strlen($value, $env->getCharset()) > $length) { if ($preserve) { // If breakpoint is on the last word, return the value without separator. if (false === ($breakpoint = mb_strpos($value, ' ', $length, $env->getCharset()))) { return $value; } $length = $breakpoint; } return rtrim(mb_substr($value, 0, $length, $env->getCharset())).$separator; } return $value; } function twig_wordwrap_filter(Twig_Environment $env, $value, $length = 80, $separator = "\n", $preserve = false) { $sentences = array(); $previous = mb_regex_encoding(); mb_regex_encoding($env->getCharset()); $pieces = mb_split($separator, $value); mb_regex_encoding($previous); foreach ($pieces as $piece) { while (!$preserve && mb_strlen($piece, $env->getCharset()) > $length) { $sentences[] = mb_substr($piece, 0, $length, $env->getCharset()); $piece = mb_substr($piece, $length, 2048, $env->getCharset()); } $sentences[] = $piece; } return implode($separator, $sentences); } } else { function twig_truncate_filter(Twig_Environment $env, $value, $length = 30, $preserve = false, $separator = '...') { if (strlen($value) > $length) { if ($preserve) { if (false !== ($breakpoint = strpos($value, ' ', $length))) { $length = $breakpoint; } } return rtrim(substr($value, 0, $length)).$separator; } return $value; } function twig_wordwrap_filter(Twig_Environment $env, $value, $length = 80, $separator = "\n", $preserve = false) { return wordwrap($value, $length, $separator, !$preserve); } } class_alias('Twig_Extensions_Extension_Text', 'Twig\Extensions\TextExtension', false); db/login/vendor/twig/extensions/lib/Twig/Extensions/Extension/I18n.php000064400000001420151502156020021724 0ustar00 */ class Twig_Extensions_Node_Trans extends Twig_Node { public function __construct(Twig_Node $body, Twig_Node $plural = null, Twig_Node_Expression $count = null, Twig_Node $notes = null, $lineno, $tag = null) { $nodes = array('body' => $body); if (null !== $count) { $nodes['count'] = $count; } if (null !== $plural) { $nodes['plural'] = $plural; } if (null !== $notes) { $nodes['notes'] = $notes; } parent::__construct($nodes, array(), $lineno, $tag); } /** * {@inheritdoc} */ public function compile(Twig_Compiler $compiler) { $compiler->addDebugInfo($this); list($msg, $vars) = $this->compileString($this->getNode('body')); if ($this->hasNode('plural')) { list($msg1, $vars1) = $this->compileString($this->getNode('plural')); $vars = array_merge($vars, $vars1); } $function = $this->getTransFunction($this->hasNode('plural')); if ($this->hasNode('notes')) { $message = trim($this->getNode('notes')->getAttribute('data')); // line breaks are not allowed cause we want a single line comment $message = str_replace(array("\n", "\r"), ' ', $message); $compiler->write("// notes: {$message}\n"); } if ($vars) { $compiler ->write('echo strtr('.$function.'(') ->subcompile($msg) ; if ($this->hasNode('plural')) { $compiler ->raw(', ') ->subcompile($msg1) ->raw(', abs(') ->subcompile($this->hasNode('count') ? $this->getNode('count') : null) ->raw(')') ; } $compiler->raw('), array('); foreach ($vars as $var) { if ('count' === $var->getAttribute('name')) { $compiler ->string('%count%') ->raw(' => abs(') ->subcompile($this->hasNode('count') ? $this->getNode('count') : null) ->raw('), ') ; } else { $compiler ->string('%'.$var->getAttribute('name').'%') ->raw(' => ') ->subcompile($var) ->raw(', ') ; } } $compiler->raw("));\n"); } else { $compiler ->write('echo '.$function.'(') ->subcompile($msg) ; if ($this->hasNode('plural')) { $compiler ->raw(', ') ->subcompile($msg1) ->raw(', abs(') ->subcompile($this->hasNode('count') ? $this->getNode('count') : null) ->raw(')') ; } $compiler->raw(");\n"); } } /** * @param Twig_Node $body A Twig_Node instance * * @return array */ protected function compileString(Twig_Node $body) { if ($body instanceof Twig_Node_Expression_Name || $body instanceof Twig_Node_Expression_Constant || $body instanceof Twig_Node_Expression_TempName) { return array($body, array()); } $vars = array(); if (count($body)) { $msg = ''; foreach ($body as $node) { if (get_class($node) === 'Twig_Node' && $node->getNode(0) instanceof Twig_Node_SetTemp) { $node = $node->getNode(1); } if ($node instanceof Twig_Node_Print) { $n = $node->getNode('expr'); while ($n instanceof Twig_Node_Expression_Filter) { $n = $n->getNode('node'); } $msg .= sprintf('%%%s%%', $n->getAttribute('name')); $vars[] = new Twig_Node_Expression_Name($n->getAttribute('name'), $n->getTemplateLine()); } else { $msg .= $node->getAttribute('data'); } } } else { $msg = $body->getAttribute('data'); } return array(new Twig_Node(array(new Twig_Node_Expression_Constant(trim($msg), $body->getTemplateLine()))), $vars); } /** * @param bool $plural Return plural or singular function to use * * @return string */ protected function getTransFunction($plural) { return $plural ? 'ngettext' : 'gettext'; } } class_alias('Twig_Extensions_Node_Trans', 'Twig\Extensions\Node\TransNode', false); db/login/vendor/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php000064400000005315151502156020022564 0ustar00getLine(); $stream = $this->parser->getStream(); $count = null; $plural = null; $notes = null; if (!$stream->test(Twig_Token::BLOCK_END_TYPE)) { $body = $this->parser->getExpressionParser()->parseExpression(); } else { $stream->expect(Twig_Token::BLOCK_END_TYPE); $body = $this->parser->subparse(array($this, 'decideForFork')); $next = $stream->next()->getValue(); if ('plural' === $next) { $count = $this->parser->getExpressionParser()->parseExpression(); $stream->expect(Twig_Token::BLOCK_END_TYPE); $plural = $this->parser->subparse(array($this, 'decideForFork')); if ('notes' === $stream->next()->getValue()) { $stream->expect(Twig_Token::BLOCK_END_TYPE); $notes = $this->parser->subparse(array($this, 'decideForEnd'), true); } } elseif ('notes' === $next) { $stream->expect(Twig_Token::BLOCK_END_TYPE); $notes = $this->parser->subparse(array($this, 'decideForEnd'), true); } } $stream->expect(Twig_Token::BLOCK_END_TYPE); $this->checkTransString($body, $lineno); return new Twig_Extensions_Node_Trans($body, $plural, $count, $notes, $lineno, $this->getTag()); } public function decideForFork(Twig_Token $token) { return $token->test(array('plural', 'notes', 'endtrans')); } public function decideForEnd(Twig_Token $token) { return $token->test('endtrans'); } /** * {@inheritdoc} */ public function getTag() { return 'trans'; } protected function checkTransString(Twig_Node $body, $lineno) { foreach ($body as $i => $node) { if ( $node instanceof Twig_Node_Text || ($node instanceof Twig_Node_Print && $node->getNode('expr') instanceof Twig_Node_Expression_Name) ) { continue; } throw new Twig_Error_Syntax(sprintf('The text to be translated with "trans" can only contain references to simple variables'), $lineno); } } } class_alias('Twig_Extensions_TokenParser_Trans', 'Twig\Extensions\TokenParser\TransTokenParser', false); db/login/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php000064400000002251151502156020021333 0ustar00 * * @deprecated since version 1.5, use Composer instead. */ class Twig_Extensions_Autoloader { /** * Registers Twig_Extensions_Autoloader as an SPL autoloader. */ public static function register() { spl_autoload_register(array(new self(), 'autoload')); } /** * Handles autoloading of classes. * * @param string $class a class name * * @return bool Returns true if the class has been loaded */ public static function autoload($class) { if (0 !== strpos($class, 'Twig_Extensions')) { return; } if (file_exists($file = __DIR__.'/../../'.str_replace('_', '/', $class).'.php')) { require $file; } } } db/login/vendor/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php000064400000011272151502156020022646 0ustar00getGrammar(); if (!is_object($grammar)) { $grammar = self::parseGrammar($grammar); } $grammar->setParser($this->parser); $values = $grammar->parse($token); return $this->getNode($values, $token->getLine()); } /** * Gets the grammar as an object or as a string. * * @return string|Twig_Extensions_Grammar A Twig_Extensions_Grammar instance or a string */ abstract protected function getGrammar(); /** * Gets the nodes based on the parsed values. * * @param array $values An array of values * @param int $line The parser line */ abstract protected function getNode(array $values, $line); protected function getAttribute($node, $attribute, $arguments = array(), $type = Twig_Node_Expression_GetAttr::TYPE_ANY, $line = -1) { return new Twig_Node_Expression_GetAttr( $node instanceof Twig_Node ? $node : new Twig_Node_Expression_Name($node, $line), $attribute instanceof Twig_Node ? $attribute : new Twig_Node_Expression_Constant($attribute, $line), $arguments instanceof Twig_Node ? $arguments : new Twig_Node($arguments), $type, $line ); } protected function call($node, $attribute, $arguments = array(), $line = -1) { return $this->getAttribute($node, $attribute, $arguments, Twig_Node_Expression_GetAttr::TYPE_METHOD, $line); } protected function markAsSafe(Twig_Node $node, $line = -1) { return new Twig_Node_Expression_Filter( $node, new Twig_Node_Expression_Constant('raw', $line), new Twig_Node(), $line ); } protected function output(Twig_Node $node, $line = -1) { return new Twig_Node_Print($node, $line); } protected function getNodeValues(array $values) { $nodes = array(); foreach ($values as $value) { if ($value instanceof Twig_Node) { $nodes[] = $value; } } return $nodes; } public static function parseGrammar($str, $main = true) { static $cursor; if (true === $main) { $cursor = 0; $grammar = new Twig_Extensions_Grammar_Tag(); } else { $grammar = new Twig_Extensions_Grammar_Optional(); } while ($cursor < strlen($str)) { if (preg_match('/\s+/A', $str, $match, null, $cursor)) { $cursor += strlen($match[0]); } elseif (preg_match('/<(\w+)(?:\:(\w+))?>/A', $str, $match, null, $cursor)) { $class = sprintf('Twig_Extensions_Grammar_%s', ucfirst(isset($match[2]) ? $match[2] : 'Expression')); if (!class_exists($class)) { throw new Twig_Error_Runtime(sprintf('Unable to understand "%s" in grammar (%s class does not exist)', $match[0], $class)); } $grammar->addGrammar(new $class($match[1])); $cursor += strlen($match[0]); } elseif (preg_match('/\w+/A', $str, $match, null, $cursor)) { $grammar->addGrammar(new Twig_Extensions_Grammar_Constant($match[0])); $cursor += strlen($match[0]); } elseif (preg_match('/,/A', $str, $match, null, $cursor)) { $grammar->addGrammar(new Twig_Extensions_Grammar_Constant($match[0], Twig_Token::PUNCTUATION_TYPE)); $cursor += strlen($match[0]); } elseif (preg_match('/\[/A', $str, $match, null, $cursor)) { $cursor += strlen($match[0]); $grammar->addGrammar(self::parseGrammar($str, false)); } elseif (true !== $main && preg_match('/\]/A', $str, $match, null, $cursor)) { $cursor += strlen($match[0]); return $grammar; } else { throw new Twig_Error_Runtime(sprintf('Unable to parse grammar "%s" near "...%s..."', $str, substr($str, $cursor, 10))); } } return $grammar; } } db/login/vendor/twig/extensions/lib/Twig/Extensions/GrammarInterface.php000064400000000652151502156020022446 0ustar00', $this->name); } public function parse(Twig_Token $token) { $this->parser->getStream()->expect(Twig_Token::NAME_TYPE, array('true', 'false')); return new Twig_Node_Expression_Constant('true' === $token->getValue() ? true : false, $token->getLine()); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php000064400000001044151502156020021504 0ustar00', $this->name); } public function parse(Twig_Token $token) { return $this->parser->getExpressionParser()->parseHashExpression(); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php000064400000001453151502156020022416 0ustar00name = $name; $this->type = null === $type ? Twig_Token::NAME_TYPE : $type; } public function __toString() { return $this->name; } public function parse(Twig_Token $token) { $this->parser->getStream()->expect($this->type, $this->name); return $this->name; } public function getType() { return $this->type; } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php000064400000001170151502156020022062 0ustar00', $this->name); } public function parse(Twig_Token $token) { $this->parser->getStream()->expect(Twig_Token::NAME_TYPE, $this->name); return new Twig_Node_Expression_Constant(true, $token->getLine()); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php000064400000002553151502156020021342 0ustar00grammar = array(); foreach (func_get_args() as $grammar) { $this->addGrammar($grammar); } } public function __toString() { $repr = array(); foreach ($this->grammar as $grammar) { $repr[] = (string) $grammar; } return implode(' ', $repr); } public function addGrammar(Twig_Extensions_GrammarInterface $grammar) { $this->grammar[] = $grammar; } public function parse(Twig_Token $token) { $elements = array(); foreach ($this->grammar as $grammar) { $grammar->setParser($this->parser); $element = $grammar->parse($token); if (is_array($element)) { $elements = array_merge($elements, $element); } else { $elements[$grammar->getName()] = $element; } } $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); return $elements; } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php000064400000001041151502156020022755 0ustar00', $this->name); } public function parse(Twig_Token $token) { return $this->parser->getExpressionParser()->parseExpression(); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php000064400000001051151502156020022564 0ustar00', $this->name); } public function parse(Twig_Token $token) { return $this->parser->getExpressionParser()->parseArguments(); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Array.php000064400000001047151502156020021702 0ustar00', $this->name); } public function parse(Twig_Token $token) { return $this->parser->getExpressionParser()->parseArrayExpression(); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Number.php000064400000001173151502156020022054 0ustar00', $this->name); } public function parse(Twig_Token $token) { $this->parser->getStream()->expect(Twig_Token::NUMBER_TYPE); return new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php000064400000004006151502156020022407 0ustar00grammar = array(); foreach (func_get_args() as $grammar) { $this->addGrammar($grammar); } } public function __toString() { $repr = array(); foreach ($this->grammar as $grammar) { $repr[] = (string) $grammar; } return sprintf('[%s]', implode(' ', $repr)); } public function addGrammar(Twig_Extensions_GrammarInterface $grammar) { $this->grammar[] = $grammar; } public function parse(Twig_Token $token) { // test if we have the optional element before consuming it if ($this->grammar[0] instanceof Twig_Extensions_Grammar_Constant) { if (!$this->parser->getStream()->test($this->grammar[0]->getType(), $this->grammar[0]->getName())) { return array(); } } elseif ($this->grammar[0] instanceof Twig_Extensions_Grammar_Name) { if (!$this->parser->getStream()->test(Twig_Token::NAME_TYPE)) { return array(); } } elseif ($this->parser->getStream()->test(Twig_Token::BLOCK_END_TYPE)) { // if this is not a Constant or a Name, it must be the last element of the tag return array(); } $elements = array(); foreach ($this->grammar as $grammar) { $grammar->setParser($this->parser); $element = $grammar->parse($token); if (is_array($element)) { $elements = array_merge($elements, $element); } else { $elements[$grammar->getName()] = $element; } } return $elements; } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Body.php000064400000001652151502156020021523 0ustar00end = null === $end ? 'end'.$name : $end; } public function __toString() { return sprintf('<%s:body>', $this->name); } public function parse(Twig_Token $token) { $stream = $this->parser->getStream(); $stream->expect(Twig_Token::BLOCK_END_TYPE); return $this->parser->subparse(array($this, 'decideBlockEnd'), true); } public function decideBlockEnd(Twig_Token $token) { return $token->test($this->end); } } db/login/vendor/twig/extensions/lib/Twig/Extensions/Grammar.php000064400000001367151502156020020631 0ustar00name = $name; } /** * @param Twig_Parser $parser */ public function setParser(Twig_Parser $parser) { $this->parser = $parser; } /** * @return string */ public function getName() { return $this->name; } } db/login/vendor/twig/extensions/composer.json000064400000001466151502156020015435 0ustar00{ "name": "twig/extensions", "description": "Common additional features for Twig that do not directly belong in core", "keywords": ["i18n","text"], "type": "library", "license": "MIT", "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" } ], "require": { "twig/twig": "^1.27|^2.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.4", "symfony/translation": "^2.7|^3.4" }, "suggest": { "symfony/translation": "Allow the time_diff output to be translated" }, "autoload": { "psr-0": { "Twig_Extensions_": "lib/" }, "psr-4": { "Twig\\Extensions\\": "src/" } }, "extra": { "branch-alias": { "dev-master": "1.5-dev" } } } db/login/vendor/twig/extensions/src/Node/TransNode.php000064400000000251151502156020016764 0ustar00 ./test/Twig/ ./lib/Twig/ db/login/vendor/twig/extensions/.travis.yml000064400000001140151502156020015011 0ustar00language: php sudo: false cache: directories: - vendor - $HOME/.composer/cache/files env: - DEPS=no before_install: - phpenv config-rm xdebug.ini before_script: - if [ "$DEPS" == "low" ]; then composer --prefer-lowest --prefer-stable update; fi; - if [ "$DEPS" == "no" ]; then composer install; fi; script: | ./vendor/bin/simple-phpunit matrix: include: - php: 5.3 dist: precise - php: 5.4 - php: 5.5 - php: 5.6 env: DEPS=low - php: 7.0 - php: 7.1 - php: 7.2 fast_finish: true db/login/vendor/composer/ClassLoader.php000064400000032223151502156020014271 0ustar00 * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Autoload; /** * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. * * $loader = new \Composer\Autoload\ClassLoader(); * * // register classes with namespaces * $loader->add('Symfony\Component', __DIR__.'/component'); * $loader->add('Symfony', __DIR__.'/framework'); * * // activate the autoloader * $loader->register(); * * // to enable searching the include path (eg. for PEAR packages) * $loader->setUseIncludePath(true); * * In this example, if you try to use a class in the Symfony\Component * namespace or one of its children (Symfony\Component\Console for instance), * the autoloader will first look for the class under the component/ * directory, and it will then fallback to the framework/ directory if not * found before giving up. * * This class is loosely based on the Symfony UniversalClassLoader. * * @author Fabien Potencier * @author Jordi Boggiano * @see http://www.php-fig.org/psr/psr-0/ * @see http://www.php-fig.org/psr/psr-4/ */ class ClassLoader { // PSR-4 private $prefixLengthsPsr4 = array(); private $prefixDirsPsr4 = array(); private $fallbackDirsPsr4 = array(); // PSR-0 private $prefixesPsr0 = array(); private $fallbackDirsPsr0 = array(); private $useIncludePath = false; private $classMap = array(); private $classMapAuthoritative = false; private $missingClasses = array(); private $apcuPrefix; public function getPrefixes() { if (!empty($this->prefixesPsr0)) { return call_user_func_array('array_merge', $this->prefixesPsr0); } return array(); } public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } public function getFallbackDirs() { return $this->fallbackDirsPsr0; } public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } public function getClassMap() { return $this->classMap; } /** * @param array $classMap Class to filename map */ public function addClassMap(array $classMap) { if ($this->classMap) { $this->classMap = array_merge($this->classMap, $classMap); } else { $this->classMap = $classMap; } } /** * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 root directories * @param bool $prepend Whether to prepend the directories */ public function add($prefix, $paths, $prepend = false) { if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( (array) $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, (array) $paths ); } return; } $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { $this->prefixesPsr0[$first][$prefix] = (array) $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( (array) $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], (array) $paths ); } } /** * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException */ public function addPsr4($prefix, $paths, $prepend = false) { if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( (array) $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, (array) $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { // Register directories for a new namespace. $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( (array) $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], (array) $paths ); } } /** * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 base directories */ public function set($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr0 = (array) $paths; } else { $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; } } /** * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException */ public function setPsr4($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr4 = (array) $paths; } else { $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } } /** * Turns on searching the include path for class files. * * @param bool $useIncludePath */ public function setUseIncludePath($useIncludePath) { $this->useIncludePath = $useIncludePath; } /** * Can be used to check if the autoloader uses the include path to check * for classes. * * @return bool */ public function getUseIncludePath() { return $this->useIncludePath; } /** * Turns off searching the prefix and fallback directories for classes * that have not been registered with the class map. * * @param bool $classMapAuthoritative */ public function setClassMapAuthoritative($classMapAuthoritative) { $this->classMapAuthoritative = $classMapAuthoritative; } /** * Should class lookup fail if not found in the current class map? * * @return bool */ public function isClassMapAuthoritative() { return $this->classMapAuthoritative; } /** * APCu prefix to use to cache found/not-found classes, if the extension is enabled. * * @param string|null $apcuPrefix */ public function setApcuPrefix($apcuPrefix) { $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; } /** * The APCu prefix in use, or null if APCu caching is not enabled. * * @return string|null */ public function getApcuPrefix() { return $this->apcuPrefix; } /** * Registers this instance as an autoloader. * * @param bool $prepend Whether to prepend the autoloader or not */ public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); } /** * Unregisters this instance as an autoloader. */ public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); } /** * Loads the given class or interface. * * @param string $class The name of the class * @return bool|null True if loaded, null otherwise */ public function loadClass($class) { if ($file = $this->findFile($class)) { includeFile($file); return true; } } /** * Finds the path to the file where the class is defined. * * @param string $class The name of the class * * @return string|false The path if found, false otherwise */ public function findFile($class) { // class map lookup if (isset($this->classMap[$class])) { return $this->classMap[$class]; } if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { return false; } if (null !== $this->apcuPrefix) { $file = apcu_fetch($this->apcuPrefix.$class, $hit); if ($hit) { return $file; } } $file = $this->findFileWithExtension($class, '.php'); // Search for Hack files if we are running on HHVM if (false === $file && defined('HHVM_VERSION')) { $file = $this->findFileWithExtension($class, '.hh'); } if (null !== $this->apcuPrefix) { apcu_add($this->apcuPrefix.$class, $file); } if (false === $file) { // Remember that this class does not exist. $this->missingClasses[$class] = true; } return $file; } private function findFileWithExtension($class, $ext) { // PSR-4 lookup $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { if (file_exists($file = $dir . $pathEnd)) { return $file; } } } } } // PSR-4 fallback dirs foreach ($this->fallbackDirsPsr4 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { return $file; } } // PSR-0 lookup if (false !== $pos = strrpos($class, '\\')) { // namespaced class name $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); } else { // PEAR-like class name $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; } if (isset($this->prefixesPsr0[$first])) { foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { if (0 === strpos($class, $prefix)) { foreach ($dirs as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } } } } // PSR-0 fallback dirs foreach ($this->fallbackDirsPsr0 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } // PSR-0 include paths. if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { return $file; } return false; } } /** * Scope isolated include. * * Prevents access to $this/self from included files. */ function includeFile($file) { include $file; } db/login/vendor/composer/autoload_classmap.php000064400000332711151502156020015575 0ustar00 $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/AbstractEnum.php', 'BaconQrCode\\Common\\BitArray' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/BitArray.php', 'BaconQrCode\\Common\\BitMatrix' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/BitMatrix.php', 'BaconQrCode\\Common\\BitUtils' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/BitUtils.php', 'BaconQrCode\\Common\\CharacterSetEci' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/CharacterSetEci.php', 'BaconQrCode\\Common\\EcBlock' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/EcBlock.php', 'BaconQrCode\\Common\\EcBlocks' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/EcBlocks.php', 'BaconQrCode\\Common\\ErrorCorrectionLevel' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/ErrorCorrectionLevel.php', 'BaconQrCode\\Common\\FormatInformation' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/FormatInformation.php', 'BaconQrCode\\Common\\Mode' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/Mode.php', 'BaconQrCode\\Common\\ReedSolomonCodec' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/ReedSolomonCodec.php', 'BaconQrCode\\Common\\Version' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Common/Version.php', 'BaconQrCode\\Encoder\\BlockPair' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/BlockPair.php', 'BaconQrCode\\Encoder\\ByteMatrix' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/ByteMatrix.php', 'BaconQrCode\\Encoder\\Encoder' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/Encoder.php', 'BaconQrCode\\Encoder\\MaskUtil' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/MaskUtil.php', 'BaconQrCode\\Encoder\\MatrixUtil' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/MatrixUtil.php', 'BaconQrCode\\Encoder\\QrCode' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/QrCode.php', 'BaconQrCode\\Exception\\ExceptionInterface' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/ExceptionInterface.php', 'BaconQrCode\\Exception\\InvalidArgumentException' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/InvalidArgumentException.php', 'BaconQrCode\\Exception\\OutOfBoundsException' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/OutOfBoundsException.php', 'BaconQrCode\\Exception\\RuntimeException' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/RuntimeException.php', 'BaconQrCode\\Exception\\UnexpectedValueException' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/UnexpectedValueException.php', 'BaconQrCode\\Exception\\WriterException' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/WriterException.php', 'BaconQrCode\\Renderer\\Color\\Cmyk' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/Cmyk.php', 'BaconQrCode\\Renderer\\Color\\ColorInterface' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/ColorInterface.php', 'BaconQrCode\\Renderer\\Color\\Gray' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/Gray.php', 'BaconQrCode\\Renderer\\Color\\Rgb' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/Rgb.php', 'BaconQrCode\\Renderer\\Image\\AbstractRenderer' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/AbstractRenderer.php', 'BaconQrCode\\Renderer\\Image\\Decorator\\DecoratorInterface' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Decorator/DecoratorInterface.php', 'BaconQrCode\\Renderer\\Image\\Decorator\\FinderPattern' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Decorator/FinderPattern.php', 'BaconQrCode\\Renderer\\Image\\Eps' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Eps.php', 'BaconQrCode\\Renderer\\Image\\Png' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Png.php', 'BaconQrCode\\Renderer\\Image\\RendererInterface' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/RendererInterface.php', 'BaconQrCode\\Renderer\\Image\\Svg' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Svg.php', 'BaconQrCode\\Renderer\\RendererInterface' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/RendererInterface.php', 'BaconQrCode\\Renderer\\Text\\Html' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Text/Html.php', 'BaconQrCode\\Renderer\\Text\\Plain' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Text/Plain.php', 'BaconQrCode\\Writer' => $vendorDir . '/bacon/bacon-qr-code/src/BaconQrCode/Writer.php', 'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', 'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php', 'ParagonIE\\ConstantTime\\Base32' => $vendorDir . '/paragonie/constant_time_encoding/src/Base32.php', 'ParagonIE\\ConstantTime\\Base32Hex' => $vendorDir . '/paragonie/constant_time_encoding/src/Base32Hex.php', 'ParagonIE\\ConstantTime\\Base64' => $vendorDir . '/paragonie/constant_time_encoding/src/Base64.php', 'ParagonIE\\ConstantTime\\Base64DotSlash' => $vendorDir . '/paragonie/constant_time_encoding/src/Base64DotSlash.php', 'ParagonIE\\ConstantTime\\Base64DotSlashOrdered' => $vendorDir . '/paragonie/constant_time_encoding/src/Base64DotSlashOrdered.php', 'ParagonIE\\ConstantTime\\Base64UrlSafe' => $vendorDir . '/paragonie/constant_time_encoding/src/Base64UrlSafe.php', 'ParagonIE\\ConstantTime\\Binary' => $vendorDir . '/paragonie/constant_time_encoding/src/Binary.php', 'ParagonIE\\ConstantTime\\EncoderInterface' => $vendorDir . '/paragonie/constant_time_encoding/src/EncoderInterface.php', 'ParagonIE\\ConstantTime\\Encoding' => $vendorDir . '/paragonie/constant_time_encoding/src/Encoding.php', 'ParagonIE\\ConstantTime\\Hex' => $vendorDir . '/paragonie/constant_time_encoding/src/Hex.php', 'ParagonIE\\ConstantTime\\RFC4648' => $vendorDir . '/paragonie/constant_time_encoding/src/RFC4648.php', 'PhpMyAdmin\\Advisor' => $baseDir . '/libraries/classes/Advisor.php', 'PhpMyAdmin\\Bookmark' => $baseDir . '/libraries/classes/Bookmark.php', 'PhpMyAdmin\\BrowseForeigners' => $baseDir . '/libraries/classes/BrowseForeigners.php', 'PhpMyAdmin\\CentralColumns' => $baseDir . '/libraries/classes/CentralColumns.php', 'PhpMyAdmin\\Charsets' => $baseDir . '/libraries/classes/Charsets.php', 'PhpMyAdmin\\CheckUserPrivileges' => $baseDir . '/libraries/classes/CheckUserPrivileges.php', 'PhpMyAdmin\\Config' => $baseDir . '/libraries/classes/Config.php', 'PhpMyAdmin\\Config\\ConfigFile' => $baseDir . '/libraries/classes/Config/ConfigFile.php', 'PhpMyAdmin\\Config\\Descriptions' => $baseDir . '/libraries/classes/Config/Descriptions.php', 'PhpMyAdmin\\Config\\Form' => $baseDir . '/libraries/classes/Config/Form.php', 'PhpMyAdmin\\Config\\FormDisplay' => $baseDir . '/libraries/classes/Config/FormDisplay.php', 'PhpMyAdmin\\Config\\FormDisplayTemplate' => $baseDir . '/libraries/classes/Config/FormDisplayTemplate.php', 'PhpMyAdmin\\Config\\Forms\\BaseForm' => $baseDir . '/libraries/classes/Config/Forms/BaseForm.php', 'PhpMyAdmin\\Config\\Forms\\BaseFormList' => $baseDir . '/libraries/classes/Config/Forms/BaseFormList.php', 'PhpMyAdmin\\Config\\Forms\\Page\\BrowseForm' => $baseDir . '/libraries/classes/Config/Forms/Page/BrowseForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\DbStructureForm' => $baseDir . '/libraries/classes/Config/Forms/Page/DbStructureForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\EditForm' => $baseDir . '/libraries/classes/Config/Forms/Page/EditForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\ExportForm' => $baseDir . '/libraries/classes/Config/Forms/Page/ExportForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\ImportForm' => $baseDir . '/libraries/classes/Config/Forms/Page/ImportForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\NaviForm' => $baseDir . '/libraries/classes/Config/Forms/Page/NaviForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\PageFormList' => $baseDir . '/libraries/classes/Config/Forms/Page/PageFormList.php', 'PhpMyAdmin\\Config\\Forms\\Page\\SqlForm' => $baseDir . '/libraries/classes/Config/Forms/Page/SqlForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\TableStructureForm' => $baseDir . '/libraries/classes/Config/Forms/Page/TableStructureForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ConfigForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/ConfigForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ExportForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/ExportForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\FeaturesForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/FeaturesForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ImportForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/ImportForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\MainForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/MainForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\NaviForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/NaviForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ServersForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/ServersForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\SetupFormList' => $baseDir . '/libraries/classes/Config/Forms/Setup/SetupFormList.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\SqlForm' => $baseDir . '/libraries/classes/Config/Forms/Setup/SqlForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\ExportForm' => $baseDir . '/libraries/classes/Config/Forms/User/ExportForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\FeaturesForm' => $baseDir . '/libraries/classes/Config/Forms/User/FeaturesForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\ImportForm' => $baseDir . '/libraries/classes/Config/Forms/User/ImportForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\MainForm' => $baseDir . '/libraries/classes/Config/Forms/User/MainForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\NaviForm' => $baseDir . '/libraries/classes/Config/Forms/User/NaviForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\SqlForm' => $baseDir . '/libraries/classes/Config/Forms/User/SqlForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\UserFormList' => $baseDir . '/libraries/classes/Config/Forms/User/UserFormList.php', 'PhpMyAdmin\\Config\\PageSettings' => $baseDir . '/libraries/classes/Config/PageSettings.php', 'PhpMyAdmin\\Config\\ServerConfigChecks' => $baseDir . '/libraries/classes/Config/ServerConfigChecks.php', 'PhpMyAdmin\\Config\\Validator' => $baseDir . '/libraries/classes/Config/Validator.php', 'PhpMyAdmin\\Console' => $baseDir . '/libraries/classes/Console.php', 'PhpMyAdmin\\Controllers\\Controller' => $baseDir . '/libraries/classes/Controllers/Controller.php', 'PhpMyAdmin\\Controllers\\DatabaseController' => $baseDir . '/libraries/classes/Controllers/DatabaseController.php', 'PhpMyAdmin\\Controllers\\Database\\DatabaseStructureController' => $baseDir . '/libraries/classes/Controllers/Database/DatabaseStructureController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerBinlogController' => $baseDir . '/libraries/classes/Controllers/Server/ServerBinlogController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerCollationsController' => $baseDir . '/libraries/classes/Controllers/Server/ServerCollationsController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerDatabasesController' => $baseDir . '/libraries/classes/Controllers/Server/ServerDatabasesController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerEnginesController' => $baseDir . '/libraries/classes/Controllers/Server/ServerEnginesController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerPluginsController' => $baseDir . '/libraries/classes/Controllers/Server/ServerPluginsController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerVariablesController' => $baseDir . '/libraries/classes/Controllers/Server/ServerVariablesController.php', 'PhpMyAdmin\\Controllers\\TableController' => $baseDir . '/libraries/classes/Controllers/TableController.php', 'PhpMyAdmin\\Controllers\\Table\\TableChartController' => $baseDir . '/libraries/classes/Controllers/Table/TableChartController.php', 'PhpMyAdmin\\Controllers\\Table\\TableGisVisualizationController' => $baseDir . '/libraries/classes/Controllers/Table/TableGisVisualizationController.php', 'PhpMyAdmin\\Controllers\\Table\\TableIndexesController' => $baseDir . '/libraries/classes/Controllers/Table/TableIndexesController.php', 'PhpMyAdmin\\Controllers\\Table\\TableRelationController' => $baseDir . '/libraries/classes/Controllers/Table/TableRelationController.php', 'PhpMyAdmin\\Controllers\\Table\\TableSearchController' => $baseDir . '/libraries/classes/Controllers/Table/TableSearchController.php', 'PhpMyAdmin\\Controllers\\Table\\TableStructureController' => $baseDir . '/libraries/classes/Controllers/Table/TableStructureController.php', 'PhpMyAdmin\\Core' => $baseDir . '/libraries/classes/Core.php', 'PhpMyAdmin\\CreateAddField' => $baseDir . '/libraries/classes/CreateAddField.php', 'PhpMyAdmin\\DatabaseInterface' => $baseDir . '/libraries/classes/DatabaseInterface.php', 'PhpMyAdmin\\Database\\DatabaseList' => $baseDir . '/libraries/classes/Database/DatabaseList.php', 'PhpMyAdmin\\Database\\Designer' => $baseDir . '/libraries/classes/Database/Designer.php', 'PhpMyAdmin\\Database\\Designer\\Common' => $baseDir . '/libraries/classes/Database/Designer/Common.php', 'PhpMyAdmin\\Database\\Designer\\DesignerTable' => $baseDir . '/libraries/classes/Database/Designer/DesignerTable.php', 'PhpMyAdmin\\Database\\MultiTableQuery' => $baseDir . '/libraries/classes/Database/MultiTableQuery.php', 'PhpMyAdmin\\Database\\Qbe' => $baseDir . '/libraries/classes/Database/Qbe.php', 'PhpMyAdmin\\Database\\Search' => $baseDir . '/libraries/classes/Database/Search.php', 'PhpMyAdmin\\Dbi\\DbiDummy' => $baseDir . '/libraries/classes/Dbi/DbiDummy.php', 'PhpMyAdmin\\Dbi\\DbiExtension' => $baseDir . '/libraries/classes/Dbi/DbiExtension.php', 'PhpMyAdmin\\Dbi\\DbiMysql' => $baseDir . '/libraries/classes/Dbi/DbiMysql.php', 'PhpMyAdmin\\Dbi\\DbiMysqli' => $baseDir . '/libraries/classes/Dbi/DbiMysqli.php', 'PhpMyAdmin\\Di\\AliasItem' => $baseDir . '/libraries/classes/Di/AliasItem.php', 'PhpMyAdmin\\Di\\Container' => $baseDir . '/libraries/classes/Di/Container.php', 'PhpMyAdmin\\Di\\ContainerException' => $baseDir . '/libraries/classes/Di/ContainerException.php', 'PhpMyAdmin\\Di\\FactoryItem' => $baseDir . '/libraries/classes/Di/FactoryItem.php', 'PhpMyAdmin\\Di\\Item' => $baseDir . '/libraries/classes/Di/Item.php', 'PhpMyAdmin\\Di\\NotFoundException' => $baseDir . '/libraries/classes/Di/NotFoundException.php', 'PhpMyAdmin\\Di\\ReflectorItem' => $baseDir . '/libraries/classes/Di/ReflectorItem.php', 'PhpMyAdmin\\Di\\ServiceItem' => $baseDir . '/libraries/classes/Di/ServiceItem.php', 'PhpMyAdmin\\Di\\ValueItem' => $baseDir . '/libraries/classes/Di/ValueItem.php', 'PhpMyAdmin\\Display\\ChangePassword' => $baseDir . '/libraries/classes/Display/ChangePassword.php', 'PhpMyAdmin\\Display\\CreateTable' => $baseDir . '/libraries/classes/Display/CreateTable.php', 'PhpMyAdmin\\Display\\Export' => $baseDir . '/libraries/classes/Display/Export.php', 'PhpMyAdmin\\Display\\GitRevision' => $baseDir . '/libraries/classes/Display/GitRevision.php', 'PhpMyAdmin\\Display\\Import' => $baseDir . '/libraries/classes/Display/Import.php', 'PhpMyAdmin\\Display\\ImportAjax' => $baseDir . '/libraries/classes/Display/ImportAjax.php', 'PhpMyAdmin\\Display\\Results' => $baseDir . '/libraries/classes/Display/Results.php', 'PhpMyAdmin\\Encoding' => $baseDir . '/libraries/classes/Encoding.php', 'PhpMyAdmin\\Engines\\Bdb' => $baseDir . '/libraries/classes/Engines/Bdb.php', 'PhpMyAdmin\\Engines\\Berkeleydb' => $baseDir . '/libraries/classes/Engines/Berkeleydb.php', 'PhpMyAdmin\\Engines\\Binlog' => $baseDir . '/libraries/classes/Engines/Binlog.php', 'PhpMyAdmin\\Engines\\Innobase' => $baseDir . '/libraries/classes/Engines/Innobase.php', 'PhpMyAdmin\\Engines\\Innodb' => $baseDir . '/libraries/classes/Engines/Innodb.php', 'PhpMyAdmin\\Engines\\Memory' => $baseDir . '/libraries/classes/Engines/Memory.php', 'PhpMyAdmin\\Engines\\Merge' => $baseDir . '/libraries/classes/Engines/Merge.php', 'PhpMyAdmin\\Engines\\MrgMyisam' => $baseDir . '/libraries/classes/Engines/MrgMyisam.php', 'PhpMyAdmin\\Engines\\Myisam' => $baseDir . '/libraries/classes/Engines/Myisam.php', 'PhpMyAdmin\\Engines\\Ndbcluster' => $baseDir . '/libraries/classes/Engines/Ndbcluster.php', 'PhpMyAdmin\\Engines\\Pbxt' => $baseDir . '/libraries/classes/Engines/Pbxt.php', 'PhpMyAdmin\\Engines\\PerformanceSchema' => $baseDir . '/libraries/classes/Engines/PerformanceSchema.php', 'PhpMyAdmin\\Error' => $baseDir . '/libraries/classes/Error.php', 'PhpMyAdmin\\ErrorHandler' => $baseDir . '/libraries/classes/ErrorHandler.php', 'PhpMyAdmin\\ErrorReport' => $baseDir . '/libraries/classes/ErrorReport.php', 'PhpMyAdmin\\Export' => $baseDir . '/libraries/classes/Export.php', 'PhpMyAdmin\\File' => $baseDir . '/libraries/classes/File.php', 'PhpMyAdmin\\FileListing' => $baseDir . '/libraries/classes/FileListing.php', 'PhpMyAdmin\\Font' => $baseDir . '/libraries/classes/Font.php', 'PhpMyAdmin\\Footer' => $baseDir . '/libraries/classes/Footer.php', 'PhpMyAdmin\\Gis\\GisFactory' => $baseDir . '/libraries/classes/Gis/GisFactory.php', 'PhpMyAdmin\\Gis\\GisGeometry' => $baseDir . '/libraries/classes/Gis/GisGeometry.php', 'PhpMyAdmin\\Gis\\GisGeometryCollection' => $baseDir . '/libraries/classes/Gis/GisGeometryCollection.php', 'PhpMyAdmin\\Gis\\GisLineString' => $baseDir . '/libraries/classes/Gis/GisLineString.php', 'PhpMyAdmin\\Gis\\GisMultiLineString' => $baseDir . '/libraries/classes/Gis/GisMultiLineString.php', 'PhpMyAdmin\\Gis\\GisMultiPoint' => $baseDir . '/libraries/classes/Gis/GisMultiPoint.php', 'PhpMyAdmin\\Gis\\GisMultiPolygon' => $baseDir . '/libraries/classes/Gis/GisMultiPolygon.php', 'PhpMyAdmin\\Gis\\GisPoint' => $baseDir . '/libraries/classes/Gis/GisPoint.php', 'PhpMyAdmin\\Gis\\GisPolygon' => $baseDir . '/libraries/classes/Gis/GisPolygon.php', 'PhpMyAdmin\\Gis\\GisVisualization' => $baseDir . '/libraries/classes/Gis/GisVisualization.php', 'PhpMyAdmin\\Header' => $baseDir . '/libraries/classes/Header.php', 'PhpMyAdmin\\Import' => $baseDir . '/libraries/classes/Import.php', 'PhpMyAdmin\\Index' => $baseDir . '/libraries/classes/Index.php', 'PhpMyAdmin\\IndexColumn' => $baseDir . '/libraries/classes/IndexColumn.php', 'PhpMyAdmin\\InsertEdit' => $baseDir . '/libraries/classes/InsertEdit.php', 'PhpMyAdmin\\IpAllowDeny' => $baseDir . '/libraries/classes/IpAllowDeny.php', 'PhpMyAdmin\\Language' => $baseDir . '/libraries/classes/Language.php', 'PhpMyAdmin\\LanguageManager' => $baseDir . '/libraries/classes/LanguageManager.php', 'PhpMyAdmin\\Linter' => $baseDir . '/libraries/classes/Linter.php', 'PhpMyAdmin\\ListAbstract' => $baseDir . '/libraries/classes/ListAbstract.php', 'PhpMyAdmin\\ListDatabase' => $baseDir . '/libraries/classes/ListDatabase.php', 'PhpMyAdmin\\Logging' => $baseDir . '/libraries/classes/Logging.php', 'PhpMyAdmin\\Menu' => $baseDir . '/libraries/classes/Menu.php', 'PhpMyAdmin\\Message' => $baseDir . '/libraries/classes/Message.php', 'PhpMyAdmin\\Mime' => $baseDir . '/libraries/classes/Mime.php', 'PhpMyAdmin\\MoTranslator\\Loader' => $vendorDir . '/phpmyadmin/motranslator/src/Loader.php', 'PhpMyAdmin\\MoTranslator\\ReaderException' => $vendorDir . '/phpmyadmin/motranslator/src/ReaderException.php', 'PhpMyAdmin\\MoTranslator\\StringReader' => $vendorDir . '/phpmyadmin/motranslator/src/StringReader.php', 'PhpMyAdmin\\MoTranslator\\Translator' => $vendorDir . '/phpmyadmin/motranslator/src/Translator.php', 'PhpMyAdmin\\MultSubmits' => $baseDir . '/libraries/classes/MultSubmits.php', 'PhpMyAdmin\\Navigation\\Navigation' => $baseDir . '/libraries/classes/Navigation/Navigation.php', 'PhpMyAdmin\\Navigation\\NavigationHeader' => $baseDir . '/libraries/classes/Navigation/NavigationHeader.php', 'PhpMyAdmin\\Navigation\\NavigationTree' => $baseDir . '/libraries/classes/Navigation/NavigationTree.php', 'PhpMyAdmin\\Navigation\\NodeFactory' => $baseDir . '/libraries/classes/Navigation/NodeFactory.php', 'PhpMyAdmin\\Navigation\\Nodes\\Node' => $baseDir . '/libraries/classes/Navigation/Nodes/Node.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeColumn' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeColumn.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeColumnContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeColumnContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabase' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeDatabase.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabaseChild' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeDatabaseChild.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabaseChildContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeDatabaseChildContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabaseContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeDatabaseContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeEvent' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeEvent.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeEventContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeEventContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeFunction' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeFunction.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeFunctionContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeFunctionContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeIndex' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeIndex.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeIndexContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeIndexContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeProcedure' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeProcedure.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeProcedureContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeProcedureContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTable' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeTable.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTableContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeTableContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTrigger' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeTrigger.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTriggerContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeTriggerContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeView' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeView.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeViewContainer' => $baseDir . '/libraries/classes/Navigation/Nodes/NodeViewContainer.php', 'PhpMyAdmin\\Normalization' => $baseDir . '/libraries/classes/Normalization.php', 'PhpMyAdmin\\OpenDocument' => $baseDir . '/libraries/classes/OpenDocument.php', 'PhpMyAdmin\\Operations' => $baseDir . '/libraries/classes/Operations.php', 'PhpMyAdmin\\OutputBuffering' => $baseDir . '/libraries/classes/OutputBuffering.php', 'PhpMyAdmin\\ParseAnalyze' => $baseDir . '/libraries/classes/ParseAnalyze.php', 'PhpMyAdmin\\Partition' => $baseDir . '/libraries/classes/Partition.php', 'PhpMyAdmin\\Pdf' => $baseDir . '/libraries/classes/Pdf.php', 'PhpMyAdmin\\Plugins' => $baseDir . '/libraries/classes/Plugins.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationConfig' => $baseDir . '/libraries/classes/Plugins/Auth/AuthenticationConfig.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationCookie' => $baseDir . '/libraries/classes/Plugins/Auth/AuthenticationCookie.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationHttp' => $baseDir . '/libraries/classes/Plugins/Auth/AuthenticationHttp.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationSignon' => $baseDir . '/libraries/classes/Plugins/Auth/AuthenticationSignon.php', 'PhpMyAdmin\\Plugins\\AuthenticationPlugin' => $baseDir . '/libraries/classes/Plugins/AuthenticationPlugin.php', 'PhpMyAdmin\\Plugins\\ExportPlugin' => $baseDir . '/libraries/classes/Plugins/ExportPlugin.php', 'PhpMyAdmin\\Plugins\\Export\\ExportCodegen' => $baseDir . '/libraries/classes/Plugins/Export/ExportCodegen.php', 'PhpMyAdmin\\Plugins\\Export\\ExportCsv' => $baseDir . '/libraries/classes/Plugins/Export/ExportCsv.php', 'PhpMyAdmin\\Plugins\\Export\\ExportExcel' => $baseDir . '/libraries/classes/Plugins/Export/ExportExcel.php', 'PhpMyAdmin\\Plugins\\Export\\ExportHtmlword' => $baseDir . '/libraries/classes/Plugins/Export/ExportHtmlword.php', 'PhpMyAdmin\\Plugins\\Export\\ExportJson' => $baseDir . '/libraries/classes/Plugins/Export/ExportJson.php', 'PhpMyAdmin\\Plugins\\Export\\ExportLatex' => $baseDir . '/libraries/classes/Plugins/Export/ExportLatex.php', 'PhpMyAdmin\\Plugins\\Export\\ExportMediawiki' => $baseDir . '/libraries/classes/Plugins/Export/ExportMediawiki.php', 'PhpMyAdmin\\Plugins\\Export\\ExportOds' => $baseDir . '/libraries/classes/Plugins/Export/ExportOds.php', 'PhpMyAdmin\\Plugins\\Export\\ExportOdt' => $baseDir . '/libraries/classes/Plugins/Export/ExportOdt.php', 'PhpMyAdmin\\Plugins\\Export\\ExportPdf' => $baseDir . '/libraries/classes/Plugins/Export/ExportPdf.php', 'PhpMyAdmin\\Plugins\\Export\\ExportPhparray' => $baseDir . '/libraries/classes/Plugins/Export/ExportPhparray.php', 'PhpMyAdmin\\Plugins\\Export\\ExportSql' => $baseDir . '/libraries/classes/Plugins/Export/ExportSql.php', 'PhpMyAdmin\\Plugins\\Export\\ExportTexytext' => $baseDir . '/libraries/classes/Plugins/Export/ExportTexytext.php', 'PhpMyAdmin\\Plugins\\Export\\ExportXml' => $baseDir . '/libraries/classes/Plugins/Export/ExportXml.php', 'PhpMyAdmin\\Plugins\\Export\\ExportYaml' => $baseDir . '/libraries/classes/Plugins/Export/ExportYaml.php', 'PhpMyAdmin\\Plugins\\Export\\Helpers\\Pdf' => $baseDir . '/libraries/classes/Plugins/Export/Helpers/Pdf.php', 'PhpMyAdmin\\Plugins\\Export\\Helpers\\TableProperty' => $baseDir . '/libraries/classes/Plugins/Export/Helpers/TableProperty.php', 'PhpMyAdmin\\Plugins\\IOTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/IOTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\ImportPlugin' => $baseDir . '/libraries/classes/Plugins/ImportPlugin.php', 'PhpMyAdmin\\Plugins\\Import\\AbstractImportCsv' => $baseDir . '/libraries/classes/Plugins/Import/AbstractImportCsv.php', 'PhpMyAdmin\\Plugins\\Import\\ImportCsv' => $baseDir . '/libraries/classes/Plugins/Import/ImportCsv.php', 'PhpMyAdmin\\Plugins\\Import\\ImportLdi' => $baseDir . '/libraries/classes/Plugins/Import/ImportLdi.php', 'PhpMyAdmin\\Plugins\\Import\\ImportMediawiki' => $baseDir . '/libraries/classes/Plugins/Import/ImportMediawiki.php', 'PhpMyAdmin\\Plugins\\Import\\ImportOds' => $baseDir . '/libraries/classes/Plugins/Import/ImportOds.php', 'PhpMyAdmin\\Plugins\\Import\\ImportShp' => $baseDir . '/libraries/classes/Plugins/Import/ImportShp.php', 'PhpMyAdmin\\Plugins\\Import\\ImportSql' => $baseDir . '/libraries/classes/Plugins/Import/ImportSql.php', 'PhpMyAdmin\\Plugins\\Import\\ImportXml' => $baseDir . '/libraries/classes/Plugins/Import/ImportXml.php', 'PhpMyAdmin\\Plugins\\Import\\ShapeFileImport' => $baseDir . '/libraries/classes/Plugins/Import/ShapeFileImport.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadApc' => $baseDir . '/libraries/classes/Plugins/Import/Upload/UploadApc.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin' => $baseDir . '/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadProgress' => $baseDir . '/libraries/classes/Plugins/Import/Upload/UploadProgress.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadSession' => $baseDir . '/libraries/classes/Plugins/Import/Upload/UploadSession.php', 'PhpMyAdmin\\Plugins\\SchemaPlugin' => $baseDir . '/libraries/classes/Plugins/SchemaPlugin.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\Dia' => $baseDir . '/libraries/classes/Plugins/Schema/Dia/Dia.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\DiaRelationSchema' => $baseDir . '/libraries/classes/Plugins/Schema/Dia/DiaRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\RelationStatsDia' => $baseDir . '/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\TableStatsDia' => $baseDir . '/libraries/classes/Plugins/Schema/Dia/TableStatsDia.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\Eps' => $baseDir . '/libraries/classes/Plugins/Schema/Eps/Eps.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\EpsRelationSchema' => $baseDir . '/libraries/classes/Plugins/Schema/Eps/EpsRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\RelationStatsEps' => $baseDir . '/libraries/classes/Plugins/Schema/Eps/RelationStatsEps.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\TableStatsEps' => $baseDir . '/libraries/classes/Plugins/Schema/Eps/TableStatsEps.php', 'PhpMyAdmin\\Plugins\\Schema\\ExportRelationSchema' => $baseDir . '/libraries/classes/Plugins/Schema/ExportRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\Pdf' => $baseDir . '/libraries/classes/Plugins/Schema/Pdf/Pdf.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\PdfRelationSchema' => $baseDir . '/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\RelationStatsPdf' => $baseDir . '/libraries/classes/Plugins/Schema/Pdf/RelationStatsPdf.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\TableStatsPdf' => $baseDir . '/libraries/classes/Plugins/Schema/Pdf/TableStatsPdf.php', 'PhpMyAdmin\\Plugins\\Schema\\RelationStats' => $baseDir . '/libraries/classes/Plugins/Schema/RelationStats.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaDia' => $baseDir . '/libraries/classes/Plugins/Schema/SchemaDia.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaEps' => $baseDir . '/libraries/classes/Plugins/Schema/SchemaEps.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaPdf' => $baseDir . '/libraries/classes/Plugins/Schema/SchemaPdf.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaSvg' => $baseDir . '/libraries/classes/Plugins/Schema/SchemaSvg.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\RelationStatsSvg' => $baseDir . '/libraries/classes/Plugins/Schema/Svg/RelationStatsSvg.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\Svg' => $baseDir . '/libraries/classes/Plugins/Schema/Svg/Svg.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\SvgRelationSchema' => $baseDir . '/libraries/classes/Plugins/Schema/Svg/SvgRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\TableStatsSvg' => $baseDir . '/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php', 'PhpMyAdmin\\Plugins\\Schema\\TableStats' => $baseDir . '/libraries/classes/Plugins/Schema/TableStats.php', 'PhpMyAdmin\\Plugins\\TransformationsInterface' => $baseDir . '/libraries/classes/Plugins/TransformationsInterface.php', 'PhpMyAdmin\\Plugins\\TransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/TransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\Bool2TextTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\CodeMirrorEditorTransformationPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/CodeMirrorEditorTransformationPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\DateFormatTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\DownloadTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/DownloadTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\ExternalTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\FormattedTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/FormattedTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\HexTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\ImageLinkTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/ImageLinkTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\ImageUploadTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/ImageUploadTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\InlineTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\LongToIPv4TransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/LongToIPv4TransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\PreApPendTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/PreApPendTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\RegexValidationTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/RegexValidationTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\SQLTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/SQLTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\SubstringTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/SubstringTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\TextFileUploadTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/TextFileUploadTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\TextImageLinkTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/TextImageLinkTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\TextLinkTransformationsPlugin' => $baseDir . '/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Image_JPEG_Upload' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Image_JPEG_Upload.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_FileUpload' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_FileUpload.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_Iptobinary' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_Iptobinary.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_JsonEditor' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_JsonEditor.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_RegexValidation' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_RegexValidation.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_SqlEditor' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_SqlEditor.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_XmlEditor' => $baseDir . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_XmlEditor.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Application_Octetstream_Download' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Application_Octetstream_Download.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Application_Octetstream_Hex' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Application_Octetstream_Hex.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Image_JPEG_Inline' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Image_JPEG_Inline.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Image_JPEG_Link' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Image_JPEG_Link.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Image_PNG_Inline' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Image_PNG_Inline.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Octetstream_Sql' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Octetstream_Sql.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Binarytoip' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Binarytoip.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Bool2Text' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Bool2Text.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Dateformat' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Dateformat.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_External' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_External.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Formatted' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Formatted.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Imagelink' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Imagelink.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Json' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Json.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Sql' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Sql.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Xml' => $baseDir . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Xml.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_Link' => $baseDir . '/libraries/classes/Plugins/Transformations/Text_Plain_Link.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_Longtoipv4' => $baseDir . '/libraries/classes/Plugins/Transformations/Text_Plain_Longtoipv4.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_PreApPend' => $baseDir . '/libraries/classes/Plugins/Transformations/Text_Plain_PreApPend.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_Substring' => $baseDir . '/libraries/classes/Plugins/Transformations/Text_Plain_Substring.php', 'PhpMyAdmin\\Plugins\\TwoFactorPlugin' => $baseDir . '/libraries/classes/Plugins/TwoFactorPlugin.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Application' => $baseDir . '/libraries/classes/Plugins/TwoFactor/Application.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Invalid' => $baseDir . '/libraries/classes/Plugins/TwoFactor/Invalid.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Key' => $baseDir . '/libraries/classes/Plugins/TwoFactor/Key.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Simple' => $baseDir . '/libraries/classes/Plugins/TwoFactor/Simple.php', 'PhpMyAdmin\\Plugins\\UploadInterface' => $baseDir . '/libraries/classes/Plugins/UploadInterface.php', 'PhpMyAdmin\\Properties\\Options\\Groups\\OptionsPropertyMainGroup' => $baseDir . '/libraries/classes/Properties/Options/Groups/OptionsPropertyMainGroup.php', 'PhpMyAdmin\\Properties\\Options\\Groups\\OptionsPropertyRootGroup' => $baseDir . '/libraries/classes/Properties/Options/Groups/OptionsPropertyRootGroup.php', 'PhpMyAdmin\\Properties\\Options\\Groups\\OptionsPropertySubgroup' => $baseDir . '/libraries/classes/Properties/Options/Groups/OptionsPropertySubgroup.php', 'PhpMyAdmin\\Properties\\Options\\Items\\BoolPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/BoolPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\DocPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/DocPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\HiddenPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/HiddenPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\MessageOnlyPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/MessageOnlyPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\NumberPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/NumberPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\RadioPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/RadioPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\SelectPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/SelectPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\TextPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/Items/TextPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\OptionsPropertyGroup' => $baseDir . '/libraries/classes/Properties/Options/OptionsPropertyGroup.php', 'PhpMyAdmin\\Properties\\Options\\OptionsPropertyItem' => $baseDir . '/libraries/classes/Properties/Options/OptionsPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\OptionsPropertyOneItem' => $baseDir . '/libraries/classes/Properties/Options/OptionsPropertyOneItem.php', 'PhpMyAdmin\\Properties\\Plugins\\ExportPluginProperties' => $baseDir . '/libraries/classes/Properties/Plugins/ExportPluginProperties.php', 'PhpMyAdmin\\Properties\\Plugins\\ImportPluginProperties' => $baseDir . '/libraries/classes/Properties/Plugins/ImportPluginProperties.php', 'PhpMyAdmin\\Properties\\Plugins\\PluginPropertyItem' => $baseDir . '/libraries/classes/Properties/Plugins/PluginPropertyItem.php', 'PhpMyAdmin\\Properties\\Plugins\\SchemaPluginProperties' => $baseDir . '/libraries/classes/Properties/Plugins/SchemaPluginProperties.php', 'PhpMyAdmin\\Properties\\PropertyItem' => $baseDir . '/libraries/classes/Properties/PropertyItem.php', 'PhpMyAdmin\\RecentFavoriteTable' => $baseDir . '/libraries/classes/RecentFavoriteTable.php', 'PhpMyAdmin\\Relation' => $baseDir . '/libraries/classes/Relation.php', 'PhpMyAdmin\\RelationCleanup' => $baseDir . '/libraries/classes/RelationCleanup.php', 'PhpMyAdmin\\Replication' => $baseDir . '/libraries/classes/Replication.php', 'PhpMyAdmin\\ReplicationGui' => $baseDir . '/libraries/classes/ReplicationGui.php', 'PhpMyAdmin\\Response' => $baseDir . '/libraries/classes/Response.php', 'PhpMyAdmin\\Rte\\Events' => $baseDir . '/libraries/classes/Rte/Events.php', 'PhpMyAdmin\\Rte\\Export' => $baseDir . '/libraries/classes/Rte/Export.php', 'PhpMyAdmin\\Rte\\Footer' => $baseDir . '/libraries/classes/Rte/Footer.php', 'PhpMyAdmin\\Rte\\General' => $baseDir . '/libraries/classes/Rte/General.php', 'PhpMyAdmin\\Rte\\Routines' => $baseDir . '/libraries/classes/Rte/Routines.php', 'PhpMyAdmin\\Rte\\RteList' => $baseDir . '/libraries/classes/Rte/RteList.php', 'PhpMyAdmin\\Rte\\Triggers' => $baseDir . '/libraries/classes/Rte/Triggers.php', 'PhpMyAdmin\\Rte\\Words' => $baseDir . '/libraries/classes/Rte/Words.php', 'PhpMyAdmin\\Sanitize' => $baseDir . '/libraries/classes/Sanitize.php', 'PhpMyAdmin\\SavedSearches' => $baseDir . '/libraries/classes/SavedSearches.php', 'PhpMyAdmin\\Scripts' => $baseDir . '/libraries/classes/Scripts.php', 'PhpMyAdmin\\Server\\Privileges' => $baseDir . '/libraries/classes/Server/Privileges.php', 'PhpMyAdmin\\Server\\Select' => $baseDir . '/libraries/classes/Server/Select.php', 'PhpMyAdmin\\Server\\Status' => $baseDir . '/libraries/classes/Server/Status.php', 'PhpMyAdmin\\Server\\Status\\Advisor' => $baseDir . '/libraries/classes/Server/Status/Advisor.php', 'PhpMyAdmin\\Server\\Status\\Data' => $baseDir . '/libraries/classes/Server/Status/Data.php', 'PhpMyAdmin\\Server\\Status\\Monitor' => $baseDir . '/libraries/classes/Server/Status/Monitor.php', 'PhpMyAdmin\\Server\\Status\\Processes' => $baseDir . '/libraries/classes/Server/Status/Processes.php', 'PhpMyAdmin\\Server\\Status\\Queries' => $baseDir . '/libraries/classes/Server/Status/Queries.php', 'PhpMyAdmin\\Server\\Status\\Variables' => $baseDir . '/libraries/classes/Server/Status/Variables.php', 'PhpMyAdmin\\Server\\UserGroups' => $baseDir . '/libraries/classes/Server/UserGroups.php', 'PhpMyAdmin\\Server\\Users' => $baseDir . '/libraries/classes/Server/Users.php', 'PhpMyAdmin\\Session' => $baseDir . '/libraries/classes/Session.php', 'PhpMyAdmin\\Setup\\ConfigGenerator' => $baseDir . '/setup/lib/ConfigGenerator.php', 'PhpMyAdmin\\Setup\\FormProcessing' => $baseDir . '/setup/lib/FormProcessing.php', 'PhpMyAdmin\\Setup\\Index' => $baseDir . '/setup/lib/Index.php', 'PhpMyAdmin\\ShapeFile\\ShapeFile' => $vendorDir . '/phpmyadmin/shapefile/src/ShapeFile.php', 'PhpMyAdmin\\ShapeFile\\ShapeRecord' => $vendorDir . '/phpmyadmin/shapefile/src/ShapeRecord.php', 'PhpMyAdmin\\ShapeFile\\Util' => $vendorDir . '/phpmyadmin/shapefile/src/Util.php', 'PhpMyAdmin\\Sql' => $baseDir . '/libraries/classes/Sql.php', 'PhpMyAdmin\\SqlParser\\Component' => $vendorDir . '/phpmyadmin/sql-parser/src/Component.php', 'PhpMyAdmin\\SqlParser\\Components\\AlterOperation' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/AlterOperation.php', 'PhpMyAdmin\\SqlParser\\Components\\Array2d' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Array2d.php', 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/ArrayObj.php', 'PhpMyAdmin\\SqlParser\\Components\\CaseExpression' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/CaseExpression.php', 'PhpMyAdmin\\SqlParser\\Components\\Condition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Condition.php', 'PhpMyAdmin\\SqlParser\\Components\\CreateDefinition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/CreateDefinition.php', 'PhpMyAdmin\\SqlParser\\Components\\DataType' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/DataType.php', 'PhpMyAdmin\\SqlParser\\Components\\Expression' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Expression.php', 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/ExpressionArray.php', 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/FunctionCall.php', 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/GroupKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\IndexHint' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/IndexHint.php', 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/IntoKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/JoinKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\Key' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Key.php', 'PhpMyAdmin\\SqlParser\\Components\\Limit' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Limit.php', 'PhpMyAdmin\\SqlParser\\Components\\LockExpression' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/LockExpression.php', 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/OptionsArray.php', 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/OrderKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php', 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php', 'PhpMyAdmin\\SqlParser\\Components\\Reference' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/Reference.php', 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/RenameOperation.php', 'PhpMyAdmin\\SqlParser\\Components\\SetOperation' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/SetOperation.php', 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword' => $vendorDir . '/phpmyadmin/sql-parser/src/Components/UnionKeyword.php', 'PhpMyAdmin\\SqlParser\\Context' => $vendorDir . '/phpmyadmin/sql-parser/src/Context.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100200' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100300' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50100' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50500' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50600' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80000' => $vendorDir . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php', 'PhpMyAdmin\\SqlParser\\Core' => $vendorDir . '/phpmyadmin/sql-parser/src/Core.php', 'PhpMyAdmin\\SqlParser\\Exceptions\\LexerException' => $vendorDir . '/phpmyadmin/sql-parser/src/Exceptions/LexerException.php', 'PhpMyAdmin\\SqlParser\\Exceptions\\LoaderException' => $vendorDir . '/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php', 'PhpMyAdmin\\SqlParser\\Exceptions\\ParserException' => $vendorDir . '/phpmyadmin/sql-parser/src/Exceptions/ParserException.php', 'PhpMyAdmin\\SqlParser\\Lexer' => $vendorDir . '/phpmyadmin/sql-parser/src/Lexer.php', 'PhpMyAdmin\\SqlParser\\Parser' => $vendorDir . '/phpmyadmin/sql-parser/src/Parser.php', 'PhpMyAdmin\\SqlParser\\Statement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statement.php', 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/AlterStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/BackupStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/CallStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/CheckStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/CreateStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/DropStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/InsertStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/LoadStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/LockStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\MaintenanceStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\NotImplementedStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/RenameStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/RepairStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/SelectStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/SetStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/ShowStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement' => $vendorDir . '/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php', 'PhpMyAdmin\\SqlParser\\Token' => $vendorDir . '/phpmyadmin/sql-parser/src/Token.php', 'PhpMyAdmin\\SqlParser\\TokensList' => $vendorDir . '/phpmyadmin/sql-parser/src/TokensList.php', 'PhpMyAdmin\\SqlParser\\Translator' => $vendorDir . '/phpmyadmin/sql-parser/src/Translator.php', 'PhpMyAdmin\\SqlParser\\UtfString' => $vendorDir . '/phpmyadmin/sql-parser/src/UtfString.php', 'PhpMyAdmin\\SqlParser\\Utils\\BufferedQuery' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php', 'PhpMyAdmin\\SqlParser\\Utils\\CLI' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/CLI.php', 'PhpMyAdmin\\SqlParser\\Utils\\Error' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Error.php', 'PhpMyAdmin\\SqlParser\\Utils\\Formatter' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Formatter.php', 'PhpMyAdmin\\SqlParser\\Utils\\Misc' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Misc.php', 'PhpMyAdmin\\SqlParser\\Utils\\Query' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Query.php', 'PhpMyAdmin\\SqlParser\\Utils\\Routine' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Routine.php', 'PhpMyAdmin\\SqlParser\\Utils\\Table' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Table.php', 'PhpMyAdmin\\SqlParser\\Utils\\Tokens' => $vendorDir . '/phpmyadmin/sql-parser/src/Utils/Tokens.php', 'PhpMyAdmin\\SqlQueryForm' => $baseDir . '/libraries/classes/SqlQueryForm.php', 'PhpMyAdmin\\StorageEngine' => $baseDir . '/libraries/classes/StorageEngine.php', 'PhpMyAdmin\\SubPartition' => $baseDir . '/libraries/classes/SubPartition.php', 'PhpMyAdmin\\SysInfo' => $baseDir . '/libraries/classes/SysInfo.php', 'PhpMyAdmin\\SysInfoBase' => $baseDir . '/libraries/classes/SysInfoBase.php', 'PhpMyAdmin\\SysInfoLinux' => $baseDir . '/libraries/classes/SysInfoLinux.php', 'PhpMyAdmin\\SysInfoSunOS' => $baseDir . '/libraries/classes/SysInfoSunOS.php', 'PhpMyAdmin\\SysInfoWINNT' => $baseDir . '/libraries/classes/SysInfoWINNT.php', 'PhpMyAdmin\\SystemDatabase' => $baseDir . '/libraries/classes/SystemDatabase.php', 'PhpMyAdmin\\Table' => $baseDir . '/libraries/classes/Table.php', 'PhpMyAdmin\\Template' => $baseDir . '/libraries/classes/Template.php', 'PhpMyAdmin\\Theme' => $baseDir . '/libraries/classes/Theme.php', 'PhpMyAdmin\\ThemeManager' => $baseDir . '/libraries/classes/ThemeManager.php', 'PhpMyAdmin\\Tracker' => $baseDir . '/libraries/classes/Tracker.php', 'PhpMyAdmin\\Tracking' => $baseDir . '/libraries/classes/Tracking.php', 'PhpMyAdmin\\Transformations' => $baseDir . '/libraries/classes/Transformations.php', 'PhpMyAdmin\\Twig\\CharsetsExtension' => $baseDir . '/libraries/classes/Twig/CharsetsExtension.php', 'PhpMyAdmin\\Twig\\CoreExtension' => $baseDir . '/libraries/classes/Twig/CoreExtension.php', 'PhpMyAdmin\\Twig\\I18nExtension' => $baseDir . '/libraries/classes/Twig/I18nExtension.php', 'PhpMyAdmin\\Twig\\I18n\\NodeTrans' => $baseDir . '/libraries/classes/Twig/I18n/NodeTrans.php', 'PhpMyAdmin\\Twig\\I18n\\TokenParserTrans' => $baseDir . '/libraries/classes/Twig/I18n/TokenParserTrans.php', 'PhpMyAdmin\\Twig\\IndexExtension' => $baseDir . '/libraries/classes/Twig/IndexExtension.php', 'PhpMyAdmin\\Twig\\MessageExtension' => $baseDir . '/libraries/classes/Twig/MessageExtension.php', 'PhpMyAdmin\\Twig\\PartitionExtension' => $baseDir . '/libraries/classes/Twig/PartitionExtension.php', 'PhpMyAdmin\\Twig\\PhpFunctionsExtension' => $baseDir . '/libraries/classes/Twig/PhpFunctionsExtension.php', 'PhpMyAdmin\\Twig\\PluginsExtension' => $baseDir . '/libraries/classes/Twig/PluginsExtension.php', 'PhpMyAdmin\\Twig\\RelationExtension' => $baseDir . '/libraries/classes/Twig/RelationExtension.php', 'PhpMyAdmin\\Twig\\SanitizeExtension' => $baseDir . '/libraries/classes/Twig/SanitizeExtension.php', 'PhpMyAdmin\\Twig\\ServerPrivilegesExtension' => $baseDir . '/libraries/classes/Twig/ServerPrivilegesExtension.php', 'PhpMyAdmin\\Twig\\StorageEngineExtension' => $baseDir . '/libraries/classes/Twig/StorageEngineExtension.php', 'PhpMyAdmin\\Twig\\TableExtension' => $baseDir . '/libraries/classes/Twig/TableExtension.php', 'PhpMyAdmin\\Twig\\TrackerExtension' => $baseDir . '/libraries/classes/Twig/TrackerExtension.php', 'PhpMyAdmin\\Twig\\TransformationsExtension' => $baseDir . '/libraries/classes/Twig/TransformationsExtension.php', 'PhpMyAdmin\\Twig\\UrlExtension' => $baseDir . '/libraries/classes/Twig/UrlExtension.php', 'PhpMyAdmin\\Twig\\UtilExtension' => $baseDir . '/libraries/classes/Twig/UtilExtension.php', 'PhpMyAdmin\\TwoFactor' => $baseDir . '/libraries/classes/TwoFactor.php', 'PhpMyAdmin\\Types' => $baseDir . '/libraries/classes/Types.php', 'PhpMyAdmin\\Url' => $baseDir . '/libraries/classes/Url.php', 'PhpMyAdmin\\UserPassword' => $baseDir . '/libraries/classes/UserPassword.php', 'PhpMyAdmin\\UserPreferences' => $baseDir . '/libraries/classes/UserPreferences.php', 'PhpMyAdmin\\Util' => $baseDir . '/libraries/classes/Util.php', 'PhpMyAdmin\\Utils\\HttpRequest' => $baseDir . '/libraries/classes/Utils/HttpRequest.php', 'PhpMyAdmin\\VersionInformation' => $baseDir . '/libraries/classes/VersionInformation.php', 'PhpMyAdmin\\ZipExtension' => $baseDir . '/libraries/classes/ZipExtension.php', 'PragmaRX\\Google2FA\\Exceptions\\IncompatibleWithGoogleAuthenticatorException' => $vendorDir . '/pragmarx/google2fa/src/Exceptions/IncompatibleWithGoogleAuthenticatorException.php', 'PragmaRX\\Google2FA\\Exceptions\\InsecureCallException' => $vendorDir . '/pragmarx/google2fa/src/Exceptions/InsecureCallException.php', 'PragmaRX\\Google2FA\\Exceptions\\InvalidCharactersException' => $vendorDir . '/pragmarx/google2fa/src/Exceptions/InvalidCharactersException.php', 'PragmaRX\\Google2FA\\Exceptions\\SecretKeyTooShortException' => $vendorDir . '/pragmarx/google2fa/src/Exceptions/SecretKeyTooShortException.php', 'PragmaRX\\Google2FA\\Google2FA' => $vendorDir . '/pragmarx/google2fa/src/Google2FA.php', 'PragmaRX\\Google2FA\\Support\\Base32' => $vendorDir . '/pragmarx/google2fa/src/Support/Base32.php', 'PragmaRX\\Google2FA\\Support\\Constants' => $vendorDir . '/pragmarx/google2fa/src/Support/Constants.php', 'PragmaRX\\Google2FA\\Support\\QRCode' => $vendorDir . '/pragmarx/google2fa/src/Support/QRCode.php', 'PragmaRX\\Google2FA\\Support\\Url' => $vendorDir . '/pragmarx/google2fa/src/Support/Url.php', 'PragmaRX\\Google2FA\\Tests\\Constants' => $vendorDir . '/pragmarx/google2fa/tests/Constants.php', 'PragmaRX\\Google2FA\\Tests\\Google2FATest' => $vendorDir . '/pragmarx/google2fa/tests/Google2FATest.php', 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', 'QRcode' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/qrcode.php', 'ReCaptcha\\ReCaptcha' => $vendorDir . '/google/recaptcha/src/ReCaptcha/ReCaptcha.php', 'ReCaptcha\\RequestMethod' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod.php', 'ReCaptcha\\RequestMethod\\Curl' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php', 'ReCaptcha\\RequestMethod\\CurlPost' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php', 'ReCaptcha\\RequestMethod\\Post' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php', 'ReCaptcha\\RequestMethod\\Socket' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php', 'ReCaptcha\\RequestMethod\\SocketPost' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php', 'ReCaptcha\\RequestParameters' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestParameters.php', 'ReCaptcha\\Response' => $vendorDir . '/google/recaptcha/src/ReCaptcha/Response.php', 'Samyoul\\U2F\\U2FServer\\Registration' => $vendorDir . '/samyoul/u2f-php-server/src/Registration.php', 'Samyoul\\U2F\\U2FServer\\RegistrationRequest' => $vendorDir . '/samyoul/u2f-php-server/src/RegistrationRequest.php', 'Samyoul\\U2F\\U2FServer\\SignRequest' => $vendorDir . '/samyoul/u2f-php-server/src/SignRequest.php', 'Samyoul\\U2F\\U2FServer\\U2FException' => $vendorDir . '/samyoul/u2f-php-server/src/U2FException.php', 'Samyoul\\U2F\\U2FServer\\U2FServer' => $vendorDir . '/samyoul/u2f-php-server/src/U2FServer.php', 'Symfony\\Component\\ExpressionLanguage\\Compiler' => $vendorDir . '/symfony/expression-language/Compiler.php', 'Symfony\\Component\\ExpressionLanguage\\Expression' => $vendorDir . '/symfony/expression-language/Expression.php', 'Symfony\\Component\\ExpressionLanguage\\ExpressionFunction' => $vendorDir . '/symfony/expression-language/ExpressionFunction.php', 'Symfony\\Component\\ExpressionLanguage\\ExpressionFunctionProviderInterface' => $vendorDir . '/symfony/expression-language/ExpressionFunctionProviderInterface.php', 'Symfony\\Component\\ExpressionLanguage\\ExpressionLanguage' => $vendorDir . '/symfony/expression-language/ExpressionLanguage.php', 'Symfony\\Component\\ExpressionLanguage\\Lexer' => $vendorDir . '/symfony/expression-language/Lexer.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ArgumentsNode' => $vendorDir . '/symfony/expression-language/Node/ArgumentsNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ArrayNode' => $vendorDir . '/symfony/expression-language/Node/ArrayNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\BinaryNode' => $vendorDir . '/symfony/expression-language/Node/BinaryNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ConditionalNode' => $vendorDir . '/symfony/expression-language/Node/ConditionalNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ConstantNode' => $vendorDir . '/symfony/expression-language/Node/ConstantNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\FunctionNode' => $vendorDir . '/symfony/expression-language/Node/FunctionNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\GetAttrNode' => $vendorDir . '/symfony/expression-language/Node/GetAttrNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\NameNode' => $vendorDir . '/symfony/expression-language/Node/NameNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\Node' => $vendorDir . '/symfony/expression-language/Node/Node.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\UnaryNode' => $vendorDir . '/symfony/expression-language/Node/UnaryNode.php', 'Symfony\\Component\\ExpressionLanguage\\ParsedExpression' => $vendorDir . '/symfony/expression-language/ParsedExpression.php', 'Symfony\\Component\\ExpressionLanguage\\Parser' => $vendorDir . '/symfony/expression-language/Parser.php', 'Symfony\\Component\\ExpressionLanguage\\ParserCache\\ArrayParserCache' => $vendorDir . '/symfony/expression-language/ParserCache/ArrayParserCache.php', 'Symfony\\Component\\ExpressionLanguage\\ParserCache\\ParserCacheInterface' => $vendorDir . '/symfony/expression-language/ParserCache/ParserCacheInterface.php', 'Symfony\\Component\\ExpressionLanguage\\SerializedParsedExpression' => $vendorDir . '/symfony/expression-language/SerializedParsedExpression.php', 'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => $vendorDir . '/symfony/expression-language/SyntaxError.php', 'Symfony\\Component\\ExpressionLanguage\\Token' => $vendorDir . '/symfony/expression-language/Token.php', 'Symfony\\Component\\ExpressionLanguage\\TokenStream' => $vendorDir . '/symfony/expression-language/TokenStream.php', 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', 'Symfony\\Polyfill\\Php56\\Php56' => $vendorDir . '/symfony/polyfill-php56/Php56.php', 'Symfony\\Polyfill\\Util\\Binary' => $vendorDir . '/symfony/polyfill-util/Binary.php', 'Symfony\\Polyfill\\Util\\BinaryNoFuncOverload' => $vendorDir . '/symfony/polyfill-util/BinaryNoFuncOverload.php', 'Symfony\\Polyfill\\Util\\BinaryOnFuncOverload' => $vendorDir . '/symfony/polyfill-util/BinaryOnFuncOverload.php', 'Symfony\\Polyfill\\Util\\TestListener' => $vendorDir . '/symfony/polyfill-util/TestListener.php', 'Symfony\\Polyfill\\Util\\TestListenerForV5' => $vendorDir . '/symfony/polyfill-util/TestListenerForV5.php', 'Symfony\\Polyfill\\Util\\TestListenerForV6' => $vendorDir . '/symfony/polyfill-util/TestListenerForV6.php', 'Symfony\\Polyfill\\Util\\TestListenerForV7' => $vendorDir . '/symfony/polyfill-util/TestListenerForV7.php', 'Symfony\\Polyfill\\Util\\TestListenerTrait' => $vendorDir . '/symfony/polyfill-util/TestListenerTrait.php', 'TCPDF' => $vendorDir . '/tecnickcom/tcpdf/tcpdf.php', 'TCPDF2DBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php', 'TCPDFBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_1d.php', 'TCPDF_COLORS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_colors.php', 'TCPDF_FILTERS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_filters.php', 'TCPDF_FONTS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_fonts.php', 'TCPDF_FONT_DATA' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_font_data.php', 'TCPDF_IMAGES' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_images.php', 'TCPDF_IMPORT' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_import.php', 'TCPDF_PARSER' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_parser.php', 'TCPDF_STATIC' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_static.php', 'Twig\\Cache\\CacheInterface' => $vendorDir . '/twig/twig/src/Cache/CacheInterface.php', 'Twig\\Cache\\FilesystemCache' => $vendorDir . '/twig/twig/src/Cache/FilesystemCache.php', 'Twig\\Cache\\NullCache' => $vendorDir . '/twig/twig/src/Cache/NullCache.php', 'Twig\\Compiler' => $vendorDir . '/twig/twig/src/Compiler.php', 'Twig\\Environment' => $vendorDir . '/twig/twig/src/Environment.php', 'Twig\\Error\\Error' => $vendorDir . '/twig/twig/src/Error/Error.php', 'Twig\\Error\\LoaderError' => $vendorDir . '/twig/twig/src/Error/LoaderError.php', 'Twig\\Error\\RuntimeError' => $vendorDir . '/twig/twig/src/Error/RuntimeError.php', 'Twig\\Error\\SyntaxError' => $vendorDir . '/twig/twig/src/Error/SyntaxError.php', 'Twig\\ExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser.php', 'Twig\\Extension\\AbstractExtension' => $vendorDir . '/twig/twig/src/Extension/AbstractExtension.php', 'Twig\\Extension\\CoreExtension' => $vendorDir . '/twig/twig/src/Extension/CoreExtension.php', 'Twig\\Extension\\DebugExtension' => $vendorDir . '/twig/twig/src/Extension/DebugExtension.php', 'Twig\\Extension\\EscaperExtension' => $vendorDir . '/twig/twig/src/Extension/EscaperExtension.php', 'Twig\\Extension\\ExtensionInterface' => $vendorDir . '/twig/twig/src/Extension/ExtensionInterface.php', 'Twig\\Extension\\GlobalsInterface' => $vendorDir . '/twig/twig/src/Extension/GlobalsInterface.php', 'Twig\\Extension\\InitRuntimeInterface' => $vendorDir . '/twig/twig/src/Extension/InitRuntimeInterface.php', 'Twig\\Extension\\OptimizerExtension' => $vendorDir . '/twig/twig/src/Extension/OptimizerExtension.php', 'Twig\\Extension\\ProfilerExtension' => $vendorDir . '/twig/twig/src/Extension/ProfilerExtension.php', 'Twig\\Extension\\RuntimeExtensionInterface' => $vendorDir . '/twig/twig/src/Extension/RuntimeExtensionInterface.php', 'Twig\\Extension\\SandboxExtension' => $vendorDir . '/twig/twig/src/Extension/SandboxExtension.php', 'Twig\\Extension\\StagingExtension' => $vendorDir . '/twig/twig/src/Extension/StagingExtension.php', 'Twig\\Extension\\StringLoaderExtension' => $vendorDir . '/twig/twig/src/Extension/StringLoaderExtension.php', 'Twig\\Extensions\\ArrayExtension' => $vendorDir . '/twig/extensions/src/ArrayExtension.php', 'Twig\\Extensions\\DateExtension' => $vendorDir . '/twig/extensions/src/DateExtension.php', 'Twig\\Extensions\\I18nExtension' => $vendorDir . '/twig/extensions/src/I18nExtension.php', 'Twig\\Extensions\\IntlExtension' => $vendorDir . '/twig/extensions/src/IntlExtension.php', 'Twig\\Extensions\\Node\\TransNode' => $vendorDir . '/twig/extensions/src/Node/TransNode.php', 'Twig\\Extensions\\TextExtension' => $vendorDir . '/twig/extensions/src/TextExtension.php', 'Twig\\Extensions\\TokenParser\\TransTokenParser' => $vendorDir . '/twig/extensions/src/TokenParser/TransTokenParser.php', 'Twig\\FileExtensionEscapingStrategy' => $vendorDir . '/twig/twig/src/FileExtensionEscapingStrategy.php', 'Twig\\Lexer' => $vendorDir . '/twig/twig/src/Lexer.php', 'Twig\\Loader\\ArrayLoader' => $vendorDir . '/twig/twig/src/Loader/ArrayLoader.php', 'Twig\\Loader\\ChainLoader' => $vendorDir . '/twig/twig/src/Loader/ChainLoader.php', 'Twig\\Loader\\ExistsLoaderInterface' => $vendorDir . '/twig/twig/src/Loader/ExistsLoaderInterface.php', 'Twig\\Loader\\FilesystemLoader' => $vendorDir . '/twig/twig/src/Loader/FilesystemLoader.php', 'Twig\\Loader\\LoaderInterface' => $vendorDir . '/twig/twig/src/Loader/LoaderInterface.php', 'Twig\\Loader\\SourceContextLoaderInterface' => $vendorDir . '/twig/twig/src/Loader/SourceContextLoaderInterface.php', 'Twig\\Markup' => $vendorDir . '/twig/twig/src/Markup.php', 'Twig\\NodeTraverser' => $vendorDir . '/twig/twig/src/NodeTraverser.php', 'Twig\\NodeVisitor\\AbstractNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php', 'Twig\\NodeVisitor\\EscaperNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php', 'Twig\\NodeVisitor\\NodeVisitorInterface' => $vendorDir . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php', 'Twig\\NodeVisitor\\OptimizerNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php', 'Twig\\NodeVisitor\\SafeAnalysisNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php', 'Twig\\NodeVisitor\\SandboxNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php', 'Twig\\Node\\AutoEscapeNode' => $vendorDir . '/twig/twig/src/Node/AutoEscapeNode.php', 'Twig\\Node\\BlockNode' => $vendorDir . '/twig/twig/src/Node/BlockNode.php', 'Twig\\Node\\BlockReferenceNode' => $vendorDir . '/twig/twig/src/Node/BlockReferenceNode.php', 'Twig\\Node\\BodyNode' => $vendorDir . '/twig/twig/src/Node/BodyNode.php', 'Twig\\Node\\CheckSecurityNode' => $vendorDir . '/twig/twig/src/Node/CheckSecurityNode.php', 'Twig\\Node\\CheckToStringNode' => $vendorDir . '/twig/twig/src/Node/CheckToStringNode.php', 'Twig\\Node\\DeprecatedNode' => $vendorDir . '/twig/twig/src/Node/DeprecatedNode.php', 'Twig\\Node\\DoNode' => $vendorDir . '/twig/twig/src/Node/DoNode.php', 'Twig\\Node\\EmbedNode' => $vendorDir . '/twig/twig/src/Node/EmbedNode.php', 'Twig\\Node\\Expression\\AbstractExpression' => $vendorDir . '/twig/twig/src/Node/Expression/AbstractExpression.php', 'Twig\\Node\\Expression\\ArrayExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ArrayExpression.php', 'Twig\\Node\\Expression\\ArrowFunctionExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ArrowFunctionExpression.php', 'Twig\\Node\\Expression\\AssignNameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/AssignNameExpression.php', 'Twig\\Node\\Expression\\Binary\\AbstractBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/AbstractBinary.php', 'Twig\\Node\\Expression\\Binary\\AddBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/AddBinary.php', 'Twig\\Node\\Expression\\Binary\\AndBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/AndBinary.php', 'Twig\\Node\\Expression\\Binary\\BitwiseAndBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php', 'Twig\\Node\\Expression\\Binary\\BitwiseOrBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php', 'Twig\\Node\\Expression\\Binary\\BitwiseXorBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php', 'Twig\\Node\\Expression\\Binary\\ConcatBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/ConcatBinary.php', 'Twig\\Node\\Expression\\Binary\\DivBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/DivBinary.php', 'Twig\\Node\\Expression\\Binary\\EndsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php', 'Twig\\Node\\Expression\\Binary\\EqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/EqualBinary.php', 'Twig\\Node\\Expression\\Binary\\FloorDivBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php', 'Twig\\Node\\Expression\\Binary\\GreaterBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/GreaterBinary.php', 'Twig\\Node\\Expression\\Binary\\GreaterEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\InBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/InBinary.php', 'Twig\\Node\\Expression\\Binary\\LessBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/LessBinary.php', 'Twig\\Node\\Expression\\Binary\\LessEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\MatchesBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/MatchesBinary.php', 'Twig\\Node\\Expression\\Binary\\ModBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/ModBinary.php', 'Twig\\Node\\Expression\\Binary\\MulBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/MulBinary.php', 'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\NotInBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php', 'Twig\\Node\\Expression\\Binary\\OrBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/OrBinary.php', 'Twig\\Node\\Expression\\Binary\\PowerBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php', 'Twig\\Node\\Expression\\Binary\\RangeBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php', 'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php', 'Twig\\Node\\Expression\\Binary\\SubBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SubBinary.php', 'Twig\\Node\\Expression\\BlockReferenceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/BlockReferenceExpression.php', 'Twig\\Node\\Expression\\CallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/CallExpression.php', 'Twig\\Node\\Expression\\ConditionalExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConditionalExpression.php', 'Twig\\Node\\Expression\\ConstantExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConstantExpression.php', 'Twig\\Node\\Expression\\FilterExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FilterExpression.php', 'Twig\\Node\\Expression\\Filter\\DefaultFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php', 'Twig\\Node\\Expression\\FunctionExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FunctionExpression.php', 'Twig\\Node\\Expression\\GetAttrExpression' => $vendorDir . '/twig/twig/src/Node/Expression/GetAttrExpression.php', 'Twig\\Node\\Expression\\InlinePrint' => $vendorDir . '/twig/twig/src/Node/Expression/InlinePrint.php', 'Twig\\Node\\Expression\\MethodCallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/MethodCallExpression.php', 'Twig\\Node\\Expression\\NameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/NameExpression.php', 'Twig\\Node\\Expression\\NullCoalesceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/NullCoalesceExpression.php', 'Twig\\Node\\Expression\\ParentExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ParentExpression.php', 'Twig\\Node\\Expression\\TempNameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/TempNameExpression.php', 'Twig\\Node\\Expression\\TestExpression' => $vendorDir . '/twig/twig/src/Node/Expression/TestExpression.php', 'Twig\\Node\\Expression\\Test\\ConstantTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/ConstantTest.php', 'Twig\\Node\\Expression\\Test\\DefinedTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/DefinedTest.php', 'Twig\\Node\\Expression\\Test\\DivisiblebyTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php', 'Twig\\Node\\Expression\\Test\\EvenTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/EvenTest.php', 'Twig\\Node\\Expression\\Test\\NullTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/NullTest.php', 'Twig\\Node\\Expression\\Test\\OddTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/OddTest.php', 'Twig\\Node\\Expression\\Test\\SameasTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/SameasTest.php', 'Twig\\Node\\Expression\\Unary\\AbstractUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/AbstractUnary.php', 'Twig\\Node\\Expression\\Unary\\NegUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/NegUnary.php', 'Twig\\Node\\Expression\\Unary\\NotUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/NotUnary.php', 'Twig\\Node\\Expression\\Unary\\PosUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/PosUnary.php', 'Twig\\Node\\FlushNode' => $vendorDir . '/twig/twig/src/Node/FlushNode.php', 'Twig\\Node\\ForLoopNode' => $vendorDir . '/twig/twig/src/Node/ForLoopNode.php', 'Twig\\Node\\ForNode' => $vendorDir . '/twig/twig/src/Node/ForNode.php', 'Twig\\Node\\IfNode' => $vendorDir . '/twig/twig/src/Node/IfNode.php', 'Twig\\Node\\ImportNode' => $vendorDir . '/twig/twig/src/Node/ImportNode.php', 'Twig\\Node\\IncludeNode' => $vendorDir . '/twig/twig/src/Node/IncludeNode.php', 'Twig\\Node\\MacroNode' => $vendorDir . '/twig/twig/src/Node/MacroNode.php', 'Twig\\Node\\ModuleNode' => $vendorDir . '/twig/twig/src/Node/ModuleNode.php', 'Twig\\Node\\Node' => $vendorDir . '/twig/twig/src/Node/Node.php', 'Twig\\Node\\NodeCaptureInterface' => $vendorDir . '/twig/twig/src/Node/NodeCaptureInterface.php', 'Twig\\Node\\NodeOutputInterface' => $vendorDir . '/twig/twig/src/Node/NodeOutputInterface.php', 'Twig\\Node\\PrintNode' => $vendorDir . '/twig/twig/src/Node/PrintNode.php', 'Twig\\Node\\SandboxNode' => $vendorDir . '/twig/twig/src/Node/SandboxNode.php', 'Twig\\Node\\SandboxedPrintNode' => $vendorDir . '/twig/twig/src/Node/SandboxedPrintNode.php', 'Twig\\Node\\SetNode' => $vendorDir . '/twig/twig/src/Node/SetNode.php', 'Twig\\Node\\SetTempNode' => $vendorDir . '/twig/twig/src/Node/SetTempNode.php', 'Twig\\Node\\SpacelessNode' => $vendorDir . '/twig/twig/src/Node/SpacelessNode.php', 'Twig\\Node\\TextNode' => $vendorDir . '/twig/twig/src/Node/TextNode.php', 'Twig\\Node\\WithNode' => $vendorDir . '/twig/twig/src/Node/WithNode.php', 'Twig\\Parser' => $vendorDir . '/twig/twig/src/Parser.php', 'Twig\\Profiler\\Dumper\\BaseDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/BaseDumper.php', 'Twig\\Profiler\\Dumper\\BlackfireDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/BlackfireDumper.php', 'Twig\\Profiler\\Dumper\\HtmlDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/HtmlDumper.php', 'Twig\\Profiler\\Dumper\\TextDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/TextDumper.php', 'Twig\\Profiler\\NodeVisitor\\ProfilerNodeVisitor' => $vendorDir . '/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php', 'Twig\\Profiler\\Node\\EnterProfileNode' => $vendorDir . '/twig/twig/src/Profiler/Node/EnterProfileNode.php', 'Twig\\Profiler\\Node\\LeaveProfileNode' => $vendorDir . '/twig/twig/src/Profiler/Node/LeaveProfileNode.php', 'Twig\\Profiler\\Profile' => $vendorDir . '/twig/twig/src/Profiler/Profile.php', 'Twig\\RuntimeLoader\\ContainerRuntimeLoader' => $vendorDir . '/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php', 'Twig\\RuntimeLoader\\FactoryRuntimeLoader' => $vendorDir . '/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php', 'Twig\\RuntimeLoader\\RuntimeLoaderInterface' => $vendorDir . '/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php', 'Twig\\Sandbox\\SecurityError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityError.php', 'Twig\\Sandbox\\SecurityNotAllowedFilterError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php', 'Twig\\Sandbox\\SecurityNotAllowedFunctionError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php', 'Twig\\Sandbox\\SecurityNotAllowedMethodError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php', 'Twig\\Sandbox\\SecurityNotAllowedPropertyError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php', 'Twig\\Sandbox\\SecurityNotAllowedTagError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php', 'Twig\\Sandbox\\SecurityPolicy' => $vendorDir . '/twig/twig/src/Sandbox/SecurityPolicy.php', 'Twig\\Sandbox\\SecurityPolicyInterface' => $vendorDir . '/twig/twig/src/Sandbox/SecurityPolicyInterface.php', 'Twig\\Source' => $vendorDir . '/twig/twig/src/Source.php', 'Twig\\Template' => $vendorDir . '/twig/twig/src/Template.php', 'Twig\\TemplateWrapper' => $vendorDir . '/twig/twig/src/TemplateWrapper.php', 'Twig\\Test\\IntegrationTestCase' => $vendorDir . '/twig/twig/src/Test/IntegrationTestCase.php', 'Twig\\Test\\NodeTestCase' => $vendorDir . '/twig/twig/src/Test/NodeTestCase.php', 'Twig\\Token' => $vendorDir . '/twig/twig/src/Token.php', 'Twig\\TokenParser\\AbstractTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/AbstractTokenParser.php', 'Twig\\TokenParser\\ApplyTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ApplyTokenParser.php', 'Twig\\TokenParser\\AutoEscapeTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/AutoEscapeTokenParser.php', 'Twig\\TokenParser\\BlockTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/BlockTokenParser.php', 'Twig\\TokenParser\\DeprecatedTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/DeprecatedTokenParser.php', 'Twig\\TokenParser\\DoTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/DoTokenParser.php', 'Twig\\TokenParser\\EmbedTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/EmbedTokenParser.php', 'Twig\\TokenParser\\ExtendsTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ExtendsTokenParser.php', 'Twig\\TokenParser\\FilterTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FilterTokenParser.php', 'Twig\\TokenParser\\FlushTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FlushTokenParser.php', 'Twig\\TokenParser\\ForTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ForTokenParser.php', 'Twig\\TokenParser\\FromTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FromTokenParser.php', 'Twig\\TokenParser\\IfTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/IfTokenParser.php', 'Twig\\TokenParser\\ImportTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ImportTokenParser.php', 'Twig\\TokenParser\\IncludeTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/IncludeTokenParser.php', 'Twig\\TokenParser\\MacroTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/MacroTokenParser.php', 'Twig\\TokenParser\\SandboxTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SandboxTokenParser.php', 'Twig\\TokenParser\\SetTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SetTokenParser.php', 'Twig\\TokenParser\\SpacelessTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SpacelessTokenParser.php', 'Twig\\TokenParser\\TokenParserInterface' => $vendorDir . '/twig/twig/src/TokenParser/TokenParserInterface.php', 'Twig\\TokenParser\\UseTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/UseTokenParser.php', 'Twig\\TokenParser\\WithTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/WithTokenParser.php', 'Twig\\TokenStream' => $vendorDir . '/twig/twig/src/TokenStream.php', 'Twig\\TwigFilter' => $vendorDir . '/twig/twig/src/TwigFilter.php', 'Twig\\TwigFunction' => $vendorDir . '/twig/twig/src/TwigFunction.php', 'Twig\\TwigTest' => $vendorDir . '/twig/twig/src/TwigTest.php', 'Twig\\Util\\DeprecationCollector' => $vendorDir . '/twig/twig/src/Util/DeprecationCollector.php', 'Twig\\Util\\TemplateDirIterator' => $vendorDir . '/twig/twig/src/Util/TemplateDirIterator.php', 'Twig_Autoloader' => $vendorDir . '/twig/twig/lib/Twig/Autoloader.php', 'Twig_BaseNodeVisitor' => $vendorDir . '/twig/twig/lib/Twig/BaseNodeVisitor.php', 'Twig_CacheInterface' => $vendorDir . '/twig/twig/lib/Twig/CacheInterface.php', 'Twig_Cache_Filesystem' => $vendorDir . '/twig/twig/lib/Twig/Cache/Filesystem.php', 'Twig_Cache_Null' => $vendorDir . '/twig/twig/lib/Twig/Cache/Null.php', 'Twig_Compiler' => $vendorDir . '/twig/twig/lib/Twig/Compiler.php', 'Twig_CompilerInterface' => $vendorDir . '/twig/twig/lib/Twig/CompilerInterface.php', 'Twig_ContainerRuntimeLoader' => $vendorDir . '/twig/twig/lib/Twig/ContainerRuntimeLoader.php', 'Twig_Environment' => $vendorDir . '/twig/twig/lib/Twig/Environment.php', 'Twig_Error' => $vendorDir . '/twig/twig/lib/Twig/Error.php', 'Twig_Error_Loader' => $vendorDir . '/twig/twig/lib/Twig/Error/Loader.php', 'Twig_Error_Runtime' => $vendorDir . '/twig/twig/lib/Twig/Error/Runtime.php', 'Twig_Error_Syntax' => $vendorDir . '/twig/twig/lib/Twig/Error/Syntax.php', 'Twig_ExistsLoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/ExistsLoaderInterface.php', 'Twig_ExpressionParser' => $vendorDir . '/twig/twig/lib/Twig/ExpressionParser.php', 'Twig_Extension' => $vendorDir . '/twig/twig/lib/Twig/Extension.php', 'Twig_ExtensionInterface' => $vendorDir . '/twig/twig/lib/Twig/ExtensionInterface.php', 'Twig_Extension_Core' => $vendorDir . '/twig/twig/lib/Twig/Extension/Core.php', 'Twig_Extension_Debug' => $vendorDir . '/twig/twig/lib/Twig/Extension/Debug.php', 'Twig_Extension_Escaper' => $vendorDir . '/twig/twig/lib/Twig/Extension/Escaper.php', 'Twig_Extension_GlobalsInterface' => $vendorDir . '/twig/twig/lib/Twig/Extension/GlobalsInterface.php', 'Twig_Extension_InitRuntimeInterface' => $vendorDir . '/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php', 'Twig_Extension_Optimizer' => $vendorDir . '/twig/twig/lib/Twig/Extension/Optimizer.php', 'Twig_Extension_Profiler' => $vendorDir . '/twig/twig/lib/Twig/Extension/Profiler.php', 'Twig_Extension_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/Extension/Sandbox.php', 'Twig_Extension_Staging' => $vendorDir . '/twig/twig/lib/Twig/Extension/Staging.php', 'Twig_Extension_StringLoader' => $vendorDir . '/twig/twig/lib/Twig/Extension/StringLoader.php', 'Twig_Extensions_Autoloader' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Autoloader.php', 'Twig_Extensions_Extension_Array' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Extension/Array.php', 'Twig_Extensions_Extension_Date' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Extension/Date.php', 'Twig_Extensions_Extension_I18n' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Extension/I18n.php', 'Twig_Extensions_Extension_Intl' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Extension/Intl.php', 'Twig_Extensions_Extension_Text' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Extension/Text.php', 'Twig_Extensions_Grammar' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar.php', 'Twig_Extensions_GrammarInterface' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/GrammarInterface.php', 'Twig_Extensions_Grammar_Arguments' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php', 'Twig_Extensions_Grammar_Array' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Array.php', 'Twig_Extensions_Grammar_Body' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Body.php', 'Twig_Extensions_Grammar_Boolean' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Boolean.php', 'Twig_Extensions_Grammar_Constant' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php', 'Twig_Extensions_Grammar_Expression' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php', 'Twig_Extensions_Grammar_Hash' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php', 'Twig_Extensions_Grammar_Number' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Number.php', 'Twig_Extensions_Grammar_Optional' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php', 'Twig_Extensions_Grammar_Switch' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php', 'Twig_Extensions_Grammar_Tag' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php', 'Twig_Extensions_Node_Trans' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/Node/Trans.php', 'Twig_Extensions_SimpleTokenParser' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php', 'Twig_Extensions_TokenParser_Trans' => $vendorDir . '/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php', 'Twig_FactoryRuntimeLoader' => $vendorDir . '/twig/twig/lib/Twig/FactoryRuntimeLoader.php', 'Twig_FileExtensionEscapingStrategy' => $vendorDir . '/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php', 'Twig_Filter' => $vendorDir . '/twig/twig/lib/Twig/Filter.php', 'Twig_FilterCallableInterface' => $vendorDir . '/twig/twig/lib/Twig/FilterCallableInterface.php', 'Twig_FilterInterface' => $vendorDir . '/twig/twig/lib/Twig/FilterInterface.php', 'Twig_Filter_Function' => $vendorDir . '/twig/twig/lib/Twig/Filter/Function.php', 'Twig_Filter_Method' => $vendorDir . '/twig/twig/lib/Twig/Filter/Method.php', 'Twig_Filter_Node' => $vendorDir . '/twig/twig/lib/Twig/Filter/Node.php', 'Twig_Function' => $vendorDir . '/twig/twig/lib/Twig/Function.php', 'Twig_FunctionCallableInterface' => $vendorDir . '/twig/twig/lib/Twig/FunctionCallableInterface.php', 'Twig_FunctionInterface' => $vendorDir . '/twig/twig/lib/Twig/FunctionInterface.php', 'Twig_Function_Function' => $vendorDir . '/twig/twig/lib/Twig/Function/Function.php', 'Twig_Function_Method' => $vendorDir . '/twig/twig/lib/Twig/Function/Method.php', 'Twig_Function_Node' => $vendorDir . '/twig/twig/lib/Twig/Function/Node.php', 'Twig_Lexer' => $vendorDir . '/twig/twig/lib/Twig/Lexer.php', 'Twig_LexerInterface' => $vendorDir . '/twig/twig/lib/Twig/LexerInterface.php', 'Twig_LoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/LoaderInterface.php', 'Twig_Loader_Array' => $vendorDir . '/twig/twig/lib/Twig/Loader/Array.php', 'Twig_Loader_Chain' => $vendorDir . '/twig/twig/lib/Twig/Loader/Chain.php', 'Twig_Loader_Filesystem' => $vendorDir . '/twig/twig/lib/Twig/Loader/Filesystem.php', 'Twig_Loader_String' => $vendorDir . '/twig/twig/lib/Twig/Loader/String.php', 'Twig_Markup' => $vendorDir . '/twig/twig/lib/Twig/Markup.php', 'Twig_Node' => $vendorDir . '/twig/twig/lib/Twig/Node.php', 'Twig_NodeCaptureInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeCaptureInterface.php', 'Twig_NodeInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeInterface.php', 'Twig_NodeOutputInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeOutputInterface.php', 'Twig_NodeTraverser' => $vendorDir . '/twig/twig/lib/Twig/NodeTraverser.php', 'Twig_NodeVisitorInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitorInterface.php', 'Twig_NodeVisitor_Escaper' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/Escaper.php', 'Twig_NodeVisitor_Optimizer' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/Optimizer.php', 'Twig_NodeVisitor_SafeAnalysis' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php', 'Twig_NodeVisitor_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/Sandbox.php', 'Twig_Node_AutoEscape' => $vendorDir . '/twig/twig/lib/Twig/Node/AutoEscape.php', 'Twig_Node_Block' => $vendorDir . '/twig/twig/lib/Twig/Node/Block.php', 'Twig_Node_BlockReference' => $vendorDir . '/twig/twig/lib/Twig/Node/BlockReference.php', 'Twig_Node_Body' => $vendorDir . '/twig/twig/lib/Twig/Node/Body.php', 'Twig_Node_CheckSecurity' => $vendorDir . '/twig/twig/lib/Twig/Node/CheckSecurity.php', 'Twig_Node_Deprecated' => $vendorDir . '/twig/twig/lib/Twig/Node/Deprecated.php', 'Twig_Node_Do' => $vendorDir . '/twig/twig/lib/Twig/Node/Do.php', 'Twig_Node_Embed' => $vendorDir . '/twig/twig/lib/Twig/Node/Embed.php', 'Twig_Node_Expression' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression.php', 'Twig_Node_Expression_Array' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Array.php', 'Twig_Node_Expression_AssignName' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/AssignName.php', 'Twig_Node_Expression_Binary' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary.php', 'Twig_Node_Expression_Binary_Add' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Add.php', 'Twig_Node_Expression_Binary_And' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/And.php', 'Twig_Node_Expression_Binary_BitwiseAnd' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php', 'Twig_Node_Expression_Binary_BitwiseOr' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php', 'Twig_Node_Expression_Binary_BitwiseXor' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php', 'Twig_Node_Expression_Binary_Concat' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php', 'Twig_Node_Expression_Binary_Div' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Div.php', 'Twig_Node_Expression_Binary_EndsWith' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php', 'Twig_Node_Expression_Binary_Equal' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php', 'Twig_Node_Expression_Binary_FloorDiv' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php', 'Twig_Node_Expression_Binary_Greater' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php', 'Twig_Node_Expression_Binary_GreaterEqual' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php', 'Twig_Node_Expression_Binary_In' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/In.php', 'Twig_Node_Expression_Binary_Less' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Less.php', 'Twig_Node_Expression_Binary_LessEqual' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php', 'Twig_Node_Expression_Binary_Matches' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php', 'Twig_Node_Expression_Binary_Mod' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php', 'Twig_Node_Expression_Binary_Mul' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php', 'Twig_Node_Expression_Binary_NotEqual' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php', 'Twig_Node_Expression_Binary_NotIn' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php', 'Twig_Node_Expression_Binary_Or' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Or.php', 'Twig_Node_Expression_Binary_Power' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Power.php', 'Twig_Node_Expression_Binary_Range' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Range.php', 'Twig_Node_Expression_Binary_StartsWith' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php', 'Twig_Node_Expression_Binary_Sub' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php', 'Twig_Node_Expression_BlockReference' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/BlockReference.php', 'Twig_Node_Expression_Call' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Call.php', 'Twig_Node_Expression_Conditional' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Conditional.php', 'Twig_Node_Expression_Constant' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Constant.php', 'Twig_Node_Expression_ExtensionReference' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php', 'Twig_Node_Expression_Filter' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Filter.php', 'Twig_Node_Expression_Filter_Default' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Filter/Default.php', 'Twig_Node_Expression_Function' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Function.php', 'Twig_Node_Expression_GetAttr' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/GetAttr.php', 'Twig_Node_Expression_MethodCall' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/MethodCall.php', 'Twig_Node_Expression_Name' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Name.php', 'Twig_Node_Expression_NullCoalesce' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php', 'Twig_Node_Expression_Parent' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Parent.php', 'Twig_Node_Expression_TempName' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/TempName.php', 'Twig_Node_Expression_Test' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test.php', 'Twig_Node_Expression_Test_Constant' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Constant.php', 'Twig_Node_Expression_Test_Defined' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Defined.php', 'Twig_Node_Expression_Test_Divisibleby' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php', 'Twig_Node_Expression_Test_Even' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Even.php', 'Twig_Node_Expression_Test_Null' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Null.php', 'Twig_Node_Expression_Test_Odd' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Odd.php', 'Twig_Node_Expression_Test_Sameas' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php', 'Twig_Node_Expression_Unary' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary.php', 'Twig_Node_Expression_Unary_Neg' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php', 'Twig_Node_Expression_Unary_Not' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary/Not.php', 'Twig_Node_Expression_Unary_Pos' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php', 'Twig_Node_Flush' => $vendorDir . '/twig/twig/lib/Twig/Node/Flush.php', 'Twig_Node_For' => $vendorDir . '/twig/twig/lib/Twig/Node/For.php', 'Twig_Node_ForLoop' => $vendorDir . '/twig/twig/lib/Twig/Node/ForLoop.php', 'Twig_Node_If' => $vendorDir . '/twig/twig/lib/Twig/Node/If.php', 'Twig_Node_Import' => $vendorDir . '/twig/twig/lib/Twig/Node/Import.php', 'Twig_Node_Include' => $vendorDir . '/twig/twig/lib/Twig/Node/Include.php', 'Twig_Node_Macro' => $vendorDir . '/twig/twig/lib/Twig/Node/Macro.php', 'Twig_Node_Module' => $vendorDir . '/twig/twig/lib/Twig/Node/Module.php', 'Twig_Node_Print' => $vendorDir . '/twig/twig/lib/Twig/Node/Print.php', 'Twig_Node_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/Node/Sandbox.php', 'Twig_Node_SandboxedPrint' => $vendorDir . '/twig/twig/lib/Twig/Node/SandboxedPrint.php', 'Twig_Node_Set' => $vendorDir . '/twig/twig/lib/Twig/Node/Set.php', 'Twig_Node_SetTemp' => $vendorDir . '/twig/twig/lib/Twig/Node/SetTemp.php', 'Twig_Node_Spaceless' => $vendorDir . '/twig/twig/lib/Twig/Node/Spaceless.php', 'Twig_Node_Text' => $vendorDir . '/twig/twig/lib/Twig/Node/Text.php', 'Twig_Node_With' => $vendorDir . '/twig/twig/lib/Twig/Node/With.php', 'Twig_Parser' => $vendorDir . '/twig/twig/lib/Twig/Parser.php', 'Twig_ParserInterface' => $vendorDir . '/twig/twig/lib/Twig/ParserInterface.php', 'Twig_Profiler_Dumper_Base' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Base.php', 'Twig_Profiler_Dumper_Blackfire' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php', 'Twig_Profiler_Dumper_Html' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Html.php', 'Twig_Profiler_Dumper_Text' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Text.php', 'Twig_Profiler_NodeVisitor_Profiler' => $vendorDir . '/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php', 'Twig_Profiler_Node_EnterProfile' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php', 'Twig_Profiler_Node_LeaveProfile' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php', 'Twig_Profiler_Profile' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Profile.php', 'Twig_RuntimeLoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/RuntimeLoaderInterface.php', 'Twig_Sandbox_SecurityError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityError.php', 'Twig_Sandbox_SecurityNotAllowedFilterError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php', 'Twig_Sandbox_SecurityNotAllowedFunctionError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php', 'Twig_Sandbox_SecurityNotAllowedMethodError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php', 'Twig_Sandbox_SecurityNotAllowedPropertyError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php', 'Twig_Sandbox_SecurityNotAllowedTagError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php', 'Twig_Sandbox_SecurityPolicy' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php', 'Twig_Sandbox_SecurityPolicyInterface' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php', 'Twig_SimpleFilter' => $vendorDir . '/twig/twig/lib/Twig/SimpleFilter.php', 'Twig_SimpleFunction' => $vendorDir . '/twig/twig/lib/Twig/SimpleFunction.php', 'Twig_SimpleTest' => $vendorDir . '/twig/twig/lib/Twig/SimpleTest.php', 'Twig_Source' => $vendorDir . '/twig/twig/lib/Twig/Source.php', 'Twig_SourceContextLoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/SourceContextLoaderInterface.php', 'Twig_Template' => $vendorDir . '/twig/twig/lib/Twig/Template.php', 'Twig_TemplateInterface' => $vendorDir . '/twig/twig/lib/Twig/TemplateInterface.php', 'Twig_TemplateWrapper' => $vendorDir . '/twig/twig/lib/Twig/TemplateWrapper.php', 'Twig_Test' => $vendorDir . '/twig/twig/lib/Twig/Test.php', 'Twig_TestCallableInterface' => $vendorDir . '/twig/twig/lib/Twig/TestCallableInterface.php', 'Twig_TestInterface' => $vendorDir . '/twig/twig/lib/Twig/TestInterface.php', 'Twig_Test_Function' => $vendorDir . '/twig/twig/lib/Twig/Test/Function.php', 'Twig_Test_IntegrationTestCase' => $vendorDir . '/twig/twig/lib/Twig/Test/IntegrationTestCase.php', 'Twig_Test_Method' => $vendorDir . '/twig/twig/lib/Twig/Test/Method.php', 'Twig_Test_Node' => $vendorDir . '/twig/twig/lib/Twig/Test/Node.php', 'Twig_Test_NodeTestCase' => $vendorDir . '/twig/twig/lib/Twig/Test/NodeTestCase.php', 'Twig_Token' => $vendorDir . '/twig/twig/lib/Twig/Token.php', 'Twig_TokenParser' => $vendorDir . '/twig/twig/lib/Twig/TokenParser.php', 'Twig_TokenParserBroker' => $vendorDir . '/twig/twig/lib/Twig/TokenParserBroker.php', 'Twig_TokenParserBrokerInterface' => $vendorDir . '/twig/twig/lib/Twig/TokenParserBrokerInterface.php', 'Twig_TokenParserInterface' => $vendorDir . '/twig/twig/lib/Twig/TokenParserInterface.php', 'Twig_TokenParser_AutoEscape' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/AutoEscape.php', 'Twig_TokenParser_Block' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Block.php', 'Twig_TokenParser_Deprecated' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Deprecated.php', 'Twig_TokenParser_Do' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Do.php', 'Twig_TokenParser_Embed' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Embed.php', 'Twig_TokenParser_Extends' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Extends.php', 'Twig_TokenParser_Filter' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Filter.php', 'Twig_TokenParser_Flush' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Flush.php', 'Twig_TokenParser_For' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/For.php', 'Twig_TokenParser_From' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/From.php', 'Twig_TokenParser_If' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/If.php', 'Twig_TokenParser_Import' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Import.php', 'Twig_TokenParser_Include' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Include.php', 'Twig_TokenParser_Macro' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Macro.php', 'Twig_TokenParser_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Sandbox.php', 'Twig_TokenParser_Set' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Set.php', 'Twig_TokenParser_Spaceless' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Spaceless.php', 'Twig_TokenParser_Use' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Use.php', 'Twig_TokenParser_With' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/With.php', 'Twig_TokenStream' => $vendorDir . '/twig/twig/lib/Twig/TokenStream.php', 'Twig_Util_DeprecationCollector' => $vendorDir . '/twig/twig/lib/Twig/Util/DeprecationCollector.php', 'Twig_Util_TemplateDirIterator' => $vendorDir . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php', 'phpseclib\\Crypt\\AES' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/AES.php', 'phpseclib\\Crypt\\Base' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Base.php', 'phpseclib\\Crypt\\Blowfish' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php', 'phpseclib\\Crypt\\DES' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/DES.php', 'phpseclib\\Crypt\\Hash' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Hash.php', 'phpseclib\\Crypt\\RC2' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/RC2.php', 'phpseclib\\Crypt\\RC4' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/RC4.php', 'phpseclib\\Crypt\\RSA' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/RSA.php', 'phpseclib\\Crypt\\Random' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Random.php', 'phpseclib\\Crypt\\Rijndael' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php', 'phpseclib\\Crypt\\TripleDES' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php', 'phpseclib\\Crypt\\Twofish' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php', 'phpseclib\\File\\ANSI' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ANSI.php', 'phpseclib\\File\\ASN1' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ASN1.php', 'phpseclib\\File\\ASN1\\Element' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php', 'phpseclib\\File\\X509' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/X509.php', 'phpseclib\\Math\\BigInteger' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger.php', 'phpseclib\\Net\\SCP' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SCP.php', 'phpseclib\\Net\\SFTP' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SFTP.php', 'phpseclib\\Net\\SFTP\\Stream' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php', 'phpseclib\\Net\\SSH1' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SSH1.php', 'phpseclib\\Net\\SSH2' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SSH2.php', 'phpseclib\\System\\SSH\\Agent' => $vendorDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php', 'phpseclib\\System\\SSH\\Agent\\Identity' => $vendorDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php', ); db/login/vendor/composer/installed.json000064400000111520151502156020014234 0ustar00[ { "name": "bacon/bacon-qr-code", "version": "1.0.3", "version_normalized": "1.0.3.0", "source": { "type": "git", "url": "https://github.com/Bacon/BaconQrCode.git", "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/5a91b62b9d37cee635bbf8d553f4546057250bee", "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee", "shasum": "" }, "require": { "ext-iconv": "*", "php": "^5.4|^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8" }, "suggest": { "ext-gd": "to generate QR code images" }, "time": "2017-10-17T09:59:25+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-0": { "BaconQrCode": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-2-Clause" ], "authors": [ { "name": "Ben Scholzen 'DASPRiD'", "email": "mail@dasprids.de", "homepage": "http://www.dasprids.de", "role": "Developer" } ], "description": "BaconQrCode is a QR code generator for PHP.", "homepage": "https://github.com/Bacon/BaconQrCode" }, { "name": "google/recaptcha", "version": "1.2.4", "version_normalized": "1.2.4.0", "source": { "type": "git", "url": "https://github.com/google/recaptcha.git", "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/google/recaptcha/zipball/614f25a9038be4f3f2da7cbfd778dc5b357d2419", "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.2.20|^2.15", "php-coveralls/php-coveralls": "^2.1", "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11" }, "time": "2020-03-31T17:50:54+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.2.x-dev" } }, "installation-source": "dist", "autoload": { "psr-4": { "ReCaptcha\\": "src/ReCaptcha" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.", "homepage": "https://www.google.com/recaptcha/", "keywords": [ "Abuse", "captcha", "recaptcha", "spam" ] }, { "name": "paragonie/constant_time_encoding", "version": "v1.0.4", "version_normalized": "1.0.4.0", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", "reference": "2132f0f293d856026d7d11bd81b9f4a23a1dc1f6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/2132f0f293d856026d7d11bd81b9f4a23a1dc1f6", "reference": "2132f0f293d856026d7d11bd81b9f4a23a1dc1f6", "shasum": "" }, "require": { "php": "^5.3|^7" }, "require-dev": { "paragonie/random_compat": "^1.4|^2", "phpunit/phpunit": "4.*|5.*", "vimeo/psalm": "^0.3|^1" }, "time": "2018-04-30T17:57:16+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { "ParagonIE\\ConstantTime\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Paragon Initiative Enterprises", "email": "security@paragonie.com", "homepage": "https://paragonie.com", "role": "Maintainer" }, { "name": "Steve 'Sc00bz' Thomas", "email": "steve@tobtu.com", "homepage": "https://www.tobtu.com", "role": "Original Developer" } ], "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", "keywords": [ "base16", "base32", "base32_decode", "base32_encode", "base64", "base64_decode", "base64_encode", "bin2hex", "encoding", "hex", "hex2bin", "rfc4648" ] }, { "name": "paragonie/random_compat", "version": "v2.0.19", "version_normalized": "2.0.19.0", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241", "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241", "shasum": "" }, "require": { "php": ">=5.2.0" }, "require-dev": { "phpunit/phpunit": "4.*|5.*" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "time": "2020-10-15T10:06:57+00:00", "type": "library", "installation-source": "dist", "autoload": { "files": [ "lib/random.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Paragon Initiative Enterprises", "email": "security@paragonie.com", "homepage": "https://paragonie.com" } ], "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", "polyfill", "pseudorandom", "random" ] }, { "name": "phpmyadmin/motranslator", "version": "4.0", "version_normalized": "4.0.0.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/motranslator.git", "reference": "fcb370254998fda7eeccfd7c787b4deb71b0d77c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/motranslator/zipball/fcb370254998fda7eeccfd7c787b4deb71b0d77c", "reference": "fcb370254998fda7eeccfd7c787b4deb71b0d77c", "shasum": "" }, "require": { "php": ">=5.3.0", "symfony/expression-language": "^4.0 || ^3.2 || ^2.8" }, "require-dev": { "apigen/apigen": "^4.1", "phpunit/php-code-coverage": "*", "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5" }, "time": "2018-02-12T13:22:52+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { "PhpMyAdmin\\MoTranslator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "Translation API for PHP using Gettext MO files", "homepage": "https://github.com/phpmyadmin/motranslator", "keywords": [ "gettext", "i18n", "mo", "translator" ] }, { "name": "phpmyadmin/shapefile", "version": "2.1", "version_normalized": "2.1.0.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/shapefile.git", "reference": "e23b767f2a81f61fee3fc09fc062879985f3e224" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/shapefile/zipball/e23b767f2a81f61fee3fc09fc062879985f3e224", "reference": "e23b767f2a81f61fee3fc09fc062879985f3e224", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { "phpunit/php-code-coverage": "*", "phpunit/phpunit": "~4.8 || ~5.7" }, "suggest": { "ext-dbase": "For dbf files parsing" }, "time": "2017-05-15T08:31:47+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { "PhpMyAdmin\\ShapeFile\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0+" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "ESRI ShapeFile library for PHP", "homepage": "https://github.com/phpmyadmin/shapefile", "keywords": [ "ESRI", "Shapefile", "dbf", "geo", "geospatial", "shape", "shp" ] }, { "name": "phpmyadmin/sql-parser", "version": "4.7.1", "version_normalized": "4.7.1.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", "reference": "550ce6968794e890cfd5b4cbf202e716d78b6a92" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/550ce6968794e890cfd5b4cbf202e716d78b6a92", "reference": "550ce6968794e890cfd5b4cbf202e716d78b6a92", "shasum": "" }, "require": { "php": ">=5.3.0", "symfony/polyfill-mbstring": "^1.3" }, "conflict": { "phpmyadmin/motranslator": "<3.0" }, "require-dev": { "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5 || ^7.0", "squizlabs/php_codesniffer": "~2.9 || ~3.4" }, "suggest": { "ext-mbstring": "For best performance", "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, "time": "2020-10-15T15:17:59+00:00", "bin": [ "bin/highlight-query", "bin/lint-query", "bin/tokenize-query" ], "type": "library", "installation-source": "dist", "autoload": { "psr-4": { "PhpMyAdmin\\SqlParser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", "homepage": "https://github.com/phpmyadmin/sql-parser", "keywords": [ "analysis", "lexer", "parser", "sql" ] }, { "name": "phpseclib/phpseclib", "version": "2.0.29", "version_normalized": "2.0.29.0", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", "reference": "497856a8d997f640b4a516062f84228a772a48a8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/497856a8d997f640b4a516062f84228a772a48a8", "reference": "497856a8d997f640b4a516062f84228a772a48a8", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { "phing/phing": "~2.7", "phpunit/phpunit": "^4.8.35|^5.7|^6.0", "squizlabs/php_codesniffer": "~2.0" }, "suggest": { "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." }, "time": "2020-09-08T04:24:43+00:00", "type": "library", "installation-source": "dist", "autoload": { "files": [ "phpseclib/bootstrap.php" ], "psr-4": { "phpseclib\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Jim Wigginton", "email": "terrafrost@php.net", "role": "Lead Developer" }, { "name": "Patrick Monnerat", "email": "pm@datasphere.ch", "role": "Developer" }, { "name": "Andreas Fischer", "email": "bantu@phpbb.com", "role": "Developer" }, { "name": "Hans-Jürgen Petrich", "email": "petrich@tronic-media.com", "role": "Developer" }, { "name": "Graham Campbell", "email": "graham@alt-three.com", "role": "Developer" } ], "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", "homepage": "http://phpseclib.sourceforge.net", "keywords": [ "BigInteger", "aes", "asn.1", "asn1", "blowfish", "crypto", "cryptography", "encryption", "rsa", "security", "sftp", "signature", "signing", "ssh", "twofish", "x.509", "x509" ], "funding": [ { "url": "https://github.com/terrafrost", "type": "github" }, { "url": "https://www.patreon.com/phpseclib", "type": "patreon" }, { "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", "type": "tidelift" } ] }, { "name": "pragmarx/google2fa", "version": "v3.0.3", "version_normalized": "3.0.3.0", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", "reference": "6949226739e4424f40031e6f1c96b1fd64047335" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6949226739e4424f40031e6f1c96b1fd64047335", "reference": "6949226739e4424f40031e6f1c96b1fd64047335", "shasum": "" }, "require": { "paragonie/constant_time_encoding": "~1.0|~2.0", "paragonie/random_compat": ">=1", "php": ">=5.4", "symfony/polyfill-php56": "~1.2" }, "require-dev": { "bacon/bacon-qr-code": "~1.0", "phpunit/phpunit": "~4|~5|~6" }, "suggest": { "bacon/bacon-qr-code": "Required to generate inline QR Codes." }, "time": "2018-08-29T13:28:06+00:00", "type": "library", "extra": { "component": "package", "branch-alias": { "dev-master": "2.0-dev" } }, "installation-source": "dist", "autoload": { "psr-4": { "PragmaRX\\Google2FA\\": "src/", "PragmaRX\\Google2FA\\Tests\\": "tests/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Antonio Carlos Ribeiro", "email": "acr@antoniocarlosribeiro.com", "role": "Creator & Designer" } ], "description": "A One Time Password Authentication package, compatible with Google Authenticator.", "keywords": [ "2fa", "Authentication", "Two Factor Authentication", "google2fa", "laravel" ] }, { "name": "psr/container", "version": "1.0.0", "version_normalized": "1.0.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { "php": ">=5.3.0" }, "time": "2017-02-14T16:28:37+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "installation-source": "dist", "autoload": { "psr-4": { "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "http://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", "homepage": "https://github.com/php-fig/container", "keywords": [ "PSR-11", "container", "container-interface", "container-interop", "psr" ] }, { "name": "samyoul/u2f-php-server", "version": "v1.1.4", "version_normalized": "1.1.4.0", "source": { "type": "git", "url": "https://github.com/Samyoul/U2F-php-server.git", "reference": "0625202c79d570e58525ed6c4ae38500ea3f0883" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Samyoul/U2F-php-server/zipball/0625202c79d570e58525ed6c4ae38500ea3f0883", "reference": "0625202c79d570e58525ed6c4ae38500ea3f0883", "shasum": "" }, "require": { "ext-openssl": "*" }, "time": "2018-10-26T12:43:39+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { "Samyoul\\U2F\\U2FServer\\": [ "src/" ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-2-Clause" ], "authors": [ { "name": "Samuel Hawksby-Robinson", "email": "samuel@samyoul.com" } ], "description": "Server side handling class for FIDO U2F registration and authentication" }, { "name": "symfony/expression-language", "version": "v2.8.52", "version_normalized": "2.8.52.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/expression-language/zipball/fa9be1b831859b56d244137fabbfd01a46dbdb36", "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36", "shasum": "" }, "require": { "php": ">=5.3.9" }, "time": "2018-11-11T11:18:13+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "2.8-dev" } }, "installation-source": "dist", "autoload": { "psr-4": { "Symfony\\Component\\ExpressionLanguage\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony ExpressionLanguage Component", "homepage": "https://symfony.com" }, { "name": "symfony/polyfill-ctype", "version": "v1.18.1", "version_normalized": "1.18.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { "ext-ctype": "For best performance" }, "time": "2020-07-14T12:35:20+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "installation-source": "dist", "autoload": { "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "ctype", "polyfill", "portable" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ] }, { "name": "symfony/polyfill-mbstring", "version": "v1.18.1", "version_normalized": "1.18.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { "ext-mbstring": "For best performance" }, "time": "2020-07-14T12:35:20+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "installation-source": "dist", "autoload": { "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", "mbstring", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ] }, { "name": "symfony/polyfill-php56", "version": "v1.18.1", "version_normalized": "1.18.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", "reference": "13df84e91cd168f247c2f2ec82cc0fa24901c011" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/13df84e91cd168f247c2f2ec82cc0fa24901c011", "reference": "13df84e91cd168f247c2f2ec82cc0fa24901c011", "shasum": "" }, "require": { "php": ">=5.3.3", "symfony/polyfill-util": "~1.0" }, "time": "2020-07-14T12:35:20+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "installation-source": "dist", "autoload": { "psr-4": { "Symfony\\Polyfill\\Php56\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ] }, { "name": "symfony/polyfill-util", "version": "v1.18.1", "version_normalized": "1.18.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", "reference": "46b910c71e9828f8ec2aa7a0314de1130d9b295a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/46b910c71e9828f8ec2aa7a0314de1130d9b295a", "reference": "46b910c71e9828f8ec2aa7a0314de1130d9b295a", "shasum": "" }, "require": { "php": ">=5.3.3" }, "time": "2020-07-14T12:35:20+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.18-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "installation-source": "dist", "autoload": { "psr-4": { "Symfony\\Polyfill\\Util\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony utilities for portability of PHP codes", "homepage": "https://symfony.com", "keywords": [ "compat", "compatibility", "polyfill", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ] }, { "name": "tecnickcom/tcpdf", "version": "6.3.5", "version_normalized": "6.3.5.0", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", "reference": "19a535eaa7fb1c1cac499109deeb1a7a201b4549" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/19a535eaa7fb1c1cac499109deeb1a7a201b4549", "reference": "19a535eaa7fb1c1cac499109deeb1a7a201b4549", "shasum": "" }, "require": { "php": ">=5.3.0" }, "time": "2020-02-14T14:20:12+00:00", "type": "library", "installation-source": "dist", "autoload": { "classmap": [ "config", "include", "tcpdf.php", "tcpdf_parser.php", "tcpdf_import.php", "tcpdf_barcodes_1d.php", "tcpdf_barcodes_2d.php", "include/tcpdf_colors.php", "include/tcpdf_filters.php", "include/tcpdf_font_data.php", "include/tcpdf_fonts.php", "include/tcpdf_images.php", "include/tcpdf_static.php", "include/barcodes/datamatrix.php", "include/barcodes/pdf417.php", "include/barcodes/qrcode.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-3.0-only" ], "authors": [ { "name": "Nicola Asuni", "email": "info@tecnick.com", "role": "lead" } ], "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", "homepage": "http://www.tcpdf.org/", "keywords": [ "PDFD32000-2008", "TCPDF", "barcodes", "datamatrix", "pdf", "pdf417", "qrcode" ] }, { "name": "twig/extensions", "version": "v1.5.4", "version_normalized": "1.5.4.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig-extensions.git", "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", "shasum": "" }, "require": { "twig/twig": "^1.27|^2.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.4", "symfony/translation": "^2.7|^3.4" }, "suggest": { "symfony/translation": "Allow the time_diff output to be translated" }, "time": "2018-12-05T18:34:18+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.5-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { "Twig_Extensions_": "lib/" }, "psr-4": { "Twig\\Extensions\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" } ], "description": "Common additional features for Twig that do not directly belong in core", "keywords": [ "i18n", "text" ], "abandoned": true }, { "name": "twig/twig", "version": "v1.42.5", "version_normalized": "1.42.5.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twigphp/Twig/zipball/87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e", "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e", "shasum": "" }, "require": { "php": ">=5.5.0", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", "symfony/phpunit-bridge": "^4.4|^5.0" }, "time": "2020-02-11T05:59:23+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.42-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { "Twig_": "lib/" }, "psr-4": { "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com", "homepage": "http://fabien.potencier.org", "role": "Lead Developer" }, { "name": "Twig Team", "role": "Contributors" }, { "name": "Armin Ronacher", "email": "armin.ronacher@active-4.com", "role": "Project Founder" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", "homepage": "https://twig.symfony.com", "keywords": [ "templating" ] } ] db/login/vendor/composer/autoload_static.php000064400000372764151502156020015275 0ustar00 __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', 'bd9634f2d41831496de0d3dfe4c94881' => __DIR__ . '/..' . '/symfony/polyfill-php56/bootstrap.php', 'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php', ); public static $prefixLengthsPsr4 = array ( 'p' => array ( 'phpseclib\\' => 10, ), 'T' => array ( 'Twig\\Extensions\\' => 16, 'Twig\\' => 5, ), 'S' => array ( 'Symfony\\Polyfill\\Util\\' => 22, 'Symfony\\Polyfill\\Php56\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, 'Symfony\\Polyfill\\Ctype\\' => 23, 'Symfony\\Component\\ExpressionLanguage\\' => 37, 'Samyoul\\U2F\\U2FServer\\' => 22, ), 'R' => array ( 'ReCaptcha\\' => 10, ), 'P' => array ( 'Psr\\Container\\' => 14, 'PragmaRX\\Google2FA\\Tests\\' => 25, 'PragmaRX\\Google2FA\\' => 19, 'PhpMyAdmin\\SqlParser\\' => 21, 'PhpMyAdmin\\ShapeFile\\' => 21, 'PhpMyAdmin\\Setup\\' => 17, 'PhpMyAdmin\\MoTranslator\\' => 24, 'PhpMyAdmin\\' => 11, 'ParagonIE\\ConstantTime\\' => 23, ), ); public static $prefixDirsPsr4 = array ( 'phpseclib\\' => array ( 0 => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib', ), 'Twig\\Extensions\\' => array ( 0 => __DIR__ . '/..' . '/twig/extensions/src', ), 'Twig\\' => array ( 0 => __DIR__ . '/..' . '/twig/twig/src', ), 'Symfony\\Polyfill\\Util\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-util', ), 'Symfony\\Polyfill\\Php56\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php56', ), 'Symfony\\Polyfill\\Mbstring\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), 'Symfony\\Polyfill\\Ctype\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', ), 'Symfony\\Component\\ExpressionLanguage\\' => array ( 0 => __DIR__ . '/..' . '/symfony/expression-language', ), 'Samyoul\\U2F\\U2FServer\\' => array ( 0 => __DIR__ . '/..' . '/samyoul/u2f-php-server/src', ), 'ReCaptcha\\' => array ( 0 => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha', ), 'Psr\\Container\\' => array ( 0 => __DIR__ . '/..' . '/psr/container/src', ), 'PragmaRX\\Google2FA\\Tests\\' => array ( 0 => __DIR__ . '/..' . '/pragmarx/google2fa/tests', ), 'PragmaRX\\Google2FA\\' => array ( 0 => __DIR__ . '/..' . '/pragmarx/google2fa/src', ), 'PhpMyAdmin\\SqlParser\\' => array ( 0 => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src', ), 'PhpMyAdmin\\ShapeFile\\' => array ( 0 => __DIR__ . '/..' . '/phpmyadmin/shapefile/src', ), 'PhpMyAdmin\\Setup\\' => array ( 0 => __DIR__ . '/../..' . '/setup/lib', ), 'PhpMyAdmin\\MoTranslator\\' => array ( 0 => __DIR__ . '/..' . '/phpmyadmin/motranslator/src', ), 'PhpMyAdmin\\' => array ( 0 => __DIR__ . '/../..' . '/libraries/classes', ), 'ParagonIE\\ConstantTime\\' => array ( 0 => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src', ), ); public static $prefixesPsr0 = array ( 'T' => array ( 'Twig_Extensions_' => array ( 0 => __DIR__ . '/..' . '/twig/extensions/lib', ), 'Twig_' => array ( 0 => __DIR__ . '/..' . '/twig/twig/lib', ), ), 'B' => array ( 'BaconQrCode' => array ( 0 => __DIR__ . '/..' . '/bacon/bacon-qr-code/src', ), ), ); public static $classMap = array ( 'BaconQrCode\\Common\\AbstractEnum' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/AbstractEnum.php', 'BaconQrCode\\Common\\BitArray' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/BitArray.php', 'BaconQrCode\\Common\\BitMatrix' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/BitMatrix.php', 'BaconQrCode\\Common\\BitUtils' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/BitUtils.php', 'BaconQrCode\\Common\\CharacterSetEci' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/CharacterSetEci.php', 'BaconQrCode\\Common\\EcBlock' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/EcBlock.php', 'BaconQrCode\\Common\\EcBlocks' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/EcBlocks.php', 'BaconQrCode\\Common\\ErrorCorrectionLevel' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/ErrorCorrectionLevel.php', 'BaconQrCode\\Common\\FormatInformation' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/FormatInformation.php', 'BaconQrCode\\Common\\Mode' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/Mode.php', 'BaconQrCode\\Common\\ReedSolomonCodec' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/ReedSolomonCodec.php', 'BaconQrCode\\Common\\Version' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Common/Version.php', 'BaconQrCode\\Encoder\\BlockPair' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/BlockPair.php', 'BaconQrCode\\Encoder\\ByteMatrix' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/ByteMatrix.php', 'BaconQrCode\\Encoder\\Encoder' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/Encoder.php', 'BaconQrCode\\Encoder\\MaskUtil' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/MaskUtil.php', 'BaconQrCode\\Encoder\\MatrixUtil' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/MatrixUtil.php', 'BaconQrCode\\Encoder\\QrCode' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Encoder/QrCode.php', 'BaconQrCode\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/ExceptionInterface.php', 'BaconQrCode\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/InvalidArgumentException.php', 'BaconQrCode\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/OutOfBoundsException.php', 'BaconQrCode\\Exception\\RuntimeException' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/RuntimeException.php', 'BaconQrCode\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/UnexpectedValueException.php', 'BaconQrCode\\Exception\\WriterException' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Exception/WriterException.php', 'BaconQrCode\\Renderer\\Color\\Cmyk' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/Cmyk.php', 'BaconQrCode\\Renderer\\Color\\ColorInterface' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/ColorInterface.php', 'BaconQrCode\\Renderer\\Color\\Gray' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/Gray.php', 'BaconQrCode\\Renderer\\Color\\Rgb' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Color/Rgb.php', 'BaconQrCode\\Renderer\\Image\\AbstractRenderer' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/AbstractRenderer.php', 'BaconQrCode\\Renderer\\Image\\Decorator\\DecoratorInterface' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Decorator/DecoratorInterface.php', 'BaconQrCode\\Renderer\\Image\\Decorator\\FinderPattern' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Decorator/FinderPattern.php', 'BaconQrCode\\Renderer\\Image\\Eps' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Eps.php', 'BaconQrCode\\Renderer\\Image\\Png' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Png.php', 'BaconQrCode\\Renderer\\Image\\RendererInterface' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/RendererInterface.php', 'BaconQrCode\\Renderer\\Image\\Svg' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/Svg.php', 'BaconQrCode\\Renderer\\RendererInterface' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/RendererInterface.php', 'BaconQrCode\\Renderer\\Text\\Html' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Text/Html.php', 'BaconQrCode\\Renderer\\Text\\Plain' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Text/Plain.php', 'BaconQrCode\\Writer' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/BaconQrCode/Writer.php', 'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', 'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php', 'ParagonIE\\ConstantTime\\Base32' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Base32.php', 'ParagonIE\\ConstantTime\\Base32Hex' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Base32Hex.php', 'ParagonIE\\ConstantTime\\Base64' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Base64.php', 'ParagonIE\\ConstantTime\\Base64DotSlash' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Base64DotSlash.php', 'ParagonIE\\ConstantTime\\Base64DotSlashOrdered' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Base64DotSlashOrdered.php', 'ParagonIE\\ConstantTime\\Base64UrlSafe' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Base64UrlSafe.php', 'ParagonIE\\ConstantTime\\Binary' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Binary.php', 'ParagonIE\\ConstantTime\\EncoderInterface' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/EncoderInterface.php', 'ParagonIE\\ConstantTime\\Encoding' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Encoding.php', 'ParagonIE\\ConstantTime\\Hex' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Hex.php', 'ParagonIE\\ConstantTime\\RFC4648' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/RFC4648.php', 'PhpMyAdmin\\Advisor' => __DIR__ . '/../..' . '/libraries/classes/Advisor.php', 'PhpMyAdmin\\Bookmark' => __DIR__ . '/../..' . '/libraries/classes/Bookmark.php', 'PhpMyAdmin\\BrowseForeigners' => __DIR__ . '/../..' . '/libraries/classes/BrowseForeigners.php', 'PhpMyAdmin\\CentralColumns' => __DIR__ . '/../..' . '/libraries/classes/CentralColumns.php', 'PhpMyAdmin\\Charsets' => __DIR__ . '/../..' . '/libraries/classes/Charsets.php', 'PhpMyAdmin\\CheckUserPrivileges' => __DIR__ . '/../..' . '/libraries/classes/CheckUserPrivileges.php', 'PhpMyAdmin\\Config' => __DIR__ . '/../..' . '/libraries/classes/Config.php', 'PhpMyAdmin\\Config\\ConfigFile' => __DIR__ . '/../..' . '/libraries/classes/Config/ConfigFile.php', 'PhpMyAdmin\\Config\\Descriptions' => __DIR__ . '/../..' . '/libraries/classes/Config/Descriptions.php', 'PhpMyAdmin\\Config\\Form' => __DIR__ . '/../..' . '/libraries/classes/Config/Form.php', 'PhpMyAdmin\\Config\\FormDisplay' => __DIR__ . '/../..' . '/libraries/classes/Config/FormDisplay.php', 'PhpMyAdmin\\Config\\FormDisplayTemplate' => __DIR__ . '/../..' . '/libraries/classes/Config/FormDisplayTemplate.php', 'PhpMyAdmin\\Config\\Forms\\BaseForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/BaseForm.php', 'PhpMyAdmin\\Config\\Forms\\BaseFormList' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/BaseFormList.php', 'PhpMyAdmin\\Config\\Forms\\Page\\BrowseForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/BrowseForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\DbStructureForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/DbStructureForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\EditForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/EditForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\ExportForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/ExportForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\ImportForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/ImportForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\NaviForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/NaviForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\PageFormList' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/PageFormList.php', 'PhpMyAdmin\\Config\\Forms\\Page\\SqlForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/SqlForm.php', 'PhpMyAdmin\\Config\\Forms\\Page\\TableStructureForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Page/TableStructureForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ConfigForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/ConfigForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ExportForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/ExportForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\FeaturesForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/FeaturesForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ImportForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/ImportForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\MainForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/MainForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\NaviForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/NaviForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\ServersForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/ServersForm.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\SetupFormList' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/SetupFormList.php', 'PhpMyAdmin\\Config\\Forms\\Setup\\SqlForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/Setup/SqlForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\ExportForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/ExportForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\FeaturesForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/FeaturesForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\ImportForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/ImportForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\MainForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/MainForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\NaviForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/NaviForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\SqlForm' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/SqlForm.php', 'PhpMyAdmin\\Config\\Forms\\User\\UserFormList' => __DIR__ . '/../..' . '/libraries/classes/Config/Forms/User/UserFormList.php', 'PhpMyAdmin\\Config\\PageSettings' => __DIR__ . '/../..' . '/libraries/classes/Config/PageSettings.php', 'PhpMyAdmin\\Config\\ServerConfigChecks' => __DIR__ . '/../..' . '/libraries/classes/Config/ServerConfigChecks.php', 'PhpMyAdmin\\Config\\Validator' => __DIR__ . '/../..' . '/libraries/classes/Config/Validator.php', 'PhpMyAdmin\\Console' => __DIR__ . '/../..' . '/libraries/classes/Console.php', 'PhpMyAdmin\\Controllers\\Controller' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Controller.php', 'PhpMyAdmin\\Controllers\\DatabaseController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/DatabaseController.php', 'PhpMyAdmin\\Controllers\\Database\\DatabaseStructureController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Database/DatabaseStructureController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerBinlogController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Server/ServerBinlogController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerCollationsController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Server/ServerCollationsController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerDatabasesController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Server/ServerDatabasesController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerEnginesController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Server/ServerEnginesController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerPluginsController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Server/ServerPluginsController.php', 'PhpMyAdmin\\Controllers\\Server\\ServerVariablesController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Server/ServerVariablesController.php', 'PhpMyAdmin\\Controllers\\TableController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/TableController.php', 'PhpMyAdmin\\Controllers\\Table\\TableChartController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Table/TableChartController.php', 'PhpMyAdmin\\Controllers\\Table\\TableGisVisualizationController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Table/TableGisVisualizationController.php', 'PhpMyAdmin\\Controllers\\Table\\TableIndexesController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Table/TableIndexesController.php', 'PhpMyAdmin\\Controllers\\Table\\TableRelationController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Table/TableRelationController.php', 'PhpMyAdmin\\Controllers\\Table\\TableSearchController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Table/TableSearchController.php', 'PhpMyAdmin\\Controllers\\Table\\TableStructureController' => __DIR__ . '/../..' . '/libraries/classes/Controllers/Table/TableStructureController.php', 'PhpMyAdmin\\Core' => __DIR__ . '/../..' . '/libraries/classes/Core.php', 'PhpMyAdmin\\CreateAddField' => __DIR__ . '/../..' . '/libraries/classes/CreateAddField.php', 'PhpMyAdmin\\DatabaseInterface' => __DIR__ . '/../..' . '/libraries/classes/DatabaseInterface.php', 'PhpMyAdmin\\Database\\DatabaseList' => __DIR__ . '/../..' . '/libraries/classes/Database/DatabaseList.php', 'PhpMyAdmin\\Database\\Designer' => __DIR__ . '/../..' . '/libraries/classes/Database/Designer.php', 'PhpMyAdmin\\Database\\Designer\\Common' => __DIR__ . '/../..' . '/libraries/classes/Database/Designer/Common.php', 'PhpMyAdmin\\Database\\Designer\\DesignerTable' => __DIR__ . '/../..' . '/libraries/classes/Database/Designer/DesignerTable.php', 'PhpMyAdmin\\Database\\MultiTableQuery' => __DIR__ . '/../..' . '/libraries/classes/Database/MultiTableQuery.php', 'PhpMyAdmin\\Database\\Qbe' => __DIR__ . '/../..' . '/libraries/classes/Database/Qbe.php', 'PhpMyAdmin\\Database\\Search' => __DIR__ . '/../..' . '/libraries/classes/Database/Search.php', 'PhpMyAdmin\\Dbi\\DbiDummy' => __DIR__ . '/../..' . '/libraries/classes/Dbi/DbiDummy.php', 'PhpMyAdmin\\Dbi\\DbiExtension' => __DIR__ . '/../..' . '/libraries/classes/Dbi/DbiExtension.php', 'PhpMyAdmin\\Dbi\\DbiMysql' => __DIR__ . '/../..' . '/libraries/classes/Dbi/DbiMysql.php', 'PhpMyAdmin\\Dbi\\DbiMysqli' => __DIR__ . '/../..' . '/libraries/classes/Dbi/DbiMysqli.php', 'PhpMyAdmin\\Di\\AliasItem' => __DIR__ . '/../..' . '/libraries/classes/Di/AliasItem.php', 'PhpMyAdmin\\Di\\Container' => __DIR__ . '/../..' . '/libraries/classes/Di/Container.php', 'PhpMyAdmin\\Di\\ContainerException' => __DIR__ . '/../..' . '/libraries/classes/Di/ContainerException.php', 'PhpMyAdmin\\Di\\FactoryItem' => __DIR__ . '/../..' . '/libraries/classes/Di/FactoryItem.php', 'PhpMyAdmin\\Di\\Item' => __DIR__ . '/../..' . '/libraries/classes/Di/Item.php', 'PhpMyAdmin\\Di\\NotFoundException' => __DIR__ . '/../..' . '/libraries/classes/Di/NotFoundException.php', 'PhpMyAdmin\\Di\\ReflectorItem' => __DIR__ . '/../..' . '/libraries/classes/Di/ReflectorItem.php', 'PhpMyAdmin\\Di\\ServiceItem' => __DIR__ . '/../..' . '/libraries/classes/Di/ServiceItem.php', 'PhpMyAdmin\\Di\\ValueItem' => __DIR__ . '/../..' . '/libraries/classes/Di/ValueItem.php', 'PhpMyAdmin\\Display\\ChangePassword' => __DIR__ . '/../..' . '/libraries/classes/Display/ChangePassword.php', 'PhpMyAdmin\\Display\\CreateTable' => __DIR__ . '/../..' . '/libraries/classes/Display/CreateTable.php', 'PhpMyAdmin\\Display\\Export' => __DIR__ . '/../..' . '/libraries/classes/Display/Export.php', 'PhpMyAdmin\\Display\\GitRevision' => __DIR__ . '/../..' . '/libraries/classes/Display/GitRevision.php', 'PhpMyAdmin\\Display\\Import' => __DIR__ . '/../..' . '/libraries/classes/Display/Import.php', 'PhpMyAdmin\\Display\\ImportAjax' => __DIR__ . '/../..' . '/libraries/classes/Display/ImportAjax.php', 'PhpMyAdmin\\Display\\Results' => __DIR__ . '/../..' . '/libraries/classes/Display/Results.php', 'PhpMyAdmin\\Encoding' => __DIR__ . '/../..' . '/libraries/classes/Encoding.php', 'PhpMyAdmin\\Engines\\Bdb' => __DIR__ . '/../..' . '/libraries/classes/Engines/Bdb.php', 'PhpMyAdmin\\Engines\\Berkeleydb' => __DIR__ . '/../..' . '/libraries/classes/Engines/Berkeleydb.php', 'PhpMyAdmin\\Engines\\Binlog' => __DIR__ . '/../..' . '/libraries/classes/Engines/Binlog.php', 'PhpMyAdmin\\Engines\\Innobase' => __DIR__ . '/../..' . '/libraries/classes/Engines/Innobase.php', 'PhpMyAdmin\\Engines\\Innodb' => __DIR__ . '/../..' . '/libraries/classes/Engines/Innodb.php', 'PhpMyAdmin\\Engines\\Memory' => __DIR__ . '/../..' . '/libraries/classes/Engines/Memory.php', 'PhpMyAdmin\\Engines\\Merge' => __DIR__ . '/../..' . '/libraries/classes/Engines/Merge.php', 'PhpMyAdmin\\Engines\\MrgMyisam' => __DIR__ . '/../..' . '/libraries/classes/Engines/MrgMyisam.php', 'PhpMyAdmin\\Engines\\Myisam' => __DIR__ . '/../..' . '/libraries/classes/Engines/Myisam.php', 'PhpMyAdmin\\Engines\\Ndbcluster' => __DIR__ . '/../..' . '/libraries/classes/Engines/Ndbcluster.php', 'PhpMyAdmin\\Engines\\Pbxt' => __DIR__ . '/../..' . '/libraries/classes/Engines/Pbxt.php', 'PhpMyAdmin\\Engines\\PerformanceSchema' => __DIR__ . '/../..' . '/libraries/classes/Engines/PerformanceSchema.php', 'PhpMyAdmin\\Error' => __DIR__ . '/../..' . '/libraries/classes/Error.php', 'PhpMyAdmin\\ErrorHandler' => __DIR__ . '/../..' . '/libraries/classes/ErrorHandler.php', 'PhpMyAdmin\\ErrorReport' => __DIR__ . '/../..' . '/libraries/classes/ErrorReport.php', 'PhpMyAdmin\\Export' => __DIR__ . '/../..' . '/libraries/classes/Export.php', 'PhpMyAdmin\\File' => __DIR__ . '/../..' . '/libraries/classes/File.php', 'PhpMyAdmin\\FileListing' => __DIR__ . '/../..' . '/libraries/classes/FileListing.php', 'PhpMyAdmin\\Font' => __DIR__ . '/../..' . '/libraries/classes/Font.php', 'PhpMyAdmin\\Footer' => __DIR__ . '/../..' . '/libraries/classes/Footer.php', 'PhpMyAdmin\\Gis\\GisFactory' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisFactory.php', 'PhpMyAdmin\\Gis\\GisGeometry' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisGeometry.php', 'PhpMyAdmin\\Gis\\GisGeometryCollection' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisGeometryCollection.php', 'PhpMyAdmin\\Gis\\GisLineString' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisLineString.php', 'PhpMyAdmin\\Gis\\GisMultiLineString' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisMultiLineString.php', 'PhpMyAdmin\\Gis\\GisMultiPoint' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisMultiPoint.php', 'PhpMyAdmin\\Gis\\GisMultiPolygon' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisMultiPolygon.php', 'PhpMyAdmin\\Gis\\GisPoint' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisPoint.php', 'PhpMyAdmin\\Gis\\GisPolygon' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisPolygon.php', 'PhpMyAdmin\\Gis\\GisVisualization' => __DIR__ . '/../..' . '/libraries/classes/Gis/GisVisualization.php', 'PhpMyAdmin\\Header' => __DIR__ . '/../..' . '/libraries/classes/Header.php', 'PhpMyAdmin\\Import' => __DIR__ . '/../..' . '/libraries/classes/Import.php', 'PhpMyAdmin\\Index' => __DIR__ . '/../..' . '/libraries/classes/Index.php', 'PhpMyAdmin\\IndexColumn' => __DIR__ . '/../..' . '/libraries/classes/IndexColumn.php', 'PhpMyAdmin\\InsertEdit' => __DIR__ . '/../..' . '/libraries/classes/InsertEdit.php', 'PhpMyAdmin\\IpAllowDeny' => __DIR__ . '/../..' . '/libraries/classes/IpAllowDeny.php', 'PhpMyAdmin\\Language' => __DIR__ . '/../..' . '/libraries/classes/Language.php', 'PhpMyAdmin\\LanguageManager' => __DIR__ . '/../..' . '/libraries/classes/LanguageManager.php', 'PhpMyAdmin\\Linter' => __DIR__ . '/../..' . '/libraries/classes/Linter.php', 'PhpMyAdmin\\ListAbstract' => __DIR__ . '/../..' . '/libraries/classes/ListAbstract.php', 'PhpMyAdmin\\ListDatabase' => __DIR__ . '/../..' . '/libraries/classes/ListDatabase.php', 'PhpMyAdmin\\Logging' => __DIR__ . '/../..' . '/libraries/classes/Logging.php', 'PhpMyAdmin\\Menu' => __DIR__ . '/../..' . '/libraries/classes/Menu.php', 'PhpMyAdmin\\Message' => __DIR__ . '/../..' . '/libraries/classes/Message.php', 'PhpMyAdmin\\Mime' => __DIR__ . '/../..' . '/libraries/classes/Mime.php', 'PhpMyAdmin\\MoTranslator\\Loader' => __DIR__ . '/..' . '/phpmyadmin/motranslator/src/Loader.php', 'PhpMyAdmin\\MoTranslator\\ReaderException' => __DIR__ . '/..' . '/phpmyadmin/motranslator/src/ReaderException.php', 'PhpMyAdmin\\MoTranslator\\StringReader' => __DIR__ . '/..' . '/phpmyadmin/motranslator/src/StringReader.php', 'PhpMyAdmin\\MoTranslator\\Translator' => __DIR__ . '/..' . '/phpmyadmin/motranslator/src/Translator.php', 'PhpMyAdmin\\MultSubmits' => __DIR__ . '/../..' . '/libraries/classes/MultSubmits.php', 'PhpMyAdmin\\Navigation\\Navigation' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Navigation.php', 'PhpMyAdmin\\Navigation\\NavigationHeader' => __DIR__ . '/../..' . '/libraries/classes/Navigation/NavigationHeader.php', 'PhpMyAdmin\\Navigation\\NavigationTree' => __DIR__ . '/../..' . '/libraries/classes/Navigation/NavigationTree.php', 'PhpMyAdmin\\Navigation\\NodeFactory' => __DIR__ . '/../..' . '/libraries/classes/Navigation/NodeFactory.php', 'PhpMyAdmin\\Navigation\\Nodes\\Node' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/Node.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeColumn' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeColumn.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeColumnContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeColumnContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabase' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeDatabase.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabaseChild' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeDatabaseChild.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabaseChildContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeDatabaseChildContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeDatabaseContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeDatabaseContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeEvent' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeEvent.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeEventContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeEventContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeFunction' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeFunction.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeFunctionContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeFunctionContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeIndex' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeIndex.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeIndexContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeIndexContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeProcedure' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeProcedure.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeProcedureContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeProcedureContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTable' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeTable.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTableContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeTableContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTrigger' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeTrigger.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeTriggerContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeTriggerContainer.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeView' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeView.php', 'PhpMyAdmin\\Navigation\\Nodes\\NodeViewContainer' => __DIR__ . '/../..' . '/libraries/classes/Navigation/Nodes/NodeViewContainer.php', 'PhpMyAdmin\\Normalization' => __DIR__ . '/../..' . '/libraries/classes/Normalization.php', 'PhpMyAdmin\\OpenDocument' => __DIR__ . '/../..' . '/libraries/classes/OpenDocument.php', 'PhpMyAdmin\\Operations' => __DIR__ . '/../..' . '/libraries/classes/Operations.php', 'PhpMyAdmin\\OutputBuffering' => __DIR__ . '/../..' . '/libraries/classes/OutputBuffering.php', 'PhpMyAdmin\\ParseAnalyze' => __DIR__ . '/../..' . '/libraries/classes/ParseAnalyze.php', 'PhpMyAdmin\\Partition' => __DIR__ . '/../..' . '/libraries/classes/Partition.php', 'PhpMyAdmin\\Pdf' => __DIR__ . '/../..' . '/libraries/classes/Pdf.php', 'PhpMyAdmin\\Plugins' => __DIR__ . '/../..' . '/libraries/classes/Plugins.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationConfig' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Auth/AuthenticationConfig.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationCookie' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Auth/AuthenticationCookie.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationHttp' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Auth/AuthenticationHttp.php', 'PhpMyAdmin\\Plugins\\Auth\\AuthenticationSignon' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Auth/AuthenticationSignon.php', 'PhpMyAdmin\\Plugins\\AuthenticationPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/AuthenticationPlugin.php', 'PhpMyAdmin\\Plugins\\ExportPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/ExportPlugin.php', 'PhpMyAdmin\\Plugins\\Export\\ExportCodegen' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportCodegen.php', 'PhpMyAdmin\\Plugins\\Export\\ExportCsv' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportCsv.php', 'PhpMyAdmin\\Plugins\\Export\\ExportExcel' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportExcel.php', 'PhpMyAdmin\\Plugins\\Export\\ExportHtmlword' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportHtmlword.php', 'PhpMyAdmin\\Plugins\\Export\\ExportJson' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportJson.php', 'PhpMyAdmin\\Plugins\\Export\\ExportLatex' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportLatex.php', 'PhpMyAdmin\\Plugins\\Export\\ExportMediawiki' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportMediawiki.php', 'PhpMyAdmin\\Plugins\\Export\\ExportOds' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportOds.php', 'PhpMyAdmin\\Plugins\\Export\\ExportOdt' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportOdt.php', 'PhpMyAdmin\\Plugins\\Export\\ExportPdf' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportPdf.php', 'PhpMyAdmin\\Plugins\\Export\\ExportPhparray' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportPhparray.php', 'PhpMyAdmin\\Plugins\\Export\\ExportSql' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportSql.php', 'PhpMyAdmin\\Plugins\\Export\\ExportTexytext' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportTexytext.php', 'PhpMyAdmin\\Plugins\\Export\\ExportXml' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportXml.php', 'PhpMyAdmin\\Plugins\\Export\\ExportYaml' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/ExportYaml.php', 'PhpMyAdmin\\Plugins\\Export\\Helpers\\Pdf' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/Helpers/Pdf.php', 'PhpMyAdmin\\Plugins\\Export\\Helpers\\TableProperty' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Export/Helpers/TableProperty.php', 'PhpMyAdmin\\Plugins\\IOTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/IOTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\ImportPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/ImportPlugin.php', 'PhpMyAdmin\\Plugins\\Import\\AbstractImportCsv' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/AbstractImportCsv.php', 'PhpMyAdmin\\Plugins\\Import\\ImportCsv' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportCsv.php', 'PhpMyAdmin\\Plugins\\Import\\ImportLdi' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportLdi.php', 'PhpMyAdmin\\Plugins\\Import\\ImportMediawiki' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportMediawiki.php', 'PhpMyAdmin\\Plugins\\Import\\ImportOds' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportOds.php', 'PhpMyAdmin\\Plugins\\Import\\ImportShp' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportShp.php', 'PhpMyAdmin\\Plugins\\Import\\ImportSql' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportSql.php', 'PhpMyAdmin\\Plugins\\Import\\ImportXml' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ImportXml.php', 'PhpMyAdmin\\Plugins\\Import\\ShapeFileImport' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/ShapeFileImport.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadApc' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/Upload/UploadApc.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadProgress' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/Upload/UploadProgress.php', 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadSession' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Import/Upload/UploadSession.php', 'PhpMyAdmin\\Plugins\\SchemaPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/SchemaPlugin.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\Dia' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Dia/Dia.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\DiaRelationSchema' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Dia/DiaRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\RelationStatsDia' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php', 'PhpMyAdmin\\Plugins\\Schema\\Dia\\TableStatsDia' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Dia/TableStatsDia.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\Eps' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Eps/Eps.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\EpsRelationSchema' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Eps/EpsRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\RelationStatsEps' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Eps/RelationStatsEps.php', 'PhpMyAdmin\\Plugins\\Schema\\Eps\\TableStatsEps' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Eps/TableStatsEps.php', 'PhpMyAdmin\\Plugins\\Schema\\ExportRelationSchema' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/ExportRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\Pdf' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Pdf/Pdf.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\PdfRelationSchema' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\RelationStatsPdf' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Pdf/RelationStatsPdf.php', 'PhpMyAdmin\\Plugins\\Schema\\Pdf\\TableStatsPdf' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Pdf/TableStatsPdf.php', 'PhpMyAdmin\\Plugins\\Schema\\RelationStats' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/RelationStats.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaDia' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/SchemaDia.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaEps' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/SchemaEps.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaPdf' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/SchemaPdf.php', 'PhpMyAdmin\\Plugins\\Schema\\SchemaSvg' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/SchemaSvg.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\RelationStatsSvg' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Svg/RelationStatsSvg.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\Svg' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Svg/Svg.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\SvgRelationSchema' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Svg/SvgRelationSchema.php', 'PhpMyAdmin\\Plugins\\Schema\\Svg\\TableStatsSvg' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php', 'PhpMyAdmin\\Plugins\\Schema\\TableStats' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Schema/TableStats.php', 'PhpMyAdmin\\Plugins\\TransformationsInterface' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TransformationsInterface.php', 'PhpMyAdmin\\Plugins\\TransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\Bool2TextTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/Bool2TextTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\CodeMirrorEditorTransformationPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/CodeMirrorEditorTransformationPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\DateFormatTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/DateFormatTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\DownloadTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/DownloadTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\ExternalTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/ExternalTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\FormattedTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/FormattedTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\HexTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/HexTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\ImageLinkTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/ImageLinkTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\ImageUploadTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/ImageUploadTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\InlineTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/InlineTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\LongToIPv4TransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/LongToIPv4TransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\PreApPendTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/PreApPendTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\RegexValidationTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/RegexValidationTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\SQLTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/SQLTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\SubstringTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/SubstringTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\TextFileUploadTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/TextFileUploadTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\TextImageLinkTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/TextImageLinkTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Abs\\TextLinkTransformationsPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Abs/TextLinkTransformationsPlugin.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Image_JPEG_Upload' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Image_JPEG_Upload.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_FileUpload' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_FileUpload.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_Iptobinary' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_Iptobinary.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_JsonEditor' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_JsonEditor.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_RegexValidation' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_RegexValidation.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_SqlEditor' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_SqlEditor.php', 'PhpMyAdmin\\Plugins\\Transformations\\Input\\Text_Plain_XmlEditor' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Input/Text_Plain_XmlEditor.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Application_Octetstream_Download' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Application_Octetstream_Download.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Application_Octetstream_Hex' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Application_Octetstream_Hex.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Image_JPEG_Inline' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Image_JPEG_Inline.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Image_JPEG_Link' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Image_JPEG_Link.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Image_PNG_Inline' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Image_PNG_Inline.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Octetstream_Sql' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Octetstream_Sql.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Binarytoip' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Binarytoip.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Bool2Text' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Bool2Text.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Dateformat' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Dateformat.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_External' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_External.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Formatted' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Formatted.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Imagelink' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Imagelink.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Json' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Json.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Sql' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Sql.php', 'PhpMyAdmin\\Plugins\\Transformations\\Output\\Text_Plain_Xml' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Output/Text_Plain_Xml.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_Link' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Text_Plain_Link.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_Longtoipv4' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Text_Plain_Longtoipv4.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_PreApPend' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Text_Plain_PreApPend.php', 'PhpMyAdmin\\Plugins\\Transformations\\Text_Plain_Substring' => __DIR__ . '/../..' . '/libraries/classes/Plugins/Transformations/Text_Plain_Substring.php', 'PhpMyAdmin\\Plugins\\TwoFactorPlugin' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TwoFactorPlugin.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Application' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TwoFactor/Application.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Invalid' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TwoFactor/Invalid.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Key' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TwoFactor/Key.php', 'PhpMyAdmin\\Plugins\\TwoFactor\\Simple' => __DIR__ . '/../..' . '/libraries/classes/Plugins/TwoFactor/Simple.php', 'PhpMyAdmin\\Plugins\\UploadInterface' => __DIR__ . '/../..' . '/libraries/classes/Plugins/UploadInterface.php', 'PhpMyAdmin\\Properties\\Options\\Groups\\OptionsPropertyMainGroup' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Groups/OptionsPropertyMainGroup.php', 'PhpMyAdmin\\Properties\\Options\\Groups\\OptionsPropertyRootGroup' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Groups/OptionsPropertyRootGroup.php', 'PhpMyAdmin\\Properties\\Options\\Groups\\OptionsPropertySubgroup' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Groups/OptionsPropertySubgroup.php', 'PhpMyAdmin\\Properties\\Options\\Items\\BoolPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/BoolPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\DocPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/DocPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\HiddenPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/HiddenPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\MessageOnlyPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/MessageOnlyPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\NumberPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/NumberPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\RadioPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/RadioPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\SelectPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/SelectPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\Items\\TextPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/Items/TextPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\OptionsPropertyGroup' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/OptionsPropertyGroup.php', 'PhpMyAdmin\\Properties\\Options\\OptionsPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/OptionsPropertyItem.php', 'PhpMyAdmin\\Properties\\Options\\OptionsPropertyOneItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Options/OptionsPropertyOneItem.php', 'PhpMyAdmin\\Properties\\Plugins\\ExportPluginProperties' => __DIR__ . '/../..' . '/libraries/classes/Properties/Plugins/ExportPluginProperties.php', 'PhpMyAdmin\\Properties\\Plugins\\ImportPluginProperties' => __DIR__ . '/../..' . '/libraries/classes/Properties/Plugins/ImportPluginProperties.php', 'PhpMyAdmin\\Properties\\Plugins\\PluginPropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/Plugins/PluginPropertyItem.php', 'PhpMyAdmin\\Properties\\Plugins\\SchemaPluginProperties' => __DIR__ . '/../..' . '/libraries/classes/Properties/Plugins/SchemaPluginProperties.php', 'PhpMyAdmin\\Properties\\PropertyItem' => __DIR__ . '/../..' . '/libraries/classes/Properties/PropertyItem.php', 'PhpMyAdmin\\RecentFavoriteTable' => __DIR__ . '/../..' . '/libraries/classes/RecentFavoriteTable.php', 'PhpMyAdmin\\Relation' => __DIR__ . '/../..' . '/libraries/classes/Relation.php', 'PhpMyAdmin\\RelationCleanup' => __DIR__ . '/../..' . '/libraries/classes/RelationCleanup.php', 'PhpMyAdmin\\Replication' => __DIR__ . '/../..' . '/libraries/classes/Replication.php', 'PhpMyAdmin\\ReplicationGui' => __DIR__ . '/../..' . '/libraries/classes/ReplicationGui.php', 'PhpMyAdmin\\Response' => __DIR__ . '/../..' . '/libraries/classes/Response.php', 'PhpMyAdmin\\Rte\\Events' => __DIR__ . '/../..' . '/libraries/classes/Rte/Events.php', 'PhpMyAdmin\\Rte\\Export' => __DIR__ . '/../..' . '/libraries/classes/Rte/Export.php', 'PhpMyAdmin\\Rte\\Footer' => __DIR__ . '/../..' . '/libraries/classes/Rte/Footer.php', 'PhpMyAdmin\\Rte\\General' => __DIR__ . '/../..' . '/libraries/classes/Rte/General.php', 'PhpMyAdmin\\Rte\\Routines' => __DIR__ . '/../..' . '/libraries/classes/Rte/Routines.php', 'PhpMyAdmin\\Rte\\RteList' => __DIR__ . '/../..' . '/libraries/classes/Rte/RteList.php', 'PhpMyAdmin\\Rte\\Triggers' => __DIR__ . '/../..' . '/libraries/classes/Rte/Triggers.php', 'PhpMyAdmin\\Rte\\Words' => __DIR__ . '/../..' . '/libraries/classes/Rte/Words.php', 'PhpMyAdmin\\Sanitize' => __DIR__ . '/../..' . '/libraries/classes/Sanitize.php', 'PhpMyAdmin\\SavedSearches' => __DIR__ . '/../..' . '/libraries/classes/SavedSearches.php', 'PhpMyAdmin\\Scripts' => __DIR__ . '/../..' . '/libraries/classes/Scripts.php', 'PhpMyAdmin\\Server\\Privileges' => __DIR__ . '/../..' . '/libraries/classes/Server/Privileges.php', 'PhpMyAdmin\\Server\\Select' => __DIR__ . '/../..' . '/libraries/classes/Server/Select.php', 'PhpMyAdmin\\Server\\Status' => __DIR__ . '/../..' . '/libraries/classes/Server/Status.php', 'PhpMyAdmin\\Server\\Status\\Advisor' => __DIR__ . '/../..' . '/libraries/classes/Server/Status/Advisor.php', 'PhpMyAdmin\\Server\\Status\\Data' => __DIR__ . '/../..' . '/libraries/classes/Server/Status/Data.php', 'PhpMyAdmin\\Server\\Status\\Monitor' => __DIR__ . '/../..' . '/libraries/classes/Server/Status/Monitor.php', 'PhpMyAdmin\\Server\\Status\\Processes' => __DIR__ . '/../..' . '/libraries/classes/Server/Status/Processes.php', 'PhpMyAdmin\\Server\\Status\\Queries' => __DIR__ . '/../..' . '/libraries/classes/Server/Status/Queries.php', 'PhpMyAdmin\\Server\\Status\\Variables' => __DIR__ . '/../..' . '/libraries/classes/Server/Status/Variables.php', 'PhpMyAdmin\\Server\\UserGroups' => __DIR__ . '/../..' . '/libraries/classes/Server/UserGroups.php', 'PhpMyAdmin\\Server\\Users' => __DIR__ . '/../..' . '/libraries/classes/Server/Users.php', 'PhpMyAdmin\\Session' => __DIR__ . '/../..' . '/libraries/classes/Session.php', 'PhpMyAdmin\\Setup\\ConfigGenerator' => __DIR__ . '/../..' . '/setup/lib/ConfigGenerator.php', 'PhpMyAdmin\\Setup\\FormProcessing' => __DIR__ . '/../..' . '/setup/lib/FormProcessing.php', 'PhpMyAdmin\\Setup\\Index' => __DIR__ . '/../..' . '/setup/lib/Index.php', 'PhpMyAdmin\\ShapeFile\\ShapeFile' => __DIR__ . '/..' . '/phpmyadmin/shapefile/src/ShapeFile.php', 'PhpMyAdmin\\ShapeFile\\ShapeRecord' => __DIR__ . '/..' . '/phpmyadmin/shapefile/src/ShapeRecord.php', 'PhpMyAdmin\\ShapeFile\\Util' => __DIR__ . '/..' . '/phpmyadmin/shapefile/src/Util.php', 'PhpMyAdmin\\Sql' => __DIR__ . '/../..' . '/libraries/classes/Sql.php', 'PhpMyAdmin\\SqlParser\\Component' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Component.php', 'PhpMyAdmin\\SqlParser\\Components\\AlterOperation' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/AlterOperation.php', 'PhpMyAdmin\\SqlParser\\Components\\Array2d' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Array2d.php', 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/ArrayObj.php', 'PhpMyAdmin\\SqlParser\\Components\\CaseExpression' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/CaseExpression.php', 'PhpMyAdmin\\SqlParser\\Components\\Condition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Condition.php', 'PhpMyAdmin\\SqlParser\\Components\\CreateDefinition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/CreateDefinition.php', 'PhpMyAdmin\\SqlParser\\Components\\DataType' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/DataType.php', 'PhpMyAdmin\\SqlParser\\Components\\Expression' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Expression.php', 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/ExpressionArray.php', 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/FunctionCall.php', 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/GroupKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\IndexHint' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/IndexHint.php', 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/IntoKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/JoinKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\Key' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Key.php', 'PhpMyAdmin\\SqlParser\\Components\\Limit' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Limit.php', 'PhpMyAdmin\\SqlParser\\Components\\LockExpression' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/LockExpression.php', 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/OptionsArray.php', 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/OrderKeyword.php', 'PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php', 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php', 'PhpMyAdmin\\SqlParser\\Components\\Reference' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/Reference.php', 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/RenameOperation.php', 'PhpMyAdmin\\SqlParser\\Components\\SetOperation' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/SetOperation.php', 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Components/UnionKeyword.php', 'PhpMyAdmin\\SqlParser\\Context' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Context.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100200' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMariaDb100300' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50100' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50500' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50600' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php', 'PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql80000' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php', 'PhpMyAdmin\\SqlParser\\Core' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Core.php', 'PhpMyAdmin\\SqlParser\\Exceptions\\LexerException' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Exceptions/LexerException.php', 'PhpMyAdmin\\SqlParser\\Exceptions\\LoaderException' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php', 'PhpMyAdmin\\SqlParser\\Exceptions\\ParserException' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Exceptions/ParserException.php', 'PhpMyAdmin\\SqlParser\\Lexer' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Lexer.php', 'PhpMyAdmin\\SqlParser\\Parser' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Parser.php', 'PhpMyAdmin\\SqlParser\\Statement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statement.php', 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/AlterStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/BackupStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/CallStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/CheckStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/CreateStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/DropStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/InsertStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/LoadStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/LockStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\MaintenanceStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\NotImplementedStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/RenameStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/RepairStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/SelectStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/SetStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/ShowStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php', 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php', 'PhpMyAdmin\\SqlParser\\Token' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Token.php', 'PhpMyAdmin\\SqlParser\\TokensList' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/TokensList.php', 'PhpMyAdmin\\SqlParser\\Translator' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Translator.php', 'PhpMyAdmin\\SqlParser\\UtfString' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/UtfString.php', 'PhpMyAdmin\\SqlParser\\Utils\\BufferedQuery' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php', 'PhpMyAdmin\\SqlParser\\Utils\\CLI' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/CLI.php', 'PhpMyAdmin\\SqlParser\\Utils\\Error' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Error.php', 'PhpMyAdmin\\SqlParser\\Utils\\Formatter' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Formatter.php', 'PhpMyAdmin\\SqlParser\\Utils\\Misc' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Misc.php', 'PhpMyAdmin\\SqlParser\\Utils\\Query' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Query.php', 'PhpMyAdmin\\SqlParser\\Utils\\Routine' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Routine.php', 'PhpMyAdmin\\SqlParser\\Utils\\Table' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Table.php', 'PhpMyAdmin\\SqlParser\\Utils\\Tokens' => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src/Utils/Tokens.php', 'PhpMyAdmin\\SqlQueryForm' => __DIR__ . '/../..' . '/libraries/classes/SqlQueryForm.php', 'PhpMyAdmin\\StorageEngine' => __DIR__ . '/../..' . '/libraries/classes/StorageEngine.php', 'PhpMyAdmin\\SubPartition' => __DIR__ . '/../..' . '/libraries/classes/SubPartition.php', 'PhpMyAdmin\\SysInfo' => __DIR__ . '/../..' . '/libraries/classes/SysInfo.php', 'PhpMyAdmin\\SysInfoBase' => __DIR__ . '/../..' . '/libraries/classes/SysInfoBase.php', 'PhpMyAdmin\\SysInfoLinux' => __DIR__ . '/../..' . '/libraries/classes/SysInfoLinux.php', 'PhpMyAdmin\\SysInfoSunOS' => __DIR__ . '/../..' . '/libraries/classes/SysInfoSunOS.php', 'PhpMyAdmin\\SysInfoWINNT' => __DIR__ . '/../..' . '/libraries/classes/SysInfoWINNT.php', 'PhpMyAdmin\\SystemDatabase' => __DIR__ . '/../..' . '/libraries/classes/SystemDatabase.php', 'PhpMyAdmin\\Table' => __DIR__ . '/../..' . '/libraries/classes/Table.php', 'PhpMyAdmin\\Template' => __DIR__ . '/../..' . '/libraries/classes/Template.php', 'PhpMyAdmin\\Theme' => __DIR__ . '/../..' . '/libraries/classes/Theme.php', 'PhpMyAdmin\\ThemeManager' => __DIR__ . '/../..' . '/libraries/classes/ThemeManager.php', 'PhpMyAdmin\\Tracker' => __DIR__ . '/../..' . '/libraries/classes/Tracker.php', 'PhpMyAdmin\\Tracking' => __DIR__ . '/../..' . '/libraries/classes/Tracking.php', 'PhpMyAdmin\\Transformations' => __DIR__ . '/../..' . '/libraries/classes/Transformations.php', 'PhpMyAdmin\\Twig\\CharsetsExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/CharsetsExtension.php', 'PhpMyAdmin\\Twig\\CoreExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/CoreExtension.php', 'PhpMyAdmin\\Twig\\I18nExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/I18nExtension.php', 'PhpMyAdmin\\Twig\\I18n\\NodeTrans' => __DIR__ . '/../..' . '/libraries/classes/Twig/I18n/NodeTrans.php', 'PhpMyAdmin\\Twig\\I18n\\TokenParserTrans' => __DIR__ . '/../..' . '/libraries/classes/Twig/I18n/TokenParserTrans.php', 'PhpMyAdmin\\Twig\\IndexExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/IndexExtension.php', 'PhpMyAdmin\\Twig\\MessageExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/MessageExtension.php', 'PhpMyAdmin\\Twig\\PartitionExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/PartitionExtension.php', 'PhpMyAdmin\\Twig\\PhpFunctionsExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/PhpFunctionsExtension.php', 'PhpMyAdmin\\Twig\\PluginsExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/PluginsExtension.php', 'PhpMyAdmin\\Twig\\RelationExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/RelationExtension.php', 'PhpMyAdmin\\Twig\\SanitizeExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/SanitizeExtension.php', 'PhpMyAdmin\\Twig\\ServerPrivilegesExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/ServerPrivilegesExtension.php', 'PhpMyAdmin\\Twig\\StorageEngineExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/StorageEngineExtension.php', 'PhpMyAdmin\\Twig\\TableExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/TableExtension.php', 'PhpMyAdmin\\Twig\\TrackerExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/TrackerExtension.php', 'PhpMyAdmin\\Twig\\TransformationsExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/TransformationsExtension.php', 'PhpMyAdmin\\Twig\\UrlExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/UrlExtension.php', 'PhpMyAdmin\\Twig\\UtilExtension' => __DIR__ . '/../..' . '/libraries/classes/Twig/UtilExtension.php', 'PhpMyAdmin\\TwoFactor' => __DIR__ . '/../..' . '/libraries/classes/TwoFactor.php', 'PhpMyAdmin\\Types' => __DIR__ . '/../..' . '/libraries/classes/Types.php', 'PhpMyAdmin\\Url' => __DIR__ . '/../..' . '/libraries/classes/Url.php', 'PhpMyAdmin\\UserPassword' => __DIR__ . '/../..' . '/libraries/classes/UserPassword.php', 'PhpMyAdmin\\UserPreferences' => __DIR__ . '/../..' . '/libraries/classes/UserPreferences.php', 'PhpMyAdmin\\Util' => __DIR__ . '/../..' . '/libraries/classes/Util.php', 'PhpMyAdmin\\Utils\\HttpRequest' => __DIR__ . '/../..' . '/libraries/classes/Utils/HttpRequest.php', 'PhpMyAdmin\\VersionInformation' => __DIR__ . '/../..' . '/libraries/classes/VersionInformation.php', 'PhpMyAdmin\\ZipExtension' => __DIR__ . '/../..' . '/libraries/classes/ZipExtension.php', 'PragmaRX\\Google2FA\\Exceptions\\IncompatibleWithGoogleAuthenticatorException' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Exceptions/IncompatibleWithGoogleAuthenticatorException.php', 'PragmaRX\\Google2FA\\Exceptions\\InsecureCallException' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Exceptions/InsecureCallException.php', 'PragmaRX\\Google2FA\\Exceptions\\InvalidCharactersException' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Exceptions/InvalidCharactersException.php', 'PragmaRX\\Google2FA\\Exceptions\\SecretKeyTooShortException' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Exceptions/SecretKeyTooShortException.php', 'PragmaRX\\Google2FA\\Google2FA' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Google2FA.php', 'PragmaRX\\Google2FA\\Support\\Base32' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Support/Base32.php', 'PragmaRX\\Google2FA\\Support\\Constants' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Support/Constants.php', 'PragmaRX\\Google2FA\\Support\\QRCode' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Support/QRCode.php', 'PragmaRX\\Google2FA\\Support\\Url' => __DIR__ . '/..' . '/pragmarx/google2fa/src/Support/Url.php', 'PragmaRX\\Google2FA\\Tests\\Constants' => __DIR__ . '/..' . '/pragmarx/google2fa/tests/Constants.php', 'PragmaRX\\Google2FA\\Tests\\Google2FATest' => __DIR__ . '/..' . '/pragmarx/google2fa/tests/Google2FATest.php', 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', 'QRcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/qrcode.php', 'ReCaptcha\\ReCaptcha' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/ReCaptcha.php', 'ReCaptcha\\RequestMethod' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod.php', 'ReCaptcha\\RequestMethod\\Curl' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php', 'ReCaptcha\\RequestMethod\\CurlPost' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php', 'ReCaptcha\\RequestMethod\\Post' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php', 'ReCaptcha\\RequestMethod\\Socket' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php', 'ReCaptcha\\RequestMethod\\SocketPost' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php', 'ReCaptcha\\RequestParameters' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestParameters.php', 'ReCaptcha\\Response' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/Response.php', 'Samyoul\\U2F\\U2FServer\\Registration' => __DIR__ . '/..' . '/samyoul/u2f-php-server/src/Registration.php', 'Samyoul\\U2F\\U2FServer\\RegistrationRequest' => __DIR__ . '/..' . '/samyoul/u2f-php-server/src/RegistrationRequest.php', 'Samyoul\\U2F\\U2FServer\\SignRequest' => __DIR__ . '/..' . '/samyoul/u2f-php-server/src/SignRequest.php', 'Samyoul\\U2F\\U2FServer\\U2FException' => __DIR__ . '/..' . '/samyoul/u2f-php-server/src/U2FException.php', 'Samyoul\\U2F\\U2FServer\\U2FServer' => __DIR__ . '/..' . '/samyoul/u2f-php-server/src/U2FServer.php', 'Symfony\\Component\\ExpressionLanguage\\Compiler' => __DIR__ . '/..' . '/symfony/expression-language/Compiler.php', 'Symfony\\Component\\ExpressionLanguage\\Expression' => __DIR__ . '/..' . '/symfony/expression-language/Expression.php', 'Symfony\\Component\\ExpressionLanguage\\ExpressionFunction' => __DIR__ . '/..' . '/symfony/expression-language/ExpressionFunction.php', 'Symfony\\Component\\ExpressionLanguage\\ExpressionFunctionProviderInterface' => __DIR__ . '/..' . '/symfony/expression-language/ExpressionFunctionProviderInterface.php', 'Symfony\\Component\\ExpressionLanguage\\ExpressionLanguage' => __DIR__ . '/..' . '/symfony/expression-language/ExpressionLanguage.php', 'Symfony\\Component\\ExpressionLanguage\\Lexer' => __DIR__ . '/..' . '/symfony/expression-language/Lexer.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ArgumentsNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/ArgumentsNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ArrayNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/ArrayNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\BinaryNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/BinaryNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ConditionalNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/ConditionalNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\ConstantNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/ConstantNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\FunctionNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/FunctionNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\GetAttrNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/GetAttrNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\NameNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/NameNode.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\Node' => __DIR__ . '/..' . '/symfony/expression-language/Node/Node.php', 'Symfony\\Component\\ExpressionLanguage\\Node\\UnaryNode' => __DIR__ . '/..' . '/symfony/expression-language/Node/UnaryNode.php', 'Symfony\\Component\\ExpressionLanguage\\ParsedExpression' => __DIR__ . '/..' . '/symfony/expression-language/ParsedExpression.php', 'Symfony\\Component\\ExpressionLanguage\\Parser' => __DIR__ . '/..' . '/symfony/expression-language/Parser.php', 'Symfony\\Component\\ExpressionLanguage\\ParserCache\\ArrayParserCache' => __DIR__ . '/..' . '/symfony/expression-language/ParserCache/ArrayParserCache.php', 'Symfony\\Component\\ExpressionLanguage\\ParserCache\\ParserCacheInterface' => __DIR__ . '/..' . '/symfony/expression-language/ParserCache/ParserCacheInterface.php', 'Symfony\\Component\\ExpressionLanguage\\SerializedParsedExpression' => __DIR__ . '/..' . '/symfony/expression-language/SerializedParsedExpression.php', 'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => __DIR__ . '/..' . '/symfony/expression-language/SyntaxError.php', 'Symfony\\Component\\ExpressionLanguage\\Token' => __DIR__ . '/..' . '/symfony/expression-language/Token.php', 'Symfony\\Component\\ExpressionLanguage\\TokenStream' => __DIR__ . '/..' . '/symfony/expression-language/TokenStream.php', 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', 'Symfony\\Polyfill\\Php56\\Php56' => __DIR__ . '/..' . '/symfony/polyfill-php56/Php56.php', 'Symfony\\Polyfill\\Util\\Binary' => __DIR__ . '/..' . '/symfony/polyfill-util/Binary.php', 'Symfony\\Polyfill\\Util\\BinaryNoFuncOverload' => __DIR__ . '/..' . '/symfony/polyfill-util/BinaryNoFuncOverload.php', 'Symfony\\Polyfill\\Util\\BinaryOnFuncOverload' => __DIR__ . '/..' . '/symfony/polyfill-util/BinaryOnFuncOverload.php', 'Symfony\\Polyfill\\Util\\TestListener' => __DIR__ . '/..' . '/symfony/polyfill-util/TestListener.php', 'Symfony\\Polyfill\\Util\\TestListenerForV5' => __DIR__ . '/..' . '/symfony/polyfill-util/TestListenerForV5.php', 'Symfony\\Polyfill\\Util\\TestListenerForV6' => __DIR__ . '/..' . '/symfony/polyfill-util/TestListenerForV6.php', 'Symfony\\Polyfill\\Util\\TestListenerForV7' => __DIR__ . '/..' . '/symfony/polyfill-util/TestListenerForV7.php', 'Symfony\\Polyfill\\Util\\TestListenerTrait' => __DIR__ . '/..' . '/symfony/polyfill-util/TestListenerTrait.php', 'TCPDF' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf.php', 'TCPDF2DBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php', 'TCPDFBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_1d.php', 'TCPDF_COLORS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_colors.php', 'TCPDF_FILTERS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_filters.php', 'TCPDF_FONTS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_fonts.php', 'TCPDF_FONT_DATA' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_font_data.php', 'TCPDF_IMAGES' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_images.php', 'TCPDF_IMPORT' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_import.php', 'TCPDF_PARSER' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_parser.php', 'TCPDF_STATIC' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_static.php', 'Twig\\Cache\\CacheInterface' => __DIR__ . '/..' . '/twig/twig/src/Cache/CacheInterface.php', 'Twig\\Cache\\FilesystemCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/FilesystemCache.php', 'Twig\\Cache\\NullCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/NullCache.php', 'Twig\\Compiler' => __DIR__ . '/..' . '/twig/twig/src/Compiler.php', 'Twig\\Environment' => __DIR__ . '/..' . '/twig/twig/src/Environment.php', 'Twig\\Error\\Error' => __DIR__ . '/..' . '/twig/twig/src/Error/Error.php', 'Twig\\Error\\LoaderError' => __DIR__ . '/..' . '/twig/twig/src/Error/LoaderError.php', 'Twig\\Error\\RuntimeError' => __DIR__ . '/..' . '/twig/twig/src/Error/RuntimeError.php', 'Twig\\Error\\SyntaxError' => __DIR__ . '/..' . '/twig/twig/src/Error/SyntaxError.php', 'Twig\\ExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser.php', 'Twig\\Extension\\AbstractExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/AbstractExtension.php', 'Twig\\Extension\\CoreExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/CoreExtension.php', 'Twig\\Extension\\DebugExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/DebugExtension.php', 'Twig\\Extension\\EscaperExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/EscaperExtension.php', 'Twig\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/ExtensionInterface.php', 'Twig\\Extension\\GlobalsInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/GlobalsInterface.php', 'Twig\\Extension\\InitRuntimeInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/InitRuntimeInterface.php', 'Twig\\Extension\\OptimizerExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/OptimizerExtension.php', 'Twig\\Extension\\ProfilerExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/ProfilerExtension.php', 'Twig\\Extension\\RuntimeExtensionInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/RuntimeExtensionInterface.php', 'Twig\\Extension\\SandboxExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/SandboxExtension.php', 'Twig\\Extension\\StagingExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/StagingExtension.php', 'Twig\\Extension\\StringLoaderExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/StringLoaderExtension.php', 'Twig\\Extensions\\ArrayExtension' => __DIR__ . '/..' . '/twig/extensions/src/ArrayExtension.php', 'Twig\\Extensions\\DateExtension' => __DIR__ . '/..' . '/twig/extensions/src/DateExtension.php', 'Twig\\Extensions\\I18nExtension' => __DIR__ . '/..' . '/twig/extensions/src/I18nExtension.php', 'Twig\\Extensions\\IntlExtension' => __DIR__ . '/..' . '/twig/extensions/src/IntlExtension.php', 'Twig\\Extensions\\Node\\TransNode' => __DIR__ . '/..' . '/twig/extensions/src/Node/TransNode.php', 'Twig\\Extensions\\TextExtension' => __DIR__ . '/..' . '/twig/extensions/src/TextExtension.php', 'Twig\\Extensions\\TokenParser\\TransTokenParser' => __DIR__ . '/..' . '/twig/extensions/src/TokenParser/TransTokenParser.php', 'Twig\\FileExtensionEscapingStrategy' => __DIR__ . '/..' . '/twig/twig/src/FileExtensionEscapingStrategy.php', 'Twig\\Lexer' => __DIR__ . '/..' . '/twig/twig/src/Lexer.php', 'Twig\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/ArrayLoader.php', 'Twig\\Loader\\ChainLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/ChainLoader.php', 'Twig\\Loader\\ExistsLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/Loader/ExistsLoaderInterface.php', 'Twig\\Loader\\FilesystemLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/FilesystemLoader.php', 'Twig\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/Loader/LoaderInterface.php', 'Twig\\Loader\\SourceContextLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/Loader/SourceContextLoaderInterface.php', 'Twig\\Markup' => __DIR__ . '/..' . '/twig/twig/src/Markup.php', 'Twig\\NodeTraverser' => __DIR__ . '/..' . '/twig/twig/src/NodeTraverser.php', 'Twig\\NodeVisitor\\AbstractNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php', 'Twig\\NodeVisitor\\EscaperNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php', 'Twig\\NodeVisitor\\NodeVisitorInterface' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php', 'Twig\\NodeVisitor\\OptimizerNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php', 'Twig\\NodeVisitor\\SafeAnalysisNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php', 'Twig\\NodeVisitor\\SandboxNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php', 'Twig\\Node\\AutoEscapeNode' => __DIR__ . '/..' . '/twig/twig/src/Node/AutoEscapeNode.php', 'Twig\\Node\\BlockNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BlockNode.php', 'Twig\\Node\\BlockReferenceNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BlockReferenceNode.php', 'Twig\\Node\\BodyNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BodyNode.php', 'Twig\\Node\\CheckSecurityNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CheckSecurityNode.php', 'Twig\\Node\\CheckToStringNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CheckToStringNode.php', 'Twig\\Node\\DeprecatedNode' => __DIR__ . '/..' . '/twig/twig/src/Node/DeprecatedNode.php', 'Twig\\Node\\DoNode' => __DIR__ . '/..' . '/twig/twig/src/Node/DoNode.php', 'Twig\\Node\\EmbedNode' => __DIR__ . '/..' . '/twig/twig/src/Node/EmbedNode.php', 'Twig\\Node\\Expression\\AbstractExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/AbstractExpression.php', 'Twig\\Node\\Expression\\ArrayExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ArrayExpression.php', 'Twig\\Node\\Expression\\ArrowFunctionExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ArrowFunctionExpression.php', 'Twig\\Node\\Expression\\AssignNameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/AssignNameExpression.php', 'Twig\\Node\\Expression\\Binary\\AbstractBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/AbstractBinary.php', 'Twig\\Node\\Expression\\Binary\\AddBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/AddBinary.php', 'Twig\\Node\\Expression\\Binary\\AndBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/AndBinary.php', 'Twig\\Node\\Expression\\Binary\\BitwiseAndBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php', 'Twig\\Node\\Expression\\Binary\\BitwiseOrBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php', 'Twig\\Node\\Expression\\Binary\\BitwiseXorBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php', 'Twig\\Node\\Expression\\Binary\\ConcatBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/ConcatBinary.php', 'Twig\\Node\\Expression\\Binary\\DivBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/DivBinary.php', 'Twig\\Node\\Expression\\Binary\\EndsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php', 'Twig\\Node\\Expression\\Binary\\EqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/EqualBinary.php', 'Twig\\Node\\Expression\\Binary\\FloorDivBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php', 'Twig\\Node\\Expression\\Binary\\GreaterBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/GreaterBinary.php', 'Twig\\Node\\Expression\\Binary\\GreaterEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\InBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/InBinary.php', 'Twig\\Node\\Expression\\Binary\\LessBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/LessBinary.php', 'Twig\\Node\\Expression\\Binary\\LessEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\MatchesBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/MatchesBinary.php', 'Twig\\Node\\Expression\\Binary\\ModBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/ModBinary.php', 'Twig\\Node\\Expression\\Binary\\MulBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/MulBinary.php', 'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\NotInBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php', 'Twig\\Node\\Expression\\Binary\\OrBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/OrBinary.php', 'Twig\\Node\\Expression\\Binary\\PowerBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php', 'Twig\\Node\\Expression\\Binary\\RangeBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php', 'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php', 'Twig\\Node\\Expression\\Binary\\SubBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SubBinary.php', 'Twig\\Node\\Expression\\BlockReferenceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/BlockReferenceExpression.php', 'Twig\\Node\\Expression\\CallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/CallExpression.php', 'Twig\\Node\\Expression\\ConditionalExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConditionalExpression.php', 'Twig\\Node\\Expression\\ConstantExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConstantExpression.php', 'Twig\\Node\\Expression\\FilterExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FilterExpression.php', 'Twig\\Node\\Expression\\Filter\\DefaultFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php', 'Twig\\Node\\Expression\\FunctionExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FunctionExpression.php', 'Twig\\Node\\Expression\\GetAttrExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/GetAttrExpression.php', 'Twig\\Node\\Expression\\InlinePrint' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/InlinePrint.php', 'Twig\\Node\\Expression\\MethodCallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/MethodCallExpression.php', 'Twig\\Node\\Expression\\NameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/NameExpression.php', 'Twig\\Node\\Expression\\NullCoalesceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/NullCoalesceExpression.php', 'Twig\\Node\\Expression\\ParentExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ParentExpression.php', 'Twig\\Node\\Expression\\TempNameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/TempNameExpression.php', 'Twig\\Node\\Expression\\TestExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/TestExpression.php', 'Twig\\Node\\Expression\\Test\\ConstantTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/ConstantTest.php', 'Twig\\Node\\Expression\\Test\\DefinedTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/DefinedTest.php', 'Twig\\Node\\Expression\\Test\\DivisiblebyTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php', 'Twig\\Node\\Expression\\Test\\EvenTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/EvenTest.php', 'Twig\\Node\\Expression\\Test\\NullTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/NullTest.php', 'Twig\\Node\\Expression\\Test\\OddTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/OddTest.php', 'Twig\\Node\\Expression\\Test\\SameasTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/SameasTest.php', 'Twig\\Node\\Expression\\Unary\\AbstractUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/AbstractUnary.php', 'Twig\\Node\\Expression\\Unary\\NegUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/NegUnary.php', 'Twig\\Node\\Expression\\Unary\\NotUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/NotUnary.php', 'Twig\\Node\\Expression\\Unary\\PosUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/PosUnary.php', 'Twig\\Node\\FlushNode' => __DIR__ . '/..' . '/twig/twig/src/Node/FlushNode.php', 'Twig\\Node\\ForLoopNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ForLoopNode.php', 'Twig\\Node\\ForNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ForNode.php', 'Twig\\Node\\IfNode' => __DIR__ . '/..' . '/twig/twig/src/Node/IfNode.php', 'Twig\\Node\\ImportNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ImportNode.php', 'Twig\\Node\\IncludeNode' => __DIR__ . '/..' . '/twig/twig/src/Node/IncludeNode.php', 'Twig\\Node\\MacroNode' => __DIR__ . '/..' . '/twig/twig/src/Node/MacroNode.php', 'Twig\\Node\\ModuleNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ModuleNode.php', 'Twig\\Node\\Node' => __DIR__ . '/..' . '/twig/twig/src/Node/Node.php', 'Twig\\Node\\NodeCaptureInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/NodeCaptureInterface.php', 'Twig\\Node\\NodeOutputInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/NodeOutputInterface.php', 'Twig\\Node\\PrintNode' => __DIR__ . '/..' . '/twig/twig/src/Node/PrintNode.php', 'Twig\\Node\\SandboxNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SandboxNode.php', 'Twig\\Node\\SandboxedPrintNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SandboxedPrintNode.php', 'Twig\\Node\\SetNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SetNode.php', 'Twig\\Node\\SetTempNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SetTempNode.php', 'Twig\\Node\\SpacelessNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SpacelessNode.php', 'Twig\\Node\\TextNode' => __DIR__ . '/..' . '/twig/twig/src/Node/TextNode.php', 'Twig\\Node\\WithNode' => __DIR__ . '/..' . '/twig/twig/src/Node/WithNode.php', 'Twig\\Parser' => __DIR__ . '/..' . '/twig/twig/src/Parser.php', 'Twig\\Profiler\\Dumper\\BaseDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/BaseDumper.php', 'Twig\\Profiler\\Dumper\\BlackfireDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/BlackfireDumper.php', 'Twig\\Profiler\\Dumper\\HtmlDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/HtmlDumper.php', 'Twig\\Profiler\\Dumper\\TextDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/TextDumper.php', 'Twig\\Profiler\\NodeVisitor\\ProfilerNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php', 'Twig\\Profiler\\Node\\EnterProfileNode' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Node/EnterProfileNode.php', 'Twig\\Profiler\\Node\\LeaveProfileNode' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Node/LeaveProfileNode.php', 'Twig\\Profiler\\Profile' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Profile.php', 'Twig\\RuntimeLoader\\ContainerRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php', 'Twig\\RuntimeLoader\\FactoryRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php', 'Twig\\RuntimeLoader\\RuntimeLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php', 'Twig\\Sandbox\\SecurityError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityError.php', 'Twig\\Sandbox\\SecurityNotAllowedFilterError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php', 'Twig\\Sandbox\\SecurityNotAllowedFunctionError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php', 'Twig\\Sandbox\\SecurityNotAllowedMethodError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php', 'Twig\\Sandbox\\SecurityNotAllowedPropertyError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php', 'Twig\\Sandbox\\SecurityNotAllowedTagError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php', 'Twig\\Sandbox\\SecurityPolicy' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityPolicy.php', 'Twig\\Sandbox\\SecurityPolicyInterface' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityPolicyInterface.php', 'Twig\\Source' => __DIR__ . '/..' . '/twig/twig/src/Source.php', 'Twig\\Template' => __DIR__ . '/..' . '/twig/twig/src/Template.php', 'Twig\\TemplateWrapper' => __DIR__ . '/..' . '/twig/twig/src/TemplateWrapper.php', 'Twig\\Test\\IntegrationTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/IntegrationTestCase.php', 'Twig\\Test\\NodeTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/NodeTestCase.php', 'Twig\\Token' => __DIR__ . '/..' . '/twig/twig/src/Token.php', 'Twig\\TokenParser\\AbstractTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/AbstractTokenParser.php', 'Twig\\TokenParser\\ApplyTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ApplyTokenParser.php', 'Twig\\TokenParser\\AutoEscapeTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/AutoEscapeTokenParser.php', 'Twig\\TokenParser\\BlockTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/BlockTokenParser.php', 'Twig\\TokenParser\\DeprecatedTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/DeprecatedTokenParser.php', 'Twig\\TokenParser\\DoTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/DoTokenParser.php', 'Twig\\TokenParser\\EmbedTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/EmbedTokenParser.php', 'Twig\\TokenParser\\ExtendsTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ExtendsTokenParser.php', 'Twig\\TokenParser\\FilterTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FilterTokenParser.php', 'Twig\\TokenParser\\FlushTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FlushTokenParser.php', 'Twig\\TokenParser\\ForTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ForTokenParser.php', 'Twig\\TokenParser\\FromTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FromTokenParser.php', 'Twig\\TokenParser\\IfTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/IfTokenParser.php', 'Twig\\TokenParser\\ImportTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ImportTokenParser.php', 'Twig\\TokenParser\\IncludeTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/IncludeTokenParser.php', 'Twig\\TokenParser\\MacroTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/MacroTokenParser.php', 'Twig\\TokenParser\\SandboxTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SandboxTokenParser.php', 'Twig\\TokenParser\\SetTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SetTokenParser.php', 'Twig\\TokenParser\\SpacelessTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SpacelessTokenParser.php', 'Twig\\TokenParser\\TokenParserInterface' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/TokenParserInterface.php', 'Twig\\TokenParser\\UseTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/UseTokenParser.php', 'Twig\\TokenParser\\WithTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/WithTokenParser.php', 'Twig\\TokenStream' => __DIR__ . '/..' . '/twig/twig/src/TokenStream.php', 'Twig\\TwigFilter' => __DIR__ . '/..' . '/twig/twig/src/TwigFilter.php', 'Twig\\TwigFunction' => __DIR__ . '/..' . '/twig/twig/src/TwigFunction.php', 'Twig\\TwigTest' => __DIR__ . '/..' . '/twig/twig/src/TwigTest.php', 'Twig\\Util\\DeprecationCollector' => __DIR__ . '/..' . '/twig/twig/src/Util/DeprecationCollector.php', 'Twig\\Util\\TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/src/Util/TemplateDirIterator.php', 'Twig_Autoloader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Autoloader.php', 'Twig_BaseNodeVisitor' => __DIR__ . '/..' . '/twig/twig/lib/Twig/BaseNodeVisitor.php', 'Twig_CacheInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/CacheInterface.php', 'Twig_Cache_Filesystem' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Cache/Filesystem.php', 'Twig_Cache_Null' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Cache/Null.php', 'Twig_Compiler' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Compiler.php', 'Twig_CompilerInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/CompilerInterface.php', 'Twig_ContainerRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ContainerRuntimeLoader.php', 'Twig_Environment' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Environment.php', 'Twig_Error' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error.php', 'Twig_Error_Loader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error/Loader.php', 'Twig_Error_Runtime' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error/Runtime.php', 'Twig_Error_Syntax' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error/Syntax.php', 'Twig_ExistsLoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ExistsLoaderInterface.php', 'Twig_ExpressionParser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ExpressionParser.php', 'Twig_Extension' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension.php', 'Twig_ExtensionInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ExtensionInterface.php', 'Twig_Extension_Core' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Core.php', 'Twig_Extension_Debug' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Debug.php', 'Twig_Extension_Escaper' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Escaper.php', 'Twig_Extension_GlobalsInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/GlobalsInterface.php', 'Twig_Extension_InitRuntimeInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php', 'Twig_Extension_Optimizer' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Optimizer.php', 'Twig_Extension_Profiler' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Profiler.php', 'Twig_Extension_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Sandbox.php', 'Twig_Extension_Staging' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Staging.php', 'Twig_Extension_StringLoader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/StringLoader.php', 'Twig_Extensions_Autoloader' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Autoloader.php', 'Twig_Extensions_Extension_Array' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Extension/Array.php', 'Twig_Extensions_Extension_Date' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Extension/Date.php', 'Twig_Extensions_Extension_I18n' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Extension/I18n.php', 'Twig_Extensions_Extension_Intl' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Extension/Intl.php', 'Twig_Extensions_Extension_Text' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Extension/Text.php', 'Twig_Extensions_Grammar' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar.php', 'Twig_Extensions_GrammarInterface' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/GrammarInterface.php', 'Twig_Extensions_Grammar_Arguments' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php', 'Twig_Extensions_Grammar_Array' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Array.php', 'Twig_Extensions_Grammar_Body' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Body.php', 'Twig_Extensions_Grammar_Boolean' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Boolean.php', 'Twig_Extensions_Grammar_Constant' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php', 'Twig_Extensions_Grammar_Expression' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php', 'Twig_Extensions_Grammar_Hash' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php', 'Twig_Extensions_Grammar_Number' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Number.php', 'Twig_Extensions_Grammar_Optional' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php', 'Twig_Extensions_Grammar_Switch' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php', 'Twig_Extensions_Grammar_Tag' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php', 'Twig_Extensions_Node_Trans' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/Node/Trans.php', 'Twig_Extensions_SimpleTokenParser' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php', 'Twig_Extensions_TokenParser_Trans' => __DIR__ . '/..' . '/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php', 'Twig_FactoryRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FactoryRuntimeLoader.php', 'Twig_FileExtensionEscapingStrategy' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php', 'Twig_Filter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter.php', 'Twig_FilterCallableInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FilterCallableInterface.php', 'Twig_FilterInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FilterInterface.php', 'Twig_Filter_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter/Function.php', 'Twig_Filter_Method' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter/Method.php', 'Twig_Filter_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter/Node.php', 'Twig_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function.php', 'Twig_FunctionCallableInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FunctionCallableInterface.php', 'Twig_FunctionInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FunctionInterface.php', 'Twig_Function_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function/Function.php', 'Twig_Function_Method' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function/Method.php', 'Twig_Function_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function/Node.php', 'Twig_Lexer' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Lexer.php', 'Twig_LexerInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/LexerInterface.php', 'Twig_LoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/LoaderInterface.php', 'Twig_Loader_Array' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/Array.php', 'Twig_Loader_Chain' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/Chain.php', 'Twig_Loader_Filesystem' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/Filesystem.php', 'Twig_Loader_String' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/String.php', 'Twig_Markup' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Markup.php', 'Twig_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node.php', 'Twig_NodeCaptureInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeCaptureInterface.php', 'Twig_NodeInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeInterface.php', 'Twig_NodeOutputInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeOutputInterface.php', 'Twig_NodeTraverser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeTraverser.php', 'Twig_NodeVisitorInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitorInterface.php', 'Twig_NodeVisitor_Escaper' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/Escaper.php', 'Twig_NodeVisitor_Optimizer' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/Optimizer.php', 'Twig_NodeVisitor_SafeAnalysis' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php', 'Twig_NodeVisitor_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/Sandbox.php', 'Twig_Node_AutoEscape' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/AutoEscape.php', 'Twig_Node_Block' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Block.php', 'Twig_Node_BlockReference' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/BlockReference.php', 'Twig_Node_Body' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Body.php', 'Twig_Node_CheckSecurity' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/CheckSecurity.php', 'Twig_Node_Deprecated' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Deprecated.php', 'Twig_Node_Do' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Do.php', 'Twig_Node_Embed' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Embed.php', 'Twig_Node_Expression' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression.php', 'Twig_Node_Expression_Array' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Array.php', 'Twig_Node_Expression_AssignName' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/AssignName.php', 'Twig_Node_Expression_Binary' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary.php', 'Twig_Node_Expression_Binary_Add' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Add.php', 'Twig_Node_Expression_Binary_And' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/And.php', 'Twig_Node_Expression_Binary_BitwiseAnd' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php', 'Twig_Node_Expression_Binary_BitwiseOr' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php', 'Twig_Node_Expression_Binary_BitwiseXor' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php', 'Twig_Node_Expression_Binary_Concat' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php', 'Twig_Node_Expression_Binary_Div' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Div.php', 'Twig_Node_Expression_Binary_EndsWith' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php', 'Twig_Node_Expression_Binary_Equal' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php', 'Twig_Node_Expression_Binary_FloorDiv' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php', 'Twig_Node_Expression_Binary_Greater' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php', 'Twig_Node_Expression_Binary_GreaterEqual' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php', 'Twig_Node_Expression_Binary_In' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/In.php', 'Twig_Node_Expression_Binary_Less' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Less.php', 'Twig_Node_Expression_Binary_LessEqual' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php', 'Twig_Node_Expression_Binary_Matches' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php', 'Twig_Node_Expression_Binary_Mod' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php', 'Twig_Node_Expression_Binary_Mul' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php', 'Twig_Node_Expression_Binary_NotEqual' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php', 'Twig_Node_Expression_Binary_NotIn' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php', 'Twig_Node_Expression_Binary_Or' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Or.php', 'Twig_Node_Expression_Binary_Power' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Power.php', 'Twig_Node_Expression_Binary_Range' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Range.php', 'Twig_Node_Expression_Binary_StartsWith' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php', 'Twig_Node_Expression_Binary_Sub' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php', 'Twig_Node_Expression_BlockReference' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/BlockReference.php', 'Twig_Node_Expression_Call' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Call.php', 'Twig_Node_Expression_Conditional' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Conditional.php', 'Twig_Node_Expression_Constant' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Constant.php', 'Twig_Node_Expression_ExtensionReference' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php', 'Twig_Node_Expression_Filter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Filter.php', 'Twig_Node_Expression_Filter_Default' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Filter/Default.php', 'Twig_Node_Expression_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Function.php', 'Twig_Node_Expression_GetAttr' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/GetAttr.php', 'Twig_Node_Expression_MethodCall' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/MethodCall.php', 'Twig_Node_Expression_Name' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Name.php', 'Twig_Node_Expression_NullCoalesce' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php', 'Twig_Node_Expression_Parent' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Parent.php', 'Twig_Node_Expression_TempName' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/TempName.php', 'Twig_Node_Expression_Test' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test.php', 'Twig_Node_Expression_Test_Constant' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Constant.php', 'Twig_Node_Expression_Test_Defined' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Defined.php', 'Twig_Node_Expression_Test_Divisibleby' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php', 'Twig_Node_Expression_Test_Even' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Even.php', 'Twig_Node_Expression_Test_Null' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Null.php', 'Twig_Node_Expression_Test_Odd' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Odd.php', 'Twig_Node_Expression_Test_Sameas' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php', 'Twig_Node_Expression_Unary' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary.php', 'Twig_Node_Expression_Unary_Neg' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php', 'Twig_Node_Expression_Unary_Not' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary/Not.php', 'Twig_Node_Expression_Unary_Pos' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php', 'Twig_Node_Flush' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Flush.php', 'Twig_Node_For' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/For.php', 'Twig_Node_ForLoop' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/ForLoop.php', 'Twig_Node_If' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/If.php', 'Twig_Node_Import' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Import.php', 'Twig_Node_Include' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Include.php', 'Twig_Node_Macro' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Macro.php', 'Twig_Node_Module' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Module.php', 'Twig_Node_Print' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Print.php', 'Twig_Node_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Sandbox.php', 'Twig_Node_SandboxedPrint' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/SandboxedPrint.php', 'Twig_Node_Set' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Set.php', 'Twig_Node_SetTemp' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/SetTemp.php', 'Twig_Node_Spaceless' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Spaceless.php', 'Twig_Node_Text' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Text.php', 'Twig_Node_With' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/With.php', 'Twig_Parser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Parser.php', 'Twig_ParserInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ParserInterface.php', 'Twig_Profiler_Dumper_Base' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Base.php', 'Twig_Profiler_Dumper_Blackfire' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php', 'Twig_Profiler_Dumper_Html' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Html.php', 'Twig_Profiler_Dumper_Text' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Text.php', 'Twig_Profiler_NodeVisitor_Profiler' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php', 'Twig_Profiler_Node_EnterProfile' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php', 'Twig_Profiler_Node_LeaveProfile' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php', 'Twig_Profiler_Profile' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Profile.php', 'Twig_RuntimeLoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/RuntimeLoaderInterface.php', 'Twig_Sandbox_SecurityError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityError.php', 'Twig_Sandbox_SecurityNotAllowedFilterError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php', 'Twig_Sandbox_SecurityNotAllowedFunctionError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php', 'Twig_Sandbox_SecurityNotAllowedMethodError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php', 'Twig_Sandbox_SecurityNotAllowedPropertyError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php', 'Twig_Sandbox_SecurityNotAllowedTagError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php', 'Twig_Sandbox_SecurityPolicy' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php', 'Twig_Sandbox_SecurityPolicyInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php', 'Twig_SimpleFilter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SimpleFilter.php', 'Twig_SimpleFunction' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SimpleFunction.php', 'Twig_SimpleTest' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SimpleTest.php', 'Twig_Source' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Source.php', 'Twig_SourceContextLoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SourceContextLoaderInterface.php', 'Twig_Template' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Template.php', 'Twig_TemplateInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TemplateInterface.php', 'Twig_TemplateWrapper' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TemplateWrapper.php', 'Twig_Test' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test.php', 'Twig_TestCallableInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TestCallableInterface.php', 'Twig_TestInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TestInterface.php', 'Twig_Test_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/Function.php', 'Twig_Test_IntegrationTestCase' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/IntegrationTestCase.php', 'Twig_Test_Method' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/Method.php', 'Twig_Test_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/Node.php', 'Twig_Test_NodeTestCase' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/NodeTestCase.php', 'Twig_Token' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Token.php', 'Twig_TokenParser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser.php', 'Twig_TokenParserBroker' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParserBroker.php', 'Twig_TokenParserBrokerInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParserBrokerInterface.php', 'Twig_TokenParserInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParserInterface.php', 'Twig_TokenParser_AutoEscape' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/AutoEscape.php', 'Twig_TokenParser_Block' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Block.php', 'Twig_TokenParser_Deprecated' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Deprecated.php', 'Twig_TokenParser_Do' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Do.php', 'Twig_TokenParser_Embed' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Embed.php', 'Twig_TokenParser_Extends' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Extends.php', 'Twig_TokenParser_Filter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Filter.php', 'Twig_TokenParser_Flush' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Flush.php', 'Twig_TokenParser_For' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/For.php', 'Twig_TokenParser_From' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/From.php', 'Twig_TokenParser_If' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/If.php', 'Twig_TokenParser_Import' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Import.php', 'Twig_TokenParser_Include' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Include.php', 'Twig_TokenParser_Macro' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Macro.php', 'Twig_TokenParser_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Sandbox.php', 'Twig_TokenParser_Set' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Set.php', 'Twig_TokenParser_Spaceless' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Spaceless.php', 'Twig_TokenParser_Use' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Use.php', 'Twig_TokenParser_With' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/With.php', 'Twig_TokenStream' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenStream.php', 'Twig_Util_DeprecationCollector' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Util/DeprecationCollector.php', 'Twig_Util_TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php', 'phpseclib\\Crypt\\AES' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/AES.php', 'phpseclib\\Crypt\\Base' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Base.php', 'phpseclib\\Crypt\\Blowfish' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php', 'phpseclib\\Crypt\\DES' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/DES.php', 'phpseclib\\Crypt\\Hash' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Hash.php', 'phpseclib\\Crypt\\RC2' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/RC2.php', 'phpseclib\\Crypt\\RC4' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/RC4.php', 'phpseclib\\Crypt\\RSA' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/RSA.php', 'phpseclib\\Crypt\\Random' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Random.php', 'phpseclib\\Crypt\\Rijndael' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php', 'phpseclib\\Crypt\\TripleDES' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php', 'phpseclib\\Crypt\\Twofish' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php', 'phpseclib\\File\\ANSI' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ANSI.php', 'phpseclib\\File\\ASN1' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ASN1.php', 'phpseclib\\File\\ASN1\\Element' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php', 'phpseclib\\File\\X509' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/X509.php', 'phpseclib\\Math\\BigInteger' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Math/BigInteger.php', 'phpseclib\\Net\\SCP' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SCP.php', 'phpseclib\\Net\\SFTP' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SFTP.php', 'phpseclib\\Net\\SFTP\\Stream' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php', 'phpseclib\\Net\\SSH1' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SSH1.php', 'phpseclib\\Net\\SSH2' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SSH2.php', 'phpseclib\\System\\SSH\\Agent' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php', 'phpseclib\\System\\SSH\\Agent\\Identity' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php', ); public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { $loader->prefixLengthsPsr4 = ComposerStaticInit50bde4ccaacf596677869b7ea3b012c1::$prefixLengthsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInit50bde4ccaacf596677869b7ea3b012c1::$prefixDirsPsr4; $loader->prefixesPsr0 = ComposerStaticInit50bde4ccaacf596677869b7ea3b012c1::$prefixesPsr0; $loader->classMap = ComposerStaticInit50bde4ccaacf596677869b7ea3b012c1::$classMap; }, null, ClassLoader::class); } } db/login/vendor/composer/autoload_psr4.php000064400000003161151502156020014654 0ustar00 array($vendorDir . '/phpseclib/phpseclib/phpseclib'), 'Twig\\Extensions\\' => array($vendorDir . '/twig/extensions/src'), 'Twig\\' => array($vendorDir . '/twig/twig/src'), 'Symfony\\Polyfill\\Util\\' => array($vendorDir . '/symfony/polyfill-util'), 'Symfony\\Polyfill\\Php56\\' => array($vendorDir . '/symfony/polyfill-php56'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Symfony\\Component\\ExpressionLanguage\\' => array($vendorDir . '/symfony/expression-language'), 'Samyoul\\U2F\\U2FServer\\' => array($vendorDir . '/samyoul/u2f-php-server/src'), 'ReCaptcha\\' => array($vendorDir . '/google/recaptcha/src/ReCaptcha'), 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), 'PragmaRX\\Google2FA\\Tests\\' => array($vendorDir . '/pragmarx/google2fa/tests'), 'PragmaRX\\Google2FA\\' => array($vendorDir . '/pragmarx/google2fa/src'), 'PhpMyAdmin\\SqlParser\\' => array($vendorDir . '/phpmyadmin/sql-parser/src'), 'PhpMyAdmin\\ShapeFile\\' => array($vendorDir . '/phpmyadmin/shapefile/src'), 'PhpMyAdmin\\Setup\\' => array($baseDir . '/setup/lib'), 'PhpMyAdmin\\MoTranslator\\' => array($vendorDir . '/phpmyadmin/motranslator/src'), 'PhpMyAdmin\\' => array($baseDir . '/libraries/classes'), 'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'), ); db/login/vendor/composer/LICENSE000064400000002056151502156020012372 0ustar00 Copyright (c) Nils Adermann, Jordi Boggiano Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. db/login/vendor/composer/autoload_namespaces.php000064400000000525151502156020016104 0ustar00 array($vendorDir . '/twig/extensions/lib'), 'Twig_' => array($vendorDir . '/twig/twig/lib'), 'BaconQrCode' => array($vendorDir . '/bacon/bacon-qr-code/src'), ); db/login/vendor/composer/autoload_files.php000064400000001174151502156020015070 0ustar00 $vendorDir . '/paragonie/random_compat/lib/random.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php', 'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php', ); db/login/vendor/composer/autoload_real.php000064400000004654151502156020014717 0ustar00= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; call_user_func(\Composer\Autoload\ComposerStaticInit50bde4ccaacf596677869b7ea3b012c1::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { $loader->set($namespace, $path); } $map = require __DIR__ . '/autoload_psr4.php'; foreach ($map as $namespace => $path) { $loader->setPsr4($namespace, $path); } $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { $loader->addClassMap($classMap); } } $loader->register(true); if ($useStaticLoader) { $includeFiles = Composer\Autoload\ComposerStaticInit50bde4ccaacf596677869b7ea3b012c1::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { composerRequire50bde4ccaacf596677869b7ea3b012c1($fileIdentifier, $file); } return $loader; } } function composerRequire50bde4ccaacf596677869b7ea3b012c1($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; } } db/login/vendor/phpmyadmin/sql-parser/README.md000064400000007406151502156020015260 0ustar00# SQL Parser A validating SQL lexer and parser with a focus on MySQL dialect. ## Code status [![Build Status](https://travis-ci.org/phpmyadmin/sql-parser.svg?branch=QA)](https://travis-ci.org/phpmyadmin/sql-parser) [![Code Coverage](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=QA) [![codecov.io](https://codecov.io/github/phpmyadmin/sql-parser/coverage.svg?branch=QA)](https://codecov.io/github/phpmyadmin/sql-parser?branch=QA) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=QA) [![Translation status](https://hosted.weblate.org/widgets/phpmyadmin/-/svg-badge.svg)](https://hosted.weblate.org/engage/phpmyadmin/?utm_source=widget) [![Packagist](https://img.shields.io/packagist/dt/phpmyadmin/sql-parser.svg)](https://packagist.org/packages/phpmyadmin/sql-parser) [![Open Source Helpers](https://www.codetriage.com/phpmyadmin/sql-parser/badges/users.svg)](https://www.codetriage.com/phpmyadmin/sql-parser) ## Installation Please use [Composer][1] to install: ``` composer require phpmyadmin/sql-parser ``` ## Documentation The API documentation is available at . ## Usage ### Command line utilities Command line utility to syntax highlight SQL query: ```sh ./vendor/bin/highlight-query --query "SELECT 1" ``` Command line utility to lint SQL query: ```sh ./vendor/bin/lint-query --query "SELECT 1" ``` Command line utility to tokenize SQL query: ```sh ./vendor/bin/tokenize-query --query "SELECT 1" ``` All commands are able to parse input from stdin (standard in), such as: ```sh echo "SELECT 1" | ./vendor/bin/highlight-query cat example.sql | ./vendor/bin/lint-query ``` ### Formatting SQL query ```php echo PhpMyAdmin\SqlParser\Utils\Formatter::format($query, array('type' => 'html')); ``` ### Discoverying query type ```php use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Utils\Query; $query = 'OPTIMIZE TABLE tbl'; $parser = new Parser($query); $flags = Query::getFlags($parser->statements[0]); echo $flags['querytype']; ``` ### Parsing and building SQL query ```php require __DIR__ . '/vendor/autoload.php'; $query1 = "select * from a"; $parser = new PhpMyAdmin\SqlParser\Parser($query1); // inspect query var_dump($parser->statements[0]); // outputs object(PhpMyAdmin\SqlParser\Statements\SelectStatement) // modify query by replacing table a with table b $table2 = new \PhpMyAdmin\SqlParser\Components\Expression("", "b", "", ""); $parser->statements[0]->from[0] = $table2; // build query again from an array of object(PhpMyAdmin\SqlParser\Statements\SelectStatement) to a string $statement = $parser->statements[0]; $query2 = $statement->build(); var_dump($query2); // outputs string(19) "SELECT * FROM `b` " // Change SQL mode PhpMyAdmin\SqlParser\Context::setMode('ANSI_QUOTES'); // build the query again using different quotes $query2 = $statement->build(); var_dump($query2); // outputs string(19) "SELECT * FROM "b" " ``` ## Localization You can localize error messages installing `phpmyadmin/motranslator` version `4.0` or newer: ```sh composer require phpmyadmin/motranslator:^4.0 ``` The locale is automatically detected from your environment, you can also set a different locale **From cli**: ```sh LC_ALL=pl ./vendor/bin/lint-query --query "SELECT 1" ``` **From php**: ```php require __DIR__ . '/vendor/autoload.php'; $GLOBALS['lang'] = 'pl'; $query1 = "select * from a"; $parser = new PhpMyAdmin\SqlParser\Parser($query1); ``` ## More information This library was originally created during the Google Summer of Code 2015 and has been used by phpMyAdmin since version 4.5. [1]:https://getcomposer.org/ db/login/vendor/phpmyadmin/sql-parser/bin/highlight-query000075500000001232151502156020017600 0ustar00#!/usr/bin/env php runHighlight()); db/login/vendor/phpmyadmin/sql-parser/bin/tokenize-query000075500000001231151502156020017460 0ustar00#!/usr/bin/env php runTokenize()); db/login/vendor/phpmyadmin/sql-parser/bin/lint-query000075500000001226151502156020016602 0ustar00#!/usr/bin/env php runLint()); db/login/vendor/phpmyadmin/sql-parser/composer.json000064400000002565151502156020016524 0ustar00{ "name": "phpmyadmin/sql-parser", "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", "license": "GPL-2.0-or-later", "keywords": ["sql", "lexer", "parser", "analysis"], "homepage": "https://github.com/phpmyadmin/sql-parser", "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "support": { "issues": "https://github.com/phpmyadmin/sql-parser/issues", "source": "https://github.com/phpmyadmin/sql-parser" }, "require": { "php": ">=5.3.0", "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5 || ^7.0", "squizlabs/php_codesniffer": "~2.9 || ~3.4" }, "conflict": { "phpmyadmin/motranslator": "<3.0" }, "suggest": { "ext-mbstring": "For best performance", "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, "bin": [ "bin/highlight-query", "bin/lint-query", "bin/tokenize-query" ], "autoload": { "psr-4": { "PhpMyAdmin\\SqlParser\\": "src" } }, "autoload-dev": { "psr-4": { "PhpMyAdmin\\SqlParser\\Tests\\": "tests" } } } db/login/vendor/phpmyadmin/sql-parser/src/Core.php000064400000001711151502156020016162 0ustar00strict) { throw $error; } $this->errors[] = $error; } } db/login/vendor/phpmyadmin/sql-parser/src/Lexer.php000064400000101313151502156020016350 0ustar00list; } /** * Constructor. * * @param string|UtfString $str the query to be lexed * @param bool $strict whether strict mode should be * enabled or not * @param string $delimiter the delimiter to be used */ public function __construct($str, $strict = false, $delimiter = null) { // `strlen` is used instead of `mb_strlen` because the lexer needs to // parse each byte of the input. $len = $str instanceof UtfString ? $str->length() : strlen($str); // For multi-byte strings, a new instance of `UtfString` is // initialized (only if `UtfString` usage is forced. if (! $str instanceof UtfString && USE_UTF_STRINGS && $len !== mb_strlen($str, 'UTF-8')) { $str = new UtfString($str); } $this->str = $str; $this->len = $str instanceof UtfString ? $str->length() : $len; $this->strict = $strict; // Setting the delimiter. $this->setDelimiter( ! empty($delimiter) ? $delimiter : static::$DEFAULT_DELIMITER ); $this->lex(); } /** * Sets the delimiter. * * @param string $delimiter the new delimiter */ public function setDelimiter($delimiter) { $this->delimiter = $delimiter; $this->delimiterLen = strlen($delimiter); } /** * Parses the string and extracts lexemes. */ public function lex() { // TODO: Sometimes, static::parse* functions make unnecessary calls to // is* functions. For a better performance, some rules can be deduced // from context. // For example, in `parseBool` there is no need to compare the token // every time with `true` and `false`. The first step would be to // compare with 'true' only and just after that add another letter from // context and compare again with `false`. // Another example is `parseComment`. $list = new TokensList(); /** * Last processed token. * * @var Token */ $lastToken = null; for ($this->last = 0, $lastIdx = 0; $this->last < $this->len; $lastIdx = ++$this->last) { /** * The new token. * * @var Token */ $token = null; foreach (static::$PARSER_METHODS as $method) { if ($token = $this->$method()) { break; } } if ($token === null) { // @assert($this->last === $lastIdx); $token = new Token($this->str[$this->last]); $this->error( 'Unexpected character.', $this->str[$this->last], $this->last ); } elseif ($lastToken !== null && $token->type === Token::TYPE_SYMBOL && $token->flags & Token::FLAG_SYMBOL_VARIABLE && ( $lastToken->type === Token::TYPE_STRING || ( $lastToken->type === Token::TYPE_SYMBOL && $lastToken->flags & Token::FLAG_SYMBOL_BACKTICK ) ) ) { // Handles ```... FROM 'user'@'%' ...```. $lastToken->token .= $token->token; $lastToken->type = Token::TYPE_SYMBOL; $lastToken->flags = Token::FLAG_SYMBOL_USER; $lastToken->value .= '@' . $token->value; continue; } elseif ($lastToken !== null && $token->type === Token::TYPE_KEYWORD && $lastToken->type === Token::TYPE_OPERATOR && $lastToken->value === '.' ) { // Handles ```... tbl.FROM ...```. In this case, FROM is not // a reserved word. $token->type = Token::TYPE_NONE; $token->flags = 0; $token->value = $token->token; } $token->position = $lastIdx; $list->tokens[$list->count++] = $token; // Handling delimiters. if ($token->type === Token::TYPE_NONE && $token->value === 'DELIMITER') { if ($this->last + 1 >= $this->len) { $this->error( 'Expected whitespace(s) before delimiter.', '', $this->last + 1 ); continue; } // Skipping last R (from `delimiteR`) and whitespaces between // the keyword `DELIMITER` and the actual delimiter. $pos = ++$this->last; if (($token = $this->parseWhitespace()) !== null) { $token->position = $pos; $list->tokens[$list->count++] = $token; } // Preparing the token that holds the new delimiter. if ($this->last + 1 >= $this->len) { $this->error( 'Expected delimiter.', '', $this->last + 1 ); continue; } $pos = $this->last + 1; // Parsing the delimiter. $this->delimiter = null; $delimiterLen = 0; while (++$this->last < $this->len && ! Context::isWhitespace($this->str[$this->last]) && $delimiterLen < 15) { $this->delimiter .= $this->str[$this->last]; ++$delimiterLen; } if (empty($this->delimiter)) { $this->error( 'Expected delimiter.', '', $this->last ); $this->delimiter = ';'; } --$this->last; // Saving the delimiter and its token. $this->delimiterLen = strlen($this->delimiter); $token = new Token($this->delimiter, Token::TYPE_DELIMITER); $token->position = $pos; $list->tokens[$list->count++] = $token; } $lastToken = $token; } // Adding a final delimiter to mark the ending. $list->tokens[$list->count++] = new Token(null, Token::TYPE_DELIMITER); // Saving the tokens list. $this->list = $list; $this->solveAmbiguityOnStarOperator(); } /** * Resolves the ambiguity when dealing with the "*" operator. * * In SQL statements, the "*" operator can be an arithmetic operator (like in 2*3) or an SQL wildcard (like in * SELECT a.* FROM ...). To solve this ambiguity, the solution is to find the next token, excluding whitespaces and * comments, right after the "*" position. The "*" is for sure an SQL wildcard if the next token found is any of: * - "FROM" (the FROM keyword like in "SELECT * FROM..."); * - "USING" (the USING keyword like in "DELETE table_name.* USING..."); * - "," (a comma separator like in "SELECT *, field FROM..."); * - ")" (a closing parenthesis like in "COUNT(*)"). * This methods will change the flag of the "*" tokens when any of those condition above is true. Otherwise, the * default flag (arithmetic) will be kept. * * @return void */ private function solveAmbiguityOnStarOperator() { $iBak = $this->list->idx; while (null !== ($starToken = $this->list->getNextOfTypeAndValue(Token::TYPE_OPERATOR, '*'))) { // ::getNext already gets rid of whitespaces and comments. if (($next = $this->list->getNext()) !== null) { if (($next->type === Token::TYPE_KEYWORD && in_array($next->value, array('FROM', 'USING'), true)) || ($next->type === Token::TYPE_OPERATOR && in_array($next->value, array(',', ')'), true)) ) { $starToken->flags = Token::FLAG_OPERATOR_SQL; } } } $this->list->idx = $iBak; } /** * Creates a new error log. * * @param string $msg the error message * @param string $str the character that produced the error * @param int $pos the position of the character * @param int $code the code of the error * * @throws LexerException throws the exception, if strict mode is enabled */ public function error($msg, $str = '', $pos = 0, $code = 0) { $error = new LexerException( Translator::gettext($msg), $str, $pos, $code ); parent::error($error); } /** * Parses a keyword. * * @return null|Token */ public function parseKeyword() { $token = ''; /** * Value to be returned. * * @var Token */ $ret = null; /** * The value of `$this->last` where `$token` ends in `$this->str`. * * @var int */ $iEnd = $this->last; /** * Whether last parsed character is a whitespace. * * @var bool */ $lastSpace = false; for ($j = 1; $j < Context::KEYWORD_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { // Composed keywords shouldn't have more than one whitespace between // keywords. if (Context::isWhitespace($this->str[$this->last])) { if ($lastSpace) { --$j; // The size of the keyword didn't increase. continue; } $lastSpace = true; } else { $lastSpace = false; } $token .= $this->str[$this->last]; if (($this->last + 1 === $this->len || Context::isSeparator($this->str[$this->last + 1])) && $flags = Context::isKeyword($token) ) { $ret = new Token($token, Token::TYPE_KEYWORD, $flags); $iEnd = $this->last; // We don't break so we find longest keyword. // For example, `OR` and `ORDER` have a common prefix `OR`. // If we stopped at `OR`, the parsing would be invalid. } } $this->last = $iEnd; return $ret; } /** * Parses a label. * * @return null|Token */ public function parseLabel() { $token = ''; /** * Value to be returned. * * @var Token */ $ret = null; /** * The value of `$this->last` where `$token` ends in `$this->str`. * * @var int */ $iEnd = $this->last; for ($j = 1; $j < Context::LABEL_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { if ($this->str[$this->last] === ':' && $j > 1) { // End of label $token .= $this->str[$this->last]; $ret = new Token($token, Token::TYPE_LABEL); $iEnd = $this->last; break; } elseif (Context::isWhitespace($this->str[$this->last]) && $j > 1) { // Whitespace between label and : // The size of the keyword didn't increase. --$j; } elseif (Context::isSeparator($this->str[$this->last])) { // Any other separator break; } $token .= $this->str[$this->last]; } $this->last = $iEnd; return $ret; } /** * Parses an operator. * * @return null|Token */ public function parseOperator() { $token = ''; /** * Value to be returned. * * @var Token */ $ret = null; /** * The value of `$this->last` where `$token` ends in `$this->str`. * * @var int */ $iEnd = $this->last; for ($j = 1; $j < Context::OPERATOR_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { $token .= $this->str[$this->last]; if ($flags = Context::isOperator($token)) { $ret = new Token($token, Token::TYPE_OPERATOR, $flags); $iEnd = $this->last; } } $this->last = $iEnd; return $ret; } /** * Parses a whitespace. * * @return null|Token */ public function parseWhitespace() { $token = $this->str[$this->last]; if (! Context::isWhitespace($token)) { return null; } while (++$this->last < $this->len && Context::isWhitespace($this->str[$this->last])) { $token .= $this->str[$this->last]; } --$this->last; return new Token($token, Token::TYPE_WHITESPACE); } /** * Parses a comment. * * @return null|Token */ public function parseComment() { $iBak = $this->last; $token = $this->str[$this->last]; // Bash style comments. (#comment\n) if (Context::isComment($token)) { while (++$this->last < $this->len && $this->str[$this->last] !== "\n" ) { $token .= $this->str[$this->last]; } // Include trailing \n as whitespace token if ($this->last < $this->len) { --$this->last; } return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_BASH); } // C style comments. (/*comment*\/) if (++$this->last < $this->len) { $token .= $this->str[$this->last]; if (Context::isComment($token)) { // There might be a conflict with "*" operator here, when string is "*/*". // This can occurs in the following statements: // - "SELECT */* comment */ FROM ..." // - "SELECT 2*/* comment */3 AS `six`;" $next = $this->last+1; if (($next < $this->len) && $this->str[$next] === '*') { // Conflict in "*/*": first "*" was not for ending a comment. // Stop here and let other parsing method define the true behavior of that first star. $this->last = $iBak; return null; } $flags = Token::FLAG_COMMENT_C; // This comment already ended. It may be a part of a // previous MySQL specific command. if ($token === '*/') { return new Token($token, Token::TYPE_COMMENT, $flags); } // Checking if this is a MySQL-specific command. if ($this->last + 1 < $this->len && $this->str[$this->last + 1] === '!' ) { $flags |= Token::FLAG_COMMENT_MYSQL_CMD; $token .= $this->str[++$this->last]; while (++$this->last < $this->len && $this->str[$this->last] >= '0' && $this->str[$this->last] <= '9' ) { $token .= $this->str[$this->last]; } --$this->last; // We split this comment and parse only its beginning // here. return new Token($token, Token::TYPE_COMMENT, $flags); } // Parsing the comment. while (++$this->last < $this->len && ( $this->str[$this->last - 1] !== '*' || $this->str[$this->last] !== '/' ) ) { $token .= $this->str[$this->last]; } // Adding the ending. if ($this->last < $this->len) { $token .= $this->str[$this->last]; } return new Token($token, Token::TYPE_COMMENT, $flags); } } // SQL style comments. (-- comment\n) if (++$this->last < $this->len) { $token .= $this->str[$this->last]; $end = false; } else { --$this->last; $end = true; } if (Context::isComment($token, $end)) { // Checking if this comment did not end already (```--\n```). if ($this->str[$this->last] !== "\n") { while (++$this->last < $this->len && $this->str[$this->last] !== "\n" ) { $token .= $this->str[$this->last]; } } // Include trailing \n as whitespace token if ($this->last < $this->len) { --$this->last; } return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_SQL); } $this->last = $iBak; return null; } /** * Parses a boolean. * * @return null|Token */ public function parseBool() { if ($this->last + 3 >= $this->len) { // At least `min(strlen('TRUE'), strlen('FALSE'))` characters are // required. return null; } $iBak = $this->last; $token = $this->str[$this->last] . $this->str[++$this->last] . $this->str[++$this->last] . $this->str[++$this->last]; // _TRUE_ or _FALS_e if (Context::isBool($token)) { return new Token($token, Token::TYPE_BOOL); } elseif (++$this->last < $this->len) { $token .= $this->str[$this->last]; // fals_E_ if (Context::isBool($token)) { return new Token($token, Token::TYPE_BOOL, 1); } } $this->last = $iBak; return null; } /** * Parses a number. * * @return null|Token */ public function parseNumber() { // A rudimentary state machine is being used to parse numbers due to // the various forms of their notation. // // Below are the states of the machines and the conditions to change // the state. // // 1 --------------------[ + or - ]-------------------> 1 // 1 -------------------[ 0x or 0X ]------------------> 2 // 1 --------------------[ 0 to 9 ]-------------------> 3 // 1 -----------------------[ . ]---------------------> 4 // 1 -----------------------[ b ]---------------------> 7 // // 2 --------------------[ 0 to F ]-------------------> 2 // // 3 --------------------[ 0 to 9 ]-------------------> 3 // 3 -----------------------[ . ]---------------------> 4 // 3 --------------------[ e or E ]-------------------> 5 // // 4 --------------------[ 0 to 9 ]-------------------> 4 // 4 --------------------[ e or E ]-------------------> 5 // // 5 ---------------[ + or - or 0 to 9 ]--------------> 6 // // 7 -----------------------[ ' ]---------------------> 8 // // 8 --------------------[ 0 or 1 ]-------------------> 8 // 8 -----------------------[ ' ]---------------------> 9 // // State 1 may be reached by negative numbers. // State 2 is reached only by hex numbers. // State 4 is reached only by float numbers. // State 5 is reached only by numbers in approximate form. // State 7 is reached only by numbers in bit representation. // // Valid final states are: 2, 3, 4 and 6. Any parsing that finished in a // state other than these is invalid. // Also, negative states are invalid states. $iBak = $this->last; $token = ''; $flags = 0; $state = 1; for (; $this->last < $this->len; ++$this->last) { if ($state === 1) { if ($this->str[$this->last] === '-') { $flags |= Token::FLAG_NUMBER_NEGATIVE; } elseif ($this->last + 1 < $this->len && $this->str[$this->last] === '0' && ( $this->str[$this->last + 1] === 'x' || $this->str[$this->last + 1] === 'X' ) ) { $token .= $this->str[$this->last++]; $state = 2; } elseif ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') { $state = 3; } elseif ($this->str[$this->last] === '.') { $state = 4; } elseif ($this->str[$this->last] === 'b') { $state = 7; } elseif ($this->str[$this->last] !== '+') { // `+` is a valid character in a number. break; } } elseif ($state === 2) { $flags |= Token::FLAG_NUMBER_HEX; if (! ( ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'F') || ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'f') ) ) { break; } } elseif ($state === 3) { if ($this->str[$this->last] === '.') { $state = 4; } elseif ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') { $state = 5; } elseif (($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z')) { // A number can't be directly followed by a letter $state = -$state; } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { // Just digits and `.`, `e` and `E` are valid characters. break; } } elseif ($state === 4) { $flags |= Token::FLAG_NUMBER_FLOAT; if ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') { $state = 5; } elseif (($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z')) { // A number can't be directly followed by a letter $state = -$state; } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { // Just digits, `e` and `E` are valid characters. break; } } elseif ($state === 5) { $flags |= Token::FLAG_NUMBER_APPROXIMATE; if ($this->str[$this->last] === '+' || $this->str[$this->last] === '-' || ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') ) { $state = 6; } elseif (($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z')) { // A number can't be directly followed by a letter $state = -$state; } else { break; } } elseif ($state === 6) { if ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { // Just digits are valid characters. break; } } elseif ($state === 7) { $flags |= Token::FLAG_NUMBER_BINARY; if ($this->str[$this->last] === '\'') { $state = 8; } else { break; } } elseif ($state === 8) { if ($this->str[$this->last] === '\'') { $state = 9; } elseif ($this->str[$this->last] !== '0' && $this->str[$this->last] !== '1' ) { break; } } elseif ($state === 9) { break; } $token .= $this->str[$this->last]; } if ($state === 2 || $state === 3 || ($token !== '.' && $state === 4) || $state === 6 || $state === 9 ) { --$this->last; return new Token($token, Token::TYPE_NUMBER, $flags); } $this->last = $iBak; return null; } /** * Parses a string. * * @param string $quote additional starting symbol * * @return null|Token * @throws LexerException */ public function parseString($quote = '') { $token = $this->str[$this->last]; if (! ($flags = Context::isString($token)) && $token !== $quote) { return null; } $quote = $token; while (++$this->last < $this->len) { if ($this->last + 1 < $this->len && ( ($this->str[$this->last] === $quote && $this->str[$this->last + 1] === $quote) || ($this->str[$this->last] === '\\' && $quote !== '`') ) ) { $token .= $this->str[$this->last] . $this->str[++$this->last]; } else { if ($this->str[$this->last] === $quote) { break; } $token .= $this->str[$this->last]; } } if ($this->last >= $this->len || $this->str[$this->last] !== $quote) { $this->error( sprintf( Translator::gettext('Ending quote %1$s was expected.'), $quote ), '', $this->last ); } else { $token .= $this->str[$this->last]; } return new Token($token, Token::TYPE_STRING, $flags); } /** * Parses a symbol. * * @return null|Token * @throws LexerException */ public function parseSymbol() { $token = $this->str[$this->last]; if (! ($flags = Context::isSymbol($token))) { return null; } if ($flags & Token::FLAG_SYMBOL_VARIABLE) { if ($this->last + 1 < $this->len && $this->str[++$this->last] === '@') { // This is a system variable (e.g. `@@hostname`). $token .= $this->str[$this->last++]; $flags |= Token::FLAG_SYMBOL_SYSTEM; } } elseif ($flags & Token::FLAG_SYMBOL_PARAMETER) { if ($token !== '?' && $this->last + 1 < $this->len) { ++$this->last; } } else { $token = ''; } $str = null; if ($this->last < $this->len) { if (($str = $this->parseString('`')) === null) { if (($str = $this->parseUnknown()) === null) { $this->error( 'Variable name was expected.', $this->str[$this->last], $this->last ); } } } if ($str !== null) { $token .= $str->token; } return new Token($token, Token::TYPE_SYMBOL, $flags); } /** * Parses unknown parts of the query. * * @return null|Token */ public function parseUnknown() { $token = $this->str[$this->last]; if (Context::isSeparator($token)) { return null; } while (++$this->last < $this->len && ! Context::isSeparator($this->str[$this->last])) { $token .= $this->str[$this->last]; // Test if end of token equals the current delimiter. If so, remove it from the token. if (substr($token, -$this->delimiterLen) === $this->delimiter) { $token = substr($token, 0, -$this->delimiterLen); $this->last -= $this->delimiterLen - 1; break; } } --$this->last; return new Token($token); } /** * Parses the delimiter of the query. * * @return null|Token */ public function parseDelimiter() { $idx = 0; while ($idx < $this->delimiterLen && $this->last + $idx < $this->len) { if ($this->delimiter[$idx] !== $this->str[$this->last + $idx]) { return null; } ++$idx; } $this->last += $this->delimiterLen - 1; return new Token($this->delimiter, Token::TYPE_DELIMITER); } } db/login/vendor/phpmyadmin/sql-parser/src/Statement.php000064400000043564151502156020017252 0ustar00parse($parser, $list); } } /** * Builds the string representation of this statement. * * @return string */ public function build() { /** * Query to be returned. * * @var string */ $query = ''; /** * Clauses which were built already. * * It is required to keep track of built clauses because some fields, * for example `join` is used by multiple clauses (`JOIN`, `LEFT JOIN`, * `LEFT OUTER JOIN`, etc.). The same happens for `VALUE` and `VALUES`. * * A clause is considered built just after fields' value * (`$this->field`) was used in building. * * @var array */ $built = array(); /** * Statement's clauses. * * @var array */ $clauses = $this->getClauses(); foreach ($clauses as $clause) { /** * The name of the clause. * * @var string */ $name = $clause[0]; /** * The type of the clause. * * @see self::$CLAUSES * * @var int */ $type = $clause[1]; /** * The builder (parser) of this clause. * * @var Component */ $class = Parser::$KEYWORD_PARSERS[$name]['class']; /** * The name of the field that is used as source for the builder. * Same field is used to store the result of parsing. * * @var string */ $field = Parser::$KEYWORD_PARSERS[$name]['field']; // The field is empty, there is nothing to be built. if (empty($this->$field)) { continue; } // Checking if this field was already built. if ($type & 1) { if (! empty($built[$field])) { continue; } $built[$field] = true; } // Checking if the name of the clause should be added. if ($type & 2) { $query = trim($query) . ' ' . $name; } // Checking if the result of the builder should be added. if ($type & 1) { $query = trim($query) . ' ' . $class::build($this->$field); } } return $query; } /** * Parses the statements defined by the tokens list. * * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed * @throws Exceptions\ParserException */ public function parse(Parser $parser, TokensList $list) { /** * Array containing all list of clauses parsed. * This is used to check for duplicates. * * @var array */ $parsedClauses = array(); // This may be corrected by the parser. $this->first = $list->idx; /** * Whether options were parsed or not. * For statements that do not have any options this is set to `true` by * default. * * @var bool */ $parsedOptions = empty(static::$OPTIONS); for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Checking if this closing bracket is the pair for a bracket // outside the statement. if (($token->value === ')') && ($parser->brackets > 0)) { --$parser->brackets; continue; } // Only keywords are relevant here. Other parts of the query are // processed in the functions below. if ($token->type !== Token::TYPE_KEYWORD) { if (($token->type !== Token::TYPE_COMMENT) && ($token->type !== Token::TYPE_WHITESPACE) ) { $parser->error('Unexpected token.', $token); } continue; } // Unions are parsed by the parser because they represent more than // one statement. if (($token->keyword === 'UNION') || ($token->keyword === 'UNION ALL') || ($token->keyword === 'UNION DISTINCT') || ($token->keyword === 'EXCEPT') || ($token->keyword === 'INTERSECT') ) { break; } $lastIdx = $list->idx; // ON DUPLICATE KEY UPDATE ... // has to be parsed in parent statement (INSERT or REPLACE) // so look for it and break if ($this instanceof Statements\SelectStatement && $token->value === 'ON' ) { ++$list->idx; // Skip ON // look for ON DUPLICATE KEY UPDATE $first = $list->getNextOfType(Token::TYPE_KEYWORD); $second = $list->getNextOfType(Token::TYPE_KEYWORD); $third = $list->getNextOfType(Token::TYPE_KEYWORD); if ($first && $second && $third && $first->value === 'DUPLICATE' && $second->value === 'KEY' && $third->value === 'UPDATE' ) { $list->idx = $lastIdx; break; } } $list->idx = $lastIdx; /** * The name of the class that is used for parsing. * * @var Component */ $class = null; /** * The name of the field where the result of the parsing is stored. * * @var string */ $field = null; /** * Parser's options. * * @var array */ $options = array(); // Looking for duplicated clauses. if (! empty(Parser::$KEYWORD_PARSERS[$token->value]) || ! empty(Parser::$STATEMENT_PARSERS[$token->value]) ) { if (! empty($parsedClauses[$token->value])) { $parser->error( 'This type of clause was previously parsed.', $token ); break; } $parsedClauses[$token->value] = true; } // Checking if this is the beginning of a clause. // Fix Issue #221: As `truncate` is not a keyword // but it might be the beginning of a statement of truncate, // so let the value use the keyword field for truncate type. $token_value = in_array($token->keyword, array('TRUNCATE')) ? $token->keyword : $token->value; if (! empty(Parser::$KEYWORD_PARSERS[$token_value]) && $list->idx < $list->count) { $class = Parser::$KEYWORD_PARSERS[$token_value]['class']; $field = Parser::$KEYWORD_PARSERS[$token_value]['field']; if (! empty(Parser::$KEYWORD_PARSERS[$token_value]['options'])) { $options = Parser::$KEYWORD_PARSERS[$token_value]['options']; } } // Checking if this is the beginning of the statement. if (! empty(Parser::$STATEMENT_PARSERS[$token->keyword])) { if (! empty(static::$CLAUSES) // Undefined for some statements. && empty(static::$CLAUSES[$token->value]) ) { // Some keywords (e.g. `SET`) may be the beginning of a // statement and a clause. // If such keyword was found and it cannot be a clause of // this statement it means it is a new statement, but no // delimiter was found between them. $parser->error( 'A new statement was found, but no delimiter between it and the previous one.', $token ); break; } if (! $parsedOptions) { if (empty(static::$OPTIONS[$token->value])) { // Skipping keyword because if it is not a option. ++$list->idx; } $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); $parsedOptions = true; } } elseif ($class === null) { if ($this instanceof Statements\SelectStatement && ($token->value === 'FOR UPDATE' || $token->value === 'LOCK IN SHARE MODE') ) { // Handle special end options in Select statement // See Statements\SelectStatement::$END_OPTIONS $this->end_options = OptionsArray::parse( $parser, $list, static::$END_OPTIONS ); } elseif ($this instanceof Statements\SetStatement && ($token->value === 'COLLATE' || $token->value === 'DEFAULT') ) { // Handle special end options in SET statement // See Statements\SetStatement::$END_OPTIONS $this->end_options = OptionsArray::parse( $parser, $list, static::$END_OPTIONS ); } else { // There is no parser for this keyword and isn't the beginning // of a statement (so no options) either. $parser->error('Unrecognized keyword.', $token); continue; } } $this->before($parser, $list, $token); // Parsing this keyword. if ($class !== null) { // We can't parse keyword at the end of statement if ($list->idx >= $list->count) { $parser->error('Keyword at end of statement.', $token); continue; } ++$list->idx; // Skipping keyword or last option. $this->$field = $class::parse($parser, $list, $options); } $this->after($parser, $list, $token); // #223 Here may make a patch, if last is delimiter, back one // TODO: when not supporting PHP 5.3 anymore, replace this by FunctionCall::class. if ($class === 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall' && $list->offsetGet($list->idx)->type === Token::TYPE_DELIMITER ) { --$list->idx; } } // This may be corrected by the parser. $this->last = --$list->idx; // Go back to last used token. } /** * Function called before the token is processed. * * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed * @param Token $token the token that is being parsed */ public function before(Parser $parser, TokensList $list, Token $token) { } /** * Function called after the token was processed. * * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed * @param Token $token the token that is being parsed */ public function after(Parser $parser, TokensList $list, Token $token) { } /** * Gets the clauses of this statement. * * @return array */ public function getClauses() { return static::$CLAUSES; } /** * Builds the string representation of this statement. * * @see static::build * * @return string */ public function __toString() { return $this->build(); } /** * Validates the order of the clauses in parsed statement * Ideally this should be called after successfully * completing the parsing of each statement. * * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed * * @return bool * @throws Exceptions\ParserException */ public function validateClauseOrder($parser, $list) { $clauses = array_flip(array_keys($this->getClauses())); if (empty($clauses) || count($clauses) === 0) { return true; } $minIdx = -1; /** * For tracking JOIN clauses in a query * = 0 - JOIN not found till now * > 0 - Index of first JOIN clause in the statement. * * @var int */ $minJoin = 0; /** * For tracking JOIN clauses in a query * = 0 - JOIN not found till now * > 0 - Index of last JOIN clause * (which appears together with other JOINs) * in the statement. * * @var int */ $maxJoin = 0; $error = 0; $lastIdx = 0; foreach ($clauses as $clauseType => $index) { $clauseStartIdx = Utils\Query::getClauseStartOffset( $this, $list, $clauseType ); if ($clauseStartIdx !== -1 && $this instanceof Statements\SelectStatement && ($clauseType === 'FORCE' || $clauseType === 'IGNORE' || $clauseType === 'USE') ) { // TODO: ordering of clauses in a SELECT statement with // Index hints is not supported return true; } // Handle ordering of Multiple Joins in a query if ($clauseStartIdx !== -1) { if ($minJoin === 0 && stripos($clauseType, 'JOIN')) { // First JOIN clause is detected $minJoin = $maxJoin = $clauseStartIdx; } elseif ($minJoin !== 0 && ! stripos($clauseType, 'JOIN')) { // After a previous JOIN clause, a non-JOIN clause has been detected $maxJoin = $lastIdx; } elseif ($maxJoin < $clauseStartIdx && stripos($clauseType, 'JOIN')) { $error = 1; } } if ($clauseStartIdx !== -1 && $clauseStartIdx < $minIdx) { if ($minJoin === 0 || $error === 1) { $token = $list->tokens[$clauseStartIdx]; $parser->error( 'Unexpected ordering of clauses.', $token ); return false; } $minIdx = $clauseStartIdx; } elseif ($clauseStartIdx !== -1) { $minIdx = $clauseStartIdx; } $lastIdx = ($clauseStartIdx !== -1) ? $clauseStartIdx : $lastIdx; } return true; } } db/login/vendor/phpmyadmin/sql-parser/src/Component.php000064400000004166151502156020017243 0ustar00, !==, etc. * Bitwise operators: &, |, ^, etc. * Assignment operators: =, +=, -=, etc. * SQL specific operators: . (e.g. .. WHERE database.table ..), * * (e.g. SELECT * FROM ..) * * @var int */ const TYPE_OPERATOR = 2; /** * Spaces, tabs, new lines, etc. * * @var int */ const TYPE_WHITESPACE = 3; /** * Any type of legal comment. * * Bash (#), C (/* *\/) or SQL (--) comments: * * -- SQL-comment * * #Bash-like comment * * /*C-like comment*\/ * * or: * * /*C-like * comment*\/ * * Backslashes were added to respect PHP's comments syntax. * * @var int */ const TYPE_COMMENT = 4; /** * Boolean values: true or false. * * @var int */ const TYPE_BOOL = 5; /** * Numbers: 4, 0x8, 15.16, 23e42, etc. * * @var int */ const TYPE_NUMBER = 6; /** * Literal strings: 'string', "test". * Some of these strings are actually symbols. * * @var int */ const TYPE_STRING = 7; /** * Database, table names, variables, etc. * For example: ```SELECT `foo`, `bar` FROM `database`.`table`;```. * * @var int */ const TYPE_SYMBOL = 8; /** * Delimits an unknown string. * For example: ```SELECT * FROM test;```, `test` is a delimiter. * * @var int */ const TYPE_DELIMITER = 9; /** * Labels in LOOP statement, ITERATE statement etc. * For example (only for begin label): * begin_label: BEGIN [statement_list] END [end_label] * begin_label: LOOP [statement_list] END LOOP [end_label] * begin_label: REPEAT [statement_list] ... END REPEAT [end_label] * begin_label: WHILE ... DO [statement_list] END WHILE [end_label]. * * @var int */ const TYPE_LABEL = 10; // Flags that describe the tokens in more detail. // All keywords must have flag 1 so `Context::isKeyword` method doesn't // require strict comparison. const FLAG_KEYWORD_RESERVED = 2; const FLAG_KEYWORD_COMPOSED = 4; const FLAG_KEYWORD_DATA_TYPE = 8; const FLAG_KEYWORD_KEY = 16; const FLAG_KEYWORD_FUNCTION = 32; // Numbers related flags. const FLAG_NUMBER_HEX = 1; const FLAG_NUMBER_FLOAT = 2; const FLAG_NUMBER_APPROXIMATE = 4; const FLAG_NUMBER_NEGATIVE = 8; const FLAG_NUMBER_BINARY = 16; // Strings related flags. const FLAG_STRING_SINGLE_QUOTES = 1; const FLAG_STRING_DOUBLE_QUOTES = 2; // Comments related flags. const FLAG_COMMENT_BASH = 1; const FLAG_COMMENT_C = 2; const FLAG_COMMENT_SQL = 4; const FLAG_COMMENT_MYSQL_CMD = 8; // Operators related flags. const FLAG_OPERATOR_ARITHMETIC = 1; const FLAG_OPERATOR_LOGICAL = 2; const FLAG_OPERATOR_BITWISE = 4; const FLAG_OPERATOR_ASSIGNMENT = 8; const FLAG_OPERATOR_SQL = 16; // Symbols related flags. const FLAG_SYMBOL_VARIABLE = 1; const FLAG_SYMBOL_BACKTICK = 2; const FLAG_SYMBOL_USER = 4; const FLAG_SYMBOL_SYSTEM = 8; const FLAG_SYMBOL_PARAMETER = 16; /** * The token it its raw string representation. * * @var string */ public $token; /** * The value this token contains (i.e. token after some evaluation). * * @var mixed */ public $value; /** * The keyword value this token contains, always uppercase. * * @var mixed */ public $keyword; /** * The type of this token. * * @var int */ public $type; /** * The flags of this token. * * @var int */ public $flags; /** * The position in the initial string where this token started. * * The position is counted in chars, not bytes, so you should * use mb_* functions to properly handle utf-8 multibyte chars. * * @var int */ public $position; /** * Constructor. * * @param string $token the value of the token * @param int $type the type of the token * @param int $flags the flags of the token */ public function __construct($token, $type = 0, $flags = 0) { $this->token = $token; $this->type = $type; $this->flags = $flags; $this->keyword = null; $this->value = $this->extract(); } /** * Does little processing to the token to extract a value. * * If no processing can be done it will return the initial string. * * @return mixed */ public function extract() { switch ($this->type) { case self::TYPE_KEYWORD: $this->keyword = strtoupper($this->token); if (! ($this->flags & self::FLAG_KEYWORD_RESERVED)) { // Unreserved keywords should stay the way they are because they // might represent field names. return $this->token; } return $this->keyword; case self::TYPE_WHITESPACE: return ' '; case self::TYPE_BOOL: return strtoupper($this->token) === 'TRUE'; case self::TYPE_NUMBER: $ret = str_replace('--', '', $this->token); // e.g. ---42 === -42 if ($this->flags & self::FLAG_NUMBER_HEX) { if ($this->flags & self::FLAG_NUMBER_NEGATIVE) { $ret = str_replace('-', '', $this->token); $ret = -hexdec($ret); } else { $ret = hexdec($ret); } } elseif (($this->flags & self::FLAG_NUMBER_APPROXIMATE) || ($this->flags & self::FLAG_NUMBER_FLOAT) ) { $ret = (float) $ret; } elseif (! ($this->flags & self::FLAG_NUMBER_BINARY)) { $ret = (int) $ret; } return $ret; case self::TYPE_STRING: // Trims quotes. $str = $this->token; $str = mb_substr($str, 1, -1, 'UTF-8'); // Removes surrounding quotes. $quote = $this->token[0]; $str = str_replace($quote . $quote, $quote, $str); // Finally unescapes the string. // // `stripcslashes` replaces escape sequences with their // representation. // // NOTE: In MySQL, `\f` and `\v` have no representation, // even they usually represent: form-feed and vertical tab. $str = str_replace('\f', 'f', $str); $str = str_replace('\v', 'v', $str); $str = stripcslashes($str); return $str; case self::TYPE_SYMBOL: $str = $this->token; if (isset($str[0]) && ($str[0] === '@')) { // `mb_strlen($str)` must be used instead of `null` because // in PHP 5.3- the `null` parameter isn't handled correctly. $str = mb_substr( $str, (! empty($str[1]) && ($str[1] === '@')) ? 2 : 1, mb_strlen($str), 'UTF-8' ); } if (isset($str[0]) && ($str[0] === ':')) { $str = mb_substr($str, 1, mb_strlen($str), 'UTF-8'); } if (isset($str[0]) && (($str[0] === '`') || ($str[0] === '"') || ($str[0] === '\'')) ) { $quote = $str[0]; $str = str_replace($quote . $quote, $quote, $str); $str = mb_substr($str, 1, -1, 'UTF-8'); } return $str; } return $this->token; } /** * Converts the token into an inline token by replacing tabs and new lines. * * @return string */ public function getInlineToken() { return str_replace( array( "\r", "\n", "\t", ), array( '\r', '\n', '\t', ), $this->token ); } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Tokens.php000064400000010056151502156020017637 0ustar00token) ) { return false; } // Value. if (isset($pattern['value']) && ($pattern['value'] !== $token->value) ) { return false; } if (isset($pattern['value_str']) && strcasecmp($pattern['value_str'], $token->value) ) { return false; } // Type. if (isset($pattern['type']) && ($pattern['type'] !== $token->type) ) { return false; } // Flags. if (isset($pattern['flags']) && (($pattern['flags'] & $token->flags) === 0) ) { return false; } return true; } public static function replaceTokens($list, array $find, array $replace) { /** * Whether the first parameter is a list. * * @var bool */ $isList = $list instanceof TokensList; // Parsing the tokens. if (! $isList) { $list = Lexer::getTokens($list); } /** * The list to be returned. * * @var array */ $newList = array(); /** * The length of the find pattern is calculated only once. * * @var int */ $findCount = count($find); /** * The starting index of the pattern. * * @var int */ $i = 0; while ($i < $list->count) { // A sequence may not start with a comment. if ($list->tokens[$i]->type === Token::TYPE_COMMENT) { $newList[] = $list->tokens[$i]; ++$i; continue; } /** * The index used to parse `$list->tokens`. * * This index might be running faster than `$k` because some tokens * are skipped. * * @var int */ $j = $i; /** * The index used to parse `$find`. * * This index might be running slower than `$j` because some tokens * are skipped. * * @var int */ $k = 0; // Checking if the next tokens match the pattern described. while (($j < $list->count) && ($k < $findCount)) { // Comments are being skipped. if ($list->tokens[$j]->type === Token::TYPE_COMMENT) { ++$j; } if (! static::match($list->tokens[$j], $find[$k])) { // This token does not match the pattern. break; } // Going to next token and segment of find pattern. ++$j; ++$k; } // Checking if the sequence was found. if ($k === $findCount) { // Inserting new tokens. foreach ($replace as $token) { $newList[] = $token; } // Skipping next `$findCount` tokens. $i = $j; } else { // Adding the same token. $newList[] = $list->tokens[$i]; ++$i; } } return $isList ? new TokensList($newList) : TokensList::build($newList); } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Query.php000064400000063752151502156020017514 0ustar00 false, /* * drop ... DATABASE ... */ 'drop_database' => false, /* * ... GROUP BY ... */ 'group' => false, /* * ... HAVING ... */ 'having' => false, /* * INSERT ... * or * REPLACE ... * or * DELETE ... */ 'is_affected' => false, /* * select ... PROCEDURE ANALYSE( ... ) ... */ 'is_analyse' => false, /* * select COUNT( ... ) ... */ 'is_count' => false, /* * DELETE ... */ 'is_delete' => false, // @deprecated; use `querytype` /* * EXPLAIN ... */ 'is_explain' => false, // @deprecated; use `querytype` /* * select ... INTO OUTFILE ... */ 'is_export' => false, /* * select FUNC( ... ) ... */ 'is_func' => false, /* * select ... GROUP BY ... * or * select ... HAVING ... */ 'is_group' => false, /* * INSERT ... * or * REPLACE ... * or * LOAD DATA ... */ 'is_insert' => false, /* * ANALYZE ... * or * CHECK ... * or * CHECKSUM ... * or * OPTIMIZE ... * or * REPAIR ... */ 'is_maint' => false, /* * CALL ... */ 'is_procedure' => false, /* * REPLACE ... */ 'is_replace' => false, // @deprecated; use `querytype` /* * SELECT ... */ 'is_select' => false, // @deprecated; use `querytype` /* * SHOW ... */ 'is_show' => false, // @deprecated; use `querytype` /* * Contains a subquery. */ 'is_subquery' => false, /* * ... JOIN ... */ 'join' => false, /* * ... LIMIT ... */ 'limit' => false, /* * TODO */ 'offset' => false, /* * ... ORDER ... */ 'order' => false, /* * The type of the query (which is usually the first keyword of * the statement). */ 'querytype' => false, /* * Whether a page reload is required. */ 'reload' => false, /* * SELECT ... FROM ... */ 'select_from' => false, /* * ... UNION ... */ 'union' => false ); /** * Gets an array with flags select statement has. * * @param SelectStatement $statement the statement to be processed * @param array $flags flags set so far * * @return array */ private static function getFlagsSelect($statement, $flags) { $flags['querytype'] = 'SELECT'; $flags['is_select'] = true; if (! empty($statement->from)) { $flags['select_from'] = true; } if ($statement->options->has('DISTINCT')) { $flags['distinct'] = true; } if (! empty($statement->group) || ! empty($statement->having)) { $flags['is_group'] = true; } if (! empty($statement->into) && ($statement->into->type === 'OUTFILE') ) { $flags['is_export'] = true; } $expressions = $statement->expr; if (! empty($statement->join)) { foreach ($statement->join as $join) { $expressions[] = $join->expr; } } foreach ($expressions as $expr) { if (! empty($expr->function)) { if ($expr->function === 'COUNT') { $flags['is_count'] = true; } elseif (in_array($expr->function, static::$FUNCTIONS)) { $flags['is_func'] = true; } } if (! empty($expr->subquery)) { $flags['is_subquery'] = true; } } if (! empty($statement->procedure) && ($statement->procedure->name === 'ANALYSE') ) { $flags['is_analyse'] = true; } if (! empty($statement->group)) { $flags['group'] = true; } if (! empty($statement->having)) { $flags['having'] = true; } if (! empty($statement->union)) { $flags['union'] = true; } if (! empty($statement->join)) { $flags['join'] = true; } return $flags; } /** * Gets an array with flags this statement has. * * @param Statement|null $statement the statement to be processed * @param bool $all if `false`, false values will not be included * * @return array */ public static function getFlags($statement, $all = false) { $flags = array('querytype' => false); if ($all) { $flags = self::$ALLFLAGS; } if ($statement instanceof AlterStatement) { $flags['querytype'] = 'ALTER'; $flags['reload'] = true; } elseif ($statement instanceof CreateStatement) { $flags['querytype'] = 'CREATE'; $flags['reload'] = true; } elseif ($statement instanceof AnalyzeStatement) { $flags['querytype'] = 'ANALYZE'; $flags['is_maint'] = true; } elseif ($statement instanceof CheckStatement) { $flags['querytype'] = 'CHECK'; $flags['is_maint'] = true; } elseif ($statement instanceof ChecksumStatement) { $flags['querytype'] = 'CHECKSUM'; $flags['is_maint'] = true; } elseif ($statement instanceof OptimizeStatement) { $flags['querytype'] = 'OPTIMIZE'; $flags['is_maint'] = true; } elseif ($statement instanceof RepairStatement) { $flags['querytype'] = 'REPAIR'; $flags['is_maint'] = true; } elseif ($statement instanceof CallStatement) { $flags['querytype'] = 'CALL'; $flags['is_procedure'] = true; } elseif ($statement instanceof DeleteStatement) { $flags['querytype'] = 'DELETE'; $flags['is_delete'] = true; $flags['is_affected'] = true; } elseif ($statement instanceof DropStatement) { $flags['querytype'] = 'DROP'; $flags['reload'] = true; if ($statement->options->has('DATABASE') || $statement->options->has('SCHEMA') ) { $flags['drop_database'] = true; } } elseif ($statement instanceof ExplainStatement) { $flags['querytype'] = 'EXPLAIN'; $flags['is_explain'] = true; } elseif ($statement instanceof InsertStatement) { $flags['querytype'] = 'INSERT'; $flags['is_affected'] = true; $flags['is_insert'] = true; } elseif ($statement instanceof LoadStatement) { $flags['querytype'] = 'LOAD'; $flags['is_affected'] = true; $flags['is_insert'] = true; } elseif ($statement instanceof ReplaceStatement) { $flags['querytype'] = 'REPLACE'; $flags['is_affected'] = true; $flags['is_replace'] = true; $flags['is_insert'] = true; } elseif ($statement instanceof SelectStatement) { $flags = self::getFlagsSelect($statement, $flags); } elseif ($statement instanceof ShowStatement) { $flags['querytype'] = 'SHOW'; $flags['is_show'] = true; } elseif ($statement instanceof UpdateStatement) { $flags['querytype'] = 'UPDATE'; $flags['is_affected'] = true; } elseif ($statement instanceof SetStatement) { $flags['querytype'] = 'SET'; } if (($statement instanceof SelectStatement) || ($statement instanceof UpdateStatement) || ($statement instanceof DeleteStatement) ) { if (! empty($statement->limit)) { $flags['limit'] = true; } if (! empty($statement->order)) { $flags['order'] = true; } } return $flags; } /** * Parses a query and gets all information about it. * * @param string $query the query to be parsed * * @return array The array returned is the one returned by * `static::getFlags()`, with the following keys added: * - parser - the parser used to analyze the query; * - statement - the first statement resulted from parsing; * - select_tables - the real name of the tables selected; * if there are no table names in the `SELECT` * expressions, the table names are fetched from the * `FROM` expressions * - select_expr - selected expressions */ public static function getAll($query) { $parser = new Parser($query); if (empty($parser->statements[0])) { return static::getFlags(null, true); } $statement = $parser->statements[0]; $ret = static::getFlags($statement, true); $ret['parser'] = $parser; $ret['statement'] = $statement; if ($statement instanceof SelectStatement) { $ret['select_tables'] = array(); $ret['select_expr'] = array(); // Finding tables' aliases and their associated real names. $tableAliases = array(); foreach ($statement->from as $expr) { if (isset($expr->table, $expr->alias) && ($expr->table !== '') && ($expr->alias !== '') ) { $tableAliases[$expr->alias] = array( $expr->table, isset($expr->database) ? $expr->database : null ); } } // Trying to find selected tables only from the select expression. // Sometimes, this is not possible because the tables aren't defined // explicitly (e.g. SELECT * FROM film, SELECT film_id FROM film). foreach ($statement->expr as $expr) { if (isset($expr->table) && ($expr->table !== '')) { if (isset($tableAliases[$expr->table])) { $arr = $tableAliases[$expr->table]; } else { $arr = array( $expr->table, (isset($expr->database) && ($expr->database !== '')) ? $expr->database : null ); } if (! in_array($arr, $ret['select_tables'])) { $ret['select_tables'][] = $arr; } } else { $ret['select_expr'][] = $expr->expr; } } // If no tables names were found in the SELECT clause or if there // are expressions like * or COUNT(*), etc. tables names should be // extracted from the FROM clause. if (empty($ret['select_tables'])) { foreach ($statement->from as $expr) { if (isset($expr->table) && ($expr->table !== '')) { $arr = array( $expr->table, (isset($expr->database) && ($expr->database !== '')) ? $expr->database : null ); if (! in_array($arr, $ret['select_tables'])) { $ret['select_tables'][] = $arr; } } } } } return $ret; } /** * Gets a list of all tables used in this statement. * * @param Statement $statement statement to be scanned * * @return array */ public static function getTables($statement) { $expressions = array(); if (($statement instanceof InsertStatement) || ($statement instanceof ReplaceStatement) ) { $expressions = array($statement->into->dest); } elseif ($statement instanceof UpdateStatement) { $expressions = $statement->tables; } elseif (($statement instanceof SelectStatement) || ($statement instanceof DeleteStatement) ) { $expressions = $statement->from; } elseif (($statement instanceof AlterStatement) || ($statement instanceof TruncateStatement) ) { $expressions = array($statement->table); } elseif ($statement instanceof DropStatement) { if (! $statement->options->has('TABLE')) { // No tables are dropped. return array(); } $expressions = $statement->fields; } elseif ($statement instanceof RenameStatement) { foreach ($statement->renames as $rename) { $expressions[] = $rename->old; } } $ret = array(); foreach ($expressions as $expr) { if (! empty($expr->table)) { $expr->expr = null; // Force rebuild. $expr->alias = null; // Aliases are not required. $ret[] = Expression::build($expr); } } return $ret; } /** * Gets a specific clause. * * @param Statement $statement the parsed query that has to be modified * @param TokensList $list the list of tokens * @param string $clause the clause to be returned * @param int|string $type The type of the search. * If int, * -1 for everything that was before * 0 only for the clause * 1 for everything after * If string, the name of the first clause that * should not be included. * @param bool $skipFirst whether to skip the first keyword in clause * * @return string */ public static function getClause($statement, $list, $clause, $type = 0, $skipFirst = true) { /** * The index of the current clause. * * @var int */ $currIdx = 0; /** * The count of brackets. * We keep track of them so we won't insert the clause in a subquery. * * @var int */ $brackets = 0; /** * The string to be returned. * * @var string */ $ret = ''; /** * The clauses of this type of statement and their index. * * @var array */ $clauses = array_flip(array_keys($statement->getClauses())); /** * Lexer used for lexing the clause. * * @var Lexer */ $lexer = new Lexer($clause); /** * The type of this clause. * * @var string */ $clauseType = $lexer->list->getNextOfType(Token::TYPE_KEYWORD)->keyword; /** * The index of this clause. * * @var int */ $clauseIdx = isset($clauses[$clauseType]) ? $clauses[$clauseType] : -1; $firstClauseIdx = $clauseIdx; $lastClauseIdx = $clauseIdx; // Determining the behavior of this function. if ($type === -1) { $firstClauseIdx = -1; // Something small enough. $lastClauseIdx = $clauseIdx - 1; } elseif ($type === 1) { $firstClauseIdx = $clauseIdx + 1; $lastClauseIdx = 10000; // Something big enough. } elseif (is_string($type) && isset($clauses[$type])) { if ($clauses[$type] > $clauseIdx) { $firstClauseIdx = $clauseIdx + 1; $lastClauseIdx = $clauses[$type] - 1; } else { $firstClauseIdx = $clauses[$type] + 1; $lastClauseIdx = $clauseIdx - 1; } } // This option is unavailable for multiple clauses. if ($type !== 0) { $skipFirst = false; } for ($i = $statement->first; $i <= $statement->last; ++$i) { $token = $list->tokens[$i]; if ($token->type === Token::TYPE_COMMENT) { continue; } if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { ++$brackets; } elseif ($token->value === ')') { --$brackets; } } if ($brackets === 0) { // Checking if the section was changed. if (($token->type === Token::TYPE_KEYWORD) && isset($clauses[$token->keyword]) && ($clauses[$token->keyword] >= $currIdx) ) { $currIdx = $clauses[$token->keyword]; if ($skipFirst && ($currIdx === $clauseIdx)) { // This token is skipped (not added to the old // clause) because it will be replaced. continue; } } } if (($firstClauseIdx <= $currIdx) && ($currIdx <= $lastClauseIdx)) { $ret .= $token->token; } } return trim($ret); } /** * Builds a query by rebuilding the statement from the tokens list supplied * and replaces a clause. * * It is a very basic version of a query builder. * * @param Statement $statement the parsed query that has to be modified * @param TokensList $list the list of tokens * @param string $old The type of the clause that should be * replaced. This can be an entire clause. * @param string $new The new clause. If this parameter is omitted * it is considered to be equal with `$old`. * @param bool $onlyType whether only the type of the clause should * be replaced or the entire clause * * @return string */ public static function replaceClause($statement, $list, $old, $new = null, $onlyType = false) { // TODO: Update the tokens list and the statement. if ($new === null) { $new = $old; } if ($onlyType) { return static::getClause($statement, $list, $old, -1, false) . ' ' . $new . ' ' . static::getClause($statement, $list, $old, 0) . ' ' . static::getClause($statement, $list, $old, 1, false); } return static::getClause($statement, $list, $old, -1, false) . ' ' . $new . ' ' . static::getClause($statement, $list, $old, 1, false); } /** * Builds a query by rebuilding the statement from the tokens list supplied * and replaces multiple clauses. * * @param Statement $statement the parsed query that has to be modified * @param TokensList $list the list of tokens * @param array $ops Clauses to be replaced. Contains multiple * arrays having two values: array($old, $new). * Clauses must be sorted. * * @return string */ public static function replaceClauses($statement, $list, array $ops) { $count = count($ops); // Nothing to do. if ($count === 0) { return ''; } /** * Value to be returned. * * @var string */ $ret = ''; // If there is only one clause, `replaceClause()` should be used. if ($count === 1) { return static::replaceClause( $statement, $list, $ops[0][0], $ops[0][1] ); } // Adding everything before first replacement. $ret .= static::getClause($statement, $list, $ops[0][0], -1) . ' '; // Doing replacements. foreach ($ops as $i => $clause) { $ret .= $clause[1] . ' '; // Adding everything between this and next replacement. if ($i + 1 !== $count) { $ret .= static::getClause($statement, $list, $clause[0], $ops[$i + 1][0]) . ' '; } } // Adding everything after the last replacement. $ret .= static::getClause($statement, $list, $ops[$count - 1][0], 1); return $ret; } /** * Gets the first full statement in the query. * * @param string $query the query to be analyzed * @param string $delimiter the delimiter to be used * * @return array array containing the first full query, the * remaining part of the query and the last * delimiter */ public static function getFirstStatement($query, $delimiter = null) { $lexer = new Lexer($query, false, $delimiter); $list = $lexer->list; /** * Whether a full statement was found. * * @var bool */ $fullStatement = false; /** * The first full statement. * * @var string */ $statement = ''; for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; if ($token->type === Token::TYPE_COMMENT) { continue; } $statement .= $token->token; if (($token->type === Token::TYPE_DELIMITER) && ! empty($token->token)) { $delimiter = $token->token; $fullStatement = true; break; } } // No statement was found so we return the entire query as being the // remaining part. if (! $fullStatement) { return array( null, $query, $delimiter ); } // At least one query was found so we have to build the rest of the // remaining query. $query = ''; for (++$list->idx; $list->idx < $list->count; ++$list->idx) { $query .= $list->tokens[$list->idx]->token; } return array( trim($statement), $query, $delimiter ); } /** * Gets a starting offset of a specific clause. * * @param Statement $statement the parsed query that has to be modified * @param TokensList $list the list of tokens * @param string $clause the clause to be returned * * @return int */ public static function getClauseStartOffset($statement, $list, $clause) { /** * The count of brackets. * We keep track of them so we won't insert the clause in a subquery. * * @var int */ $brackets = 0; /** * The clauses of this type of statement and their index. * * @var array */ $clauses = array_flip(array_keys($statement->getClauses())); for ($i = $statement->first; $i <= $statement->last; ++$i) { $token = $list->tokens[$i]; if ($token->type === Token::TYPE_COMMENT) { continue; } if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { ++$brackets; } elseif ($token->value === ')') { --$brackets; } } if ($brackets === 0) { if (($token->type === Token::TYPE_KEYWORD) && isset($clauses[$token->keyword]) && ($clause === $token->keyword) ) { return $i; } elseif ($token->keyword === 'UNION') { return -1; } } } return -1; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/CLI.php000064400000013545151502156020017011 0ustar00getopt( 'hq:f:a', $longopts ); if ($params === false) { return false; } $this->mergeLongOpts($params, $longopts); if (! isset($params['f'])) { $params['f'] = 'cli'; } if (! in_array($params['f'], array('html', 'cli', 'text'))) { echo "ERROR: Invalid value for format!\n"; return false; } return $params; } public function runHighlight() { $params = $this->parseHighlight(); if ($params === false) { return 1; } if (isset($params['h'])) { $this->usageHighlight(); return 0; } if (!isset($params['q'])) { if ($stdIn = $this->readStdin()) { $params['q'] = $stdIn; } } if (isset($params['a'])) { Context::setMode('ANSI_QUOTES'); } if (isset($params['q'])) { echo Formatter::format( $params['q'], array('type' => $params['f']) ); echo "\n"; return 0; } echo "ERROR: Missing parameters!\n"; $this->usageHighlight(); return 1; } public function usageLint() { echo "Usage: lint-query --query SQL [--ansi]\n"; echo " cat file.sql | lint-query\n"; } public function parseLint() { $longopts = array( 'help', 'query:', 'context:', 'ansi' ); $params = $this->getopt( 'hq:c:a', $longopts ); $this->mergeLongOpts($params, $longopts); return $params; } public function runLint() { $params = $this->parseLint(); if ($params === false) { return 1; } if (isset($params['h'])) { $this->usageLint(); return 0; } if (isset($params['c'])) { Context::load($params['c']); } if (!isset($params['q'])) { if ($stdIn = $this->readStdin()) { $params['q'] = $stdIn; } } if (isset($params['a'])) { Context::setMode('ANSI_QUOTES'); } if (isset($params['q'])) { $lexer = new Lexer($params['q'], false); $parser = new Parser($lexer->list); $errors = Error::get(array($lexer, $parser)); if (count($errors) === 0) { return 0; } $output = Error::format($errors); echo implode("\n", $output); echo "\n"; return 10; } echo "ERROR: Missing parameters!\n"; $this->usageLint(); return 1; } public function usageTokenize() { echo "Usage: tokenize-query --query SQL [--ansi]\n"; echo " cat file.sql | tokenize-query\n"; } public function parseTokenize() { $longopts = array( 'help', 'query:', 'ansi' ); $params = $this->getopt( 'hq:a', $longopts ); $this->mergeLongOpts($params, $longopts); return $params; } public function runTokenize() { $params = $this->parseTokenize(); if ($params === false) { return 1; } if (isset($params['h'])) { $this->usageTokenize(); return 0; } if (!isset($params['q'])) { if ($stdIn = $this->readStdin()) { $params['q'] = $stdIn; } } if (isset($params['a'])) { Context::setMode('ANSI_QUOTES'); } if (isset($params['q'])) { $lexer = new Lexer($params['q'], false); foreach ($lexer->list->tokens as $idx => $token) { echo '[TOKEN ', $idx, "]\n"; echo 'Type = ', $token->type, "\n"; echo 'Flags = ', $token->flags, "\n"; echo 'Value = '; var_export($token->value); echo "\n"; echo 'Token = '; var_export($token->token); echo "\n"; echo "\n"; } return 0; } echo "ERROR: Missing parameters!\n"; $this->usageTokenize(); return 1; } public function readStdin() { $read = array(STDIN); $write = array(); $except = array(); // Assume there's nothing to be read from STDIN. $stdin = null; // Try to read from STDIN. Wait 0.2 second before timing out. $result = stream_select($read, $write, $except, 0, 2000); if ($result > 0) { $stdin = stream_get_contents(STDIN); } return $stdin; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Table.php000064400000007337151502156020017433 0ustar00fields) || (! is_array($statement->fields)) || (! $statement->options->has('TABLE')) ) { return array(); } $ret = array(); foreach ($statement->fields as $field) { if (empty($field->key) || ($field->key->type !== 'FOREIGN KEY')) { continue; } $columns = array(); foreach ($field->key->columns as $column) { $columns[] = $column['name']; } $tmp = array( 'constraint' => $field->name, 'index_list' => $columns ); if (! empty($field->references)) { $tmp['ref_db_name'] = $field->references->table->database; $tmp['ref_table_name'] = $field->references->table->table; $tmp['ref_index_list'] = $field->references->columns; if ($opt = $field->references->options->has('ON UPDATE')) { $tmp['on_update'] = str_replace(' ', '_', $opt); } if ($opt = $field->references->options->has('ON DELETE')) { $tmp['on_delete'] = str_replace(' ', '_', $opt); } // if (($opt = $field->references->options->has('MATCH'))) { // $tmp['match'] = str_replace(' ', '_', $opt); // } } $ret[] = $tmp; } return $ret; } /** * Gets fields of the table. * * @param CreateStatement $statement the statement to be processed * * @return array */ public static function getFields($statement) { if (empty($statement->fields) || (! is_array($statement->fields)) || (! $statement->options->has('TABLE')) ) { return array(); } $ret = array(); foreach ($statement->fields as $field) { // Skipping keys. if (empty($field->type)) { continue; } $ret[$field->name] = array( 'type' => $field->type->name, 'timestamp_not_null' => false ); if ($field->options) { if ($field->type->name === 'TIMESTAMP') { if ($field->options->has('NOT NULL')) { $ret[$field->name]['timestamp_not_null'] = true; } } if ($option = $field->options->has('DEFAULT')) { $ret[$field->name]['default_value'] = $option; if ($option === 'CURRENT_TIMESTAMP') { $ret[$field->name]['default_current_timestamp'] = true; } } if ($option = $field->options->has('ON UPDATE')) { if ($option === 'CURRENT_TIMESTAMP') { $ret[$field->name]['on_update_current_timestamp'] = true; } } if ($option = $field->options->has('AS')) { $ret[$field->name]['generated'] = true; $ret[$field->name]['expr'] = $option; } } } return $ret; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php000064400000032702151502156020021146 0ustar00options = array_merge( array( /* * The starting delimiter. * * @var string */ 'delimiter' => ';', /* * Whether `DELIMITER` statements should be parsed. * * @var bool */ 'parse_delimiter' => false, /* * Whether a delimiter should be added at the end of the * statement. * * @var bool */ 'add_delimiter' => false, ), $options ); $this->query = $query; $this->setDelimiter($this->options['delimiter']); } /** * Sets the delimiter. * * Used to update the length of it too. * * @param string $delimiter */ public function setDelimiter($delimiter) { $this->delimiter = $delimiter; $this->delimiterLen = strlen($delimiter); } /** * Extracts a statement from the buffer. * * @param bool $end whether the end of the buffer was reached * * @return string|false */ public function extract($end = false) { /** * The last parsed position. * * This is statically defined because it is not used outside anywhere * outside this method and there is probably a (minor) performance * improvement to it. * * @var int */ static $i = 0; if (empty($this->query)) { return false; } /** * The length of the buffer. * * @var int */ $len = strlen($this->query); /** * The last index of the string that is going to be parsed. * * There must be a few characters left in the buffer so the parser can * avoid confusing some symbols that may have multiple meanings. * * For example, if the buffer ends in `-` that may be an operator or the * beginning of a comment. * * Another example if the buffer ends in `DELIMITE`. The parser is going * to require a few more characters because that may be a part of the * `DELIMITER` keyword or just a column named `DELIMITE`. * * Those extra characters are required only if there is more data * expected (the end of the buffer was not reached). * * @var int */ $loopLen = $end ? $len : $len - 16; for (; $i < $loopLen; ++$i) { /* * Handling backslash. * * Even if the next character is a special character that should be * treated differently, because of the preceding backslash, it will * be ignored. */ if ((($this->status & static::STATUS_COMMENT) === 0) && ($this->query[$i] === '\\')) { $this->current .= $this->query[$i] . $this->query[++$i]; continue; } /* * Handling special parses statuses. */ if ($this->status === static::STATUS_STRING_SINGLE_QUOTES) { // Single-quoted strings like 'foo'. if ($this->query[$i] === '\'') { $this->status = 0; } $this->current .= $this->query[$i]; continue; } elseif ($this->status === static::STATUS_STRING_DOUBLE_QUOTES) { // Double-quoted strings like "bar". if ($this->query[$i] === '"') { $this->status = 0; } $this->current .= $this->query[$i]; continue; } elseif ($this->status === static::STATUS_STRING_BACKTICK) { if ($this->query[$i] === '`') { $this->status = 0; } $this->current .= $this->query[$i]; continue; } elseif (($this->status === static::STATUS_COMMENT_BASH) || ($this->status === static::STATUS_COMMENT_SQL) ) { // Bash-like (#) or SQL-like (-- ) comments end in new line. if ($this->query[$i] === "\n") { $this->status = 0; } $this->current .= $this->query[$i]; continue; } elseif ($this->status === static::STATUS_COMMENT_C) { // C-like comments end in */. if (($this->query[$i - 1] === '*') && ($this->query[$i] === '/')) { $this->status = 0; } $this->current .= $this->query[$i]; continue; } /* * Checking if a string started. */ if ($this->query[$i] === '\'') { $this->status = static::STATUS_STRING_SINGLE_QUOTES; $this->current .= $this->query[$i]; continue; } elseif ($this->query[$i] === '"') { $this->status = static::STATUS_STRING_DOUBLE_QUOTES; $this->current .= $this->query[$i]; continue; } elseif ($this->query[$i] === '`') { $this->status = static::STATUS_STRING_BACKTICK; $this->current .= $this->query[$i]; continue; } /* * Checking if a comment started. */ if ($this->query[$i] === '#') { $this->status = static::STATUS_COMMENT_BASH; $this->current .= $this->query[$i]; continue; } elseif ($i + 2 < $len) { if (($this->query[$i] === '-') && ($this->query[$i + 1] === '-') && Context::isWhitespace($this->query[$i + 2])) { $this->status = static::STATUS_COMMENT_SQL; $this->current .= $this->query[$i]; continue; } elseif (($this->query[$i] === '/') && ($this->query[$i + 1] === '*') && ($this->query[$i + 2] !== '!')) { $this->status = static::STATUS_COMMENT_C; $this->current .= $this->query[$i]; continue; } } /* * Handling `DELIMITER` statement. * * The code below basically checks for * `strtoupper(substr($this->query, $i, 9)) === 'DELIMITER'` * * This optimization makes the code about 3 times faster. * * `DELIMITER` is not being considered a keyword. The only context * it has a special meaning is when it is the beginning of a * statement. This is the reason for the last condition. */ if (($i + 9 < $len) && (($this->query[$i] === 'D') || ($this->query[$i] === 'd')) && (($this->query[$i + 1] === 'E') || ($this->query[$i + 1] === 'e')) && (($this->query[$i + 2] === 'L') || ($this->query[$i + 2] === 'l')) && (($this->query[$i + 3] === 'I') || ($this->query[$i + 3] === 'i')) && (($this->query[$i + 4] === 'M') || ($this->query[$i + 4] === 'm')) && (($this->query[$i + 5] === 'I') || ($this->query[$i + 5] === 'i')) && (($this->query[$i + 6] === 'T') || ($this->query[$i + 6] === 't')) && (($this->query[$i + 7] === 'E') || ($this->query[$i + 7] === 'e')) && (($this->query[$i + 8] === 'R') || ($this->query[$i + 8] === 'r')) && Context::isWhitespace($this->query[$i + 9]) ) { // Saving the current index to be able to revert any parsing // done in this block. $iBak = $i; $i += 9; // Skipping `DELIMITER`. // Skipping whitespaces. while (($i < $len) && Context::isWhitespace($this->query[$i])) { ++$i; } // Parsing the delimiter. $delimiter = ''; while (($i < $len) && (! Context::isWhitespace($this->query[$i]))) { $delimiter .= $this->query[$i++]; } // Checking if the delimiter definition ended. if (($delimiter !== '') && ((($i < $len) && Context::isWhitespace($this->query[$i])) || (($i === $len) && $end)) ) { // Saving the delimiter. $this->setDelimiter($delimiter); // Whether this statement should be returned or not. $ret = ''; if (! empty($this->options['parse_delimiter'])) { // Appending the `DELIMITER` statement that was just // found to the current statement. $ret = trim( $this->current . ' ' . substr($this->query, $iBak, $i - $iBak) ); } // Removing the statement that was just extracted from the // query. $this->query = substr($this->query, $i); $i = 0; // Resetting the current statement. $this->current = ''; return $ret; } // Incomplete statement. Reverting $i = $iBak; return false; } /* * Checking if the current statement finished. * * The first letter of the delimiter is being checked as an * optimization. This code is almost as fast as the one above. * * There is no point in checking if two strings match if not even * the first letter matches. */ if (($this->query[$i] === $this->delimiter[0]) && (($this->delimiterLen === 1) || (substr($this->query, $i, $this->delimiterLen) === $this->delimiter)) ) { // Saving the statement that just ended. $ret = $this->current; // If needed, adds a delimiter at the end of the statement. if (! empty($this->options['add_delimiter'])) { $ret .= $this->delimiter; } // Removing the statement that was just extracted from the // query. $this->query = substr($this->query, $i + $this->delimiterLen); $i = 0; // Resetting the current statement. $this->current = ''; // Returning the statement. return trim($ret); } /* * Appending current character to current statement. */ $this->current .= $this->query[$i]; } if ($end && ($i === $len)) { // If the end of the buffer was reached, the buffer is emptied and // the current statement that was extracted is returned. $ret = $this->current; // Emptying the buffer. $this->query = ''; $i = 0; // Resetting the current statement. $this->current = ''; // Returning the statement. return trim($ret); } return ''; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Routine.php000064400000007133151502156020020023 0ustar00list); if ($type === null) { return array( '', '', '', '', '' ); } $options = array(); foreach ($type->options->options as $opt) { $options[] = is_string($opt) ? $opt : $opt['value']; } return array( '', '', $type->name, implode(',', $type->parameters), implode(' ', $options) ); } /** * Parses a parameter of a routine. * * @param string $param parameter's definition * * @return array */ public static function getParameter($param) { $lexer = new Lexer('(' . $param . ')'); // A dummy parser is used for error reporting. $param = ParameterDefinition::parse(new Parser(), $lexer->list); if (empty($param[0])) { return array( '', '', '', '', '' ); } $param = $param[0]; $options = array(); foreach ($param->type->options->options as $opt) { $options[] = is_string($opt) ? $opt : $opt['value']; } return array( empty($param->inOut) ? '' : $param->inOut, $param->name, $param->type->name, implode(',', $param->type->parameters), implode(' ', $options) ); } /** * Gets the parameters of a routine from the parse tree. * * @param CreateStatement $statement the statement to be processed * * @return array */ public static function getParameters($statement) { $retval = array( 'num' => 0, 'dir' => array(), 'name' => array(), 'type' => array(), 'length' => array(), 'length_arr' => array(), 'opts' => array() ); if (! empty($statement->parameters)) { $idx = 0; foreach ($statement->parameters as $param) { $retval['dir'][$idx] = $param->inOut; $retval['name'][$idx] = $param->name; $retval['type'][$idx] = $param->type->name; $retval['length'][$idx] = implode(',', $param->type->parameters); $retval['length_arr'][$idx] = $param->type->parameters; $retval['opts'][$idx] = array(); foreach ($param->type->options->options as $opt) { $retval['opts'][$idx][] = is_string($opt) ? $opt : $opt['value']; } $retval['opts'][$idx] = implode(' ', $retval['opts'][$idx]); ++$idx; } $retval['num'] = $idx; } return $retval; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Misc.php000064400000006101151502156020017263 0ustar00expr) || empty($statement->from) ) { return array(); } $retval = array(); $tables = array(); /** * Expressions that may contain aliases. * These are extracted from `FROM` and `JOIN` keywords. * * @var Expression[] */ $expressions = $statement->from; // Adding expressions from JOIN. if (! empty($statement->join)) { foreach ($statement->join as $join) { $expressions[] = $join->expr; } } foreach ($expressions as $expr) { if (! isset($expr->table) || ($expr->table === '')) { continue; } $thisDb = (isset($expr->database) && ($expr->database !== '')) ? $expr->database : $database; if (! isset($retval[$thisDb])) { $retval[$thisDb] = array( 'alias' => null, 'tables' => array() ); } if (! isset($retval[$thisDb]['tables'][$expr->table])) { $retval[$thisDb]['tables'][$expr->table] = array( 'alias' => (isset($expr->alias) && ($expr->alias !== '')) ? $expr->alias : null, 'columns' => array() ); } if (! isset($tables[$thisDb])) { $tables[$thisDb] = array(); } $tables[$thisDb][$expr->alias] = $expr->table; } foreach ($statement->expr as $expr) { if (! isset($expr->column, $expr->alias) || ($expr->column === '') || ($expr->alias === '') ) { continue; } $thisDb = (isset($expr->database) && ($expr->database !== '')) ? $expr->database : $database; if (isset($expr->table) && ($expr->table !== '')) { $thisTable = isset($tables[$thisDb][$expr->table]) ? $tables[$thisDb][$expr->table] : $expr->table; $retval[$thisDb]['tables'][$thisTable]['columns'][$expr->column] = $expr->alias; } else { foreach ($retval[$thisDb]['tables'] as &$table) { $table['columns'][$expr->column] = $expr->alias; } } } return $retval; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Formatter.php000064400000053371151502156020020346 0ustar00 true, 'INSERT' => true ); /** * Clauses that must be inlined. * * These clauses usually are short and it's nicer to have them inline. * * @var array */ public static $INLINE_CLAUSES = array( 'CREATE' => true, 'INTO' => true, 'LIMIT' => true, 'PARTITION BY' => true, 'PARTITION' => true, 'PROCEDURE' => true, 'SUBPARTITION BY' => true, 'VALUES' => true ); /** * Constructor. * * @param array $options the formatting options */ public function __construct(array $options = array()) { $this->options = $this->getMergedOptions($options); } /** * The specified formatting options are merged with the default values. * * @param array $options * * @return array */ private function getMergedOptions(array $options) { $options = array_merge( $this->getDefaultOptions(), $options ); if (isset($options['formats'])) { $options['formats'] = self::mergeFormats($this->getDefaultFormats(), $options['formats']); } else { $options['formats'] = $this->getDefaultFormats(); } if (is_null($options['line_ending'])) { $options['line_ending'] = $options['type'] === 'html' ? '
          ' : "\n"; } if (is_null($options['indentation'])) { $options['indentation'] = $options['type'] === 'html' ? '    ' : ' '; } // `parts_newline` requires `clause_newline` $options['parts_newline'] &= $options['clause_newline']; return $options; } /** * The default formatting options. * * @return array */ protected function getDefaultOptions() { return array( /* * The format of the result. * * @var string The type ('text', 'cli' or 'html') */ 'type' => php_sapi_name() === 'cli' ? 'cli' : 'text', /* * The line ending used. * By default, for text this is "\n" and for HTML this is "
          ". * * @var string */ 'line_ending' => null, /* * The string used for indentation. * * @var string */ 'indentation' => null, /* * Whether comments should be removed or not. * * @var bool */ 'remove_comments' => false, /* * Whether each clause should be on a new line. * * @var bool */ 'clause_newline' => true, /* * Whether each part should be on a new line. * Parts are delimited by brackets and commas. * * @var bool */ 'parts_newline' => true, /* * Whether each part of each clause should be indented. * * @var bool */ 'indent_parts' => true ); } /** * The styles used for HTML formatting. * array($type, $flags, $span, $callback). * * @return array */ protected function getDefaultFormats() { return array( array( 'type' => Token::TYPE_KEYWORD, 'flags' => Token::FLAG_KEYWORD_RESERVED, 'html' => 'class="sql-reserved"', 'cli' => "\x1b[35m", 'function' => 'strtoupper', ), array( 'type' => Token::TYPE_KEYWORD, 'flags' => 0, 'html' => 'class="sql-keyword"', 'cli' => "\x1b[95m", 'function' => 'strtoupper', ), array( 'type' => Token::TYPE_COMMENT, 'flags' => 0, 'html' => 'class="sql-comment"', 'cli' => "\x1b[37m", 'function' => '', ), array( 'type' => Token::TYPE_BOOL, 'flags' => 0, 'html' => 'class="sql-atom"', 'cli' => "\x1b[36m", 'function' => 'strtoupper', ), array( 'type' => Token::TYPE_NUMBER, 'flags' => 0, 'html' => 'class="sql-number"', 'cli' => "\x1b[92m", 'function' => 'strtolower', ), array( 'type' => Token::TYPE_STRING, 'flags' => 0, 'html' => 'class="sql-string"', 'cli' => "\x1b[91m", 'function' => '', ), array( 'type' => Token::TYPE_SYMBOL, 'flags' => Token::FLAG_SYMBOL_PARAMETER, 'html' => 'class="sql-parameter"', 'cli' => "\x1b[31m", 'function' => '', ), array( 'type' => Token::TYPE_SYMBOL, 'flags' => 0, 'html' => 'class="sql-variable"', 'cli' => "\x1b[36m", 'function' => '', ) ); } private static function mergeFormats(array $formats, array $newFormats) { $added = array(); $integers = array( 'flags', 'type' ); $strings = array( 'html', 'cli', 'function' ); /* Sanitize the array so that we do not have to care later */ foreach ($newFormats as $j => $new) { foreach ($integers as $name) { if (! isset($new[$name])) { $newFormats[$j][$name] = 0; } } foreach ($strings as $name) { if (! isset($new[$name])) { $newFormats[$j][$name] = ''; } } } /* Process changes to existing formats */ foreach ($formats as $i => $original) { foreach ($newFormats as $j => $new) { if ($new['type'] === $original['type'] && $original['flags'] === $new['flags'] ) { $formats[$i] = $new; $added[] = $j; } } } /* Add not already handled formats */ foreach ($newFormats as $j => $new) { if (! in_array($j, $added)) { $formats[] = $new; } } return $formats; } /** * Formats the given list of tokens. * * @param TokensList $list the list of tokens * * @return string */ public function formatList($list) { /** * The query to be returned. * * @var string */ $ret = ''; /** * The indentation level. * * @var int */ $indent = 0; /** * Whether the line ended. * * @var bool */ $lineEnded = false; /** * Whether current group is short (no linebreaks). * * @var bool */ $shortGroup = false; /** * The name of the last clause. * * @var string */ $lastClause = ''; /** * A stack that keeps track of the indentation level every time a new * block is found. * * @var array */ $blocksIndentation = array(); /** * A stack that keeps track of the line endings every time a new block * is found. * * @var array */ $blocksLineEndings = array(); /** * Whether clause's options were formatted. * * @var bool */ $formattedOptions = false; /** * Previously parsed token. * * @var Token|null */ $prev = null; // In order to be able to format the queries correctly, the next token // must be taken into consideration. The loop below uses two pointers, // `$prev` and `$curr` which store two consecutive tokens. // Actually, at every iteration the previous token is being used. for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $curr = $list->tokens[$list->idx]; if ($list->idx + 1 < $list->count) { $next = $list->tokens[$list->idx + 1]; } else { $next = null; } if ($curr->type === Token::TYPE_WHITESPACE) { // Keep linebreaks before and after comments if (strpos($curr->token, "\n") !== false && ( ($prev !== null && $prev->type === Token::TYPE_COMMENT) || ($next !== null && $next->type === Token::TYPE_COMMENT) ) ) { $lineEnded = true; } // Whitespaces are skipped because the formatter adds its own. continue; } if ($curr->type === Token::TYPE_COMMENT && $this->options['remove_comments']) { // Skip Comments if option `remove_comments` is enabled continue; } // Checking if pointers were initialized. if ($prev !== null) { // Checking if a new clause started. if (static::isClause($prev) !== false) { $lastClause = $prev->value; $formattedOptions = false; } // The options of a clause should stay on the same line and everything that follows. if ($this->options['parts_newline'] && ! $formattedOptions && empty(self::$INLINE_CLAUSES[$lastClause]) && ( $curr->type !== Token::TYPE_KEYWORD || ( $curr->type === Token::TYPE_KEYWORD && $curr->flags & Token::FLAG_KEYWORD_FUNCTION ) ) ) { $formattedOptions = true; $lineEnded = true; ++$indent; } // Checking if this clause ended. if ($isClause = static::isClause($curr)) { if (($isClause === 2 || $this->options['clause_newline']) && empty(self::$SHORT_CLAUSES[$lastClause])) { $lineEnded = true; if ($this->options['parts_newline'] && $indent > 0) { --$indent; } } } // Inline JOINs if (($prev->type === Token::TYPE_KEYWORD && isset(JoinKeyword::$JOINS[$prev->value])) || (in_array($curr->value, array('ON', 'USING'), true) && isset(JoinKeyword::$JOINS[$list->tokens[$list->idx - 2]->value])) || isset($list->tokens[$list->idx - 4], JoinKeyword::$JOINS[$list->tokens[$list->idx - 4]->value]) || isset($list->tokens[$list->idx - 6], JoinKeyword::$JOINS[$list->tokens[$list->idx - 6]->value]) ) { $lineEnded = false; } // Indenting BEGIN ... END blocks. if ($prev->type === Token::TYPE_KEYWORD && $prev->keyword === 'BEGIN') { $lineEnded = true; $blocksIndentation[] = $indent; ++$indent; } elseif ($curr->type === Token::TYPE_KEYWORD && $curr->keyword === 'END') { $lineEnded = true; $indent = array_pop($blocksIndentation); } // Formatting fragments delimited by comma. if ($prev->type === Token::TYPE_OPERATOR && $prev->value === ',') { // Fragments delimited by a comma are broken into multiple // pieces only if the clause is not inlined or this fragment // is between brackets that are on new line. if (end($blocksLineEndings) === true || ( empty(self::$INLINE_CLAUSES[$lastClause]) && ! $shortGroup && $this->options['parts_newline'] ) ) { $lineEnded = true; } } // Handling brackets. // Brackets are indented only if the length of the fragment between // them is longer than 30 characters. if ($prev->type === Token::TYPE_OPERATOR && $prev->value === '(') { $blocksIndentation[] = $indent; $shortGroup = true; if (static::getGroupLength($list) > 30) { ++$indent; $lineEnded = true; $shortGroup = false; } $blocksLineEndings[] = $lineEnded; } elseif ($curr->type === Token::TYPE_OPERATOR && $curr->value === ')') { $indent = array_pop($blocksIndentation); $lineEnded |= array_pop($blocksLineEndings); $shortGroup = false; } // Adding the token. $ret .= $this->toString($prev); // Finishing the line. if ($lineEnded) { $ret .= $this->options['line_ending'] . str_repeat($this->options['indentation'], $indent); $lineEnded = false; } else { // If the line ended there is no point in adding whitespaces. // Also, some tokens do not have spaces before or after them. if (// A space after delimiters that are longer than 2 characters. $prev->keyword === 'DELIMITER' || ! ( ($prev->type === Token::TYPE_OPERATOR && ($prev->value === '.' || $prev->value === '(')) // No space after . ( || ($curr->type === Token::TYPE_OPERATOR && ($curr->value === '.' || $curr->value === ',' || $curr->value === '(' || $curr->value === ')')) // No space before . , ( ) || $curr->type === Token::TYPE_DELIMITER && mb_strlen($curr->value, 'UTF-8') < 2 ) ) { $ret .= ' '; } } } // Iteration finished, consider current token as previous. $prev = $curr; } if ($this->options['type'] === 'cli') { return $ret . "\x1b[0m"; } return $ret; } public function escapeConsole($string) { return str_replace( array( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0A", "\x0B", "\x0C", "\x0D", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F", ), array( '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0A', '\x0B', '\x0C', '\x0D', '\x0E', '\x0F', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1A', '\x1B', '\x1C', '\x1D', '\x1E', '\x1F', ), $string ); } /** * Tries to print the query and returns the result. * * @param Token $token the token to be printed * * @return string */ public function toString($token) { $text = $token->token; static $prev; foreach ($this->options['formats'] as $format) { if ($token->type === $format['type'] && ($token->flags & $format['flags']) === $format['flags'] ) { // Running transformation function. if (! empty($format['function'])) { $func = $format['function']; $text = $func($text); } // Formatting HTML. if ($this->options['type'] === 'html') { return '' . htmlspecialchars($text, ENT_NOQUOTES) . ''; } elseif ($this->options['type'] === 'cli') { if ($prev !== $format['cli']) { $prev = $format['cli']; return $format['cli'] . $this->escapeConsole($text); } return $this->escapeConsole($text); } break; } } if ($this->options['type'] === 'cli') { if ($prev !== "\x1b[39m") { $prev = "\x1b[39m"; return "\x1b[39m" . $this->escapeConsole($text); } return $this->escapeConsole($text); } elseif ($this->options['type'] === 'html') { return htmlspecialchars($text, ENT_NOQUOTES); } return $text; } /** * Formats a query. * * @param string $query The query to be formatted * @param array $options the formatting options * * @return string the formatted string */ public static function format($query, array $options = array()) { $lexer = new Lexer($query); $formatter = new self($options); return $formatter->formatList($lexer->list); } /** * Computes the length of a group. * * A group is delimited by a pair of brackets. * * @param TokensList $list the list of tokens * * @return int */ public static function getGroupLength($list) { /** * The number of opening brackets found. * This counter starts at one because by the time this function called, * the list already advanced one position and the opening bracket was * already parsed. * * @var int */ $count = 1; /** * The length of this group. * * @var int */ $length = 0; for ($idx = $list->idx; $idx < $list->count; ++$idx) { // Counting the brackets. if ($list->tokens[$idx]->type === Token::TYPE_OPERATOR) { if ($list->tokens[$idx]->value === '(') { ++$count; } elseif ($list->tokens[$idx]->value === ')') { --$count; if ($count === 0) { break; } } } // Keeping track of this group's length. $length += mb_strlen($list->tokens[$idx]->value, 'UTF-8'); } return $length; } /** * Checks if a token is a statement or a clause inside a statement. * * @param Token $token the token to be checked * * @return int|bool */ public static function isClause($token) { if (($token->type === Token::TYPE_KEYWORD && isset(Parser::$STATEMENT_PARSERS[$token->keyword])) || ($token->type === Token::TYPE_NONE && strtoupper($token->token) === 'DELIMITER') ) { return 2; } elseif ($token->type === Token::TYPE_KEYWORD && isset(Parser::$KEYWORD_PARSERS[$token->keyword]) ) { return 1; } return false; } } db/login/vendor/phpmyadmin/sql-parser/src/Utils/Error.php000064400000005232151502156020017465 0ustar00errors as $err) { $ret[] = array( $err->getMessage(), $err->getCode(), $err->ch, $err->pos ); } } elseif ($obj instanceof Parser) { foreach ($obj->errors as $err) { $ret[] = array( $err->getMessage(), $err->getCode(), $err->token->token, $err->token->position ); } } } return $ret; } /** * Formats the specified errors. * * @param array $errors the errors to be formatted * @param string $format The format of an error. * '$1$d' is replaced by the position of this error. * '$2$s' is replaced by the error message. * '$3$d' is replaced by the error code. * '$4$s' is replaced by the string that caused the * issue. * '$5$d' is replaced by the position of the string. * * @return array */ public static function format( $errors, $format = '#%1$d: %2$s (near "%4$s" at position %5$d)' ) { $ret = array(); $i = 0; foreach ($errors as $key => $err) { $ret[$key] = sprintf( $format, ++$i, $err[0], $err[1], htmlspecialchars($err[2]), $err[3] ); } return $ret; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/ArrayObj.php000064400000012042151502156020021127 0ustar00raw = $raw; $this->values = $values; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return ArrayObj|Component[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = empty($options['type']) ? new self() : array(); /** * The last raw expression. * * @var string */ $lastRaw = ''; /** * The last value. * * @var string */ $lastValue = ''; /** * Counts brackets. * * @var int */ $brackets = 0; /** * Last separator (bracket or comma). * * @var bool */ $isCommaLast = false; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT) ) { $lastRaw .= $token->token; $lastValue = trim($lastValue) . ' '; continue; } if (($brackets === 0) && (($token->type !== Token::TYPE_OPERATOR) || ($token->value !== '(')) ) { $parser->error('An opening bracket was expected.', $token); break; } if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { if (++$brackets === 1) { // 1 is the base level. continue; } } elseif ($token->value === ')') { if (--$brackets === 0) { // Array ended. break; } } elseif ($token->value === ',') { if ($brackets === 1) { $isCommaLast = true; if (empty($options['type'])) { $ret->raw[] = trim($lastRaw); $ret->values[] = trim($lastValue); $lastRaw = $lastValue = ''; } } continue; } } if (empty($options['type'])) { $lastRaw .= $token->token; $lastValue .= $token->value; } else { $ret[] = $options['type']::parse( $parser, $list, empty($options['typeOptions']) ? array() : $options['typeOptions'] ); } } // Handling last element. // // This is treated differently to treat the following cases: // // => array() // (,) => array('', '') // () => array() // (a,) => array('a', '') // (a) => array('a') // $lastRaw = trim($lastRaw); if ((empty($options['type'])) && ((strlen($lastRaw) > 0) || ($isCommaLast)) ) { $ret->raw[] = $lastRaw; $ret->values[] = trim($lastValue); } return $ret; } /** * @param ArrayObj|ArrayObj[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } elseif (! empty($component->raw)) { return '(' . implode(', ', $component->raw) . ')'; } return '(' . implode(', ', $component->values) . ')'; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php000064400000016060151502156020023404 0ustar00 array( 1, 'var', ), 'ENGINE' => array( 1, 'var', ), 'COMMENT' => array( 2, 'var', ), 'DATA DIRECTORY' => array( 3, 'var', ), 'INDEX DIRECTORY' => array( 4, 'var', ), 'MAX_ROWS' => array( 5, 'var', ), 'MIN_ROWS' => array( 6, 'var', ), 'TABLESPACE' => array( 7, 'var', ), 'NODEGROUP' => array( 8, 'var', ) ); /** * Whether this entry is a subpartition or a partition. * * @var bool */ public $isSubpartition; /** * The name of this partition. * * @var string */ public $name; /** * The type of this partition (what follows the `VALUES` keyword). * * @var string */ public $type; /** * The expression used to defined this partition. * * @var Expression|string */ public $expr; /** * The subpartitions of this partition. * * @var PartitionDefinition[] */ public $subpartitions; /** * The options of this field. * * @var OptionsArray */ public $options; /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return PartitionDefinition */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 -------------[ PARTITION | SUBPARTITION ]------------> 1 * * 1 -----------------------[ name ]----------------------> 2 * * 2 ----------------------[ VALUES ]---------------------> 3 * * 3 ---------------------[ LESS THAN ]-------------------> 4 * 3 ------------------------[ IN ]-----------------------> 4 * * 4 -----------------------[ expr ]----------------------> 5 * * 5 ----------------------[ options ]--------------------> 6 * * 6 ------------------[ subpartitions ]------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $ret->isSubpartition = ($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITION'); $state = 1; } elseif ($state === 1) { $ret->name = $token->value; // Looking ahead for a 'VALUES' keyword. // Loop until the end of the partition name (delimited by a whitespace) while ($nextToken = $list->tokens[++$list->idx]) { if ($nextToken->type !== Token::TYPE_NONE) { break; } $ret->name .= $nextToken->value; } $idx = $list->idx--; // Get the first token after the white space. $nextToken = $list->tokens[++$idx]; $state = ($nextToken->type === Token::TYPE_KEYWORD) && ($nextToken->value === 'VALUES') ? 2 : 5; } elseif ($state === 2) { $state = 3; } elseif ($state === 3) { $ret->type = $token->value; $state = 4; } elseif ($state === 4) { if ($token->value === 'MAXVALUE') { $ret->expr = $token->value; } else { $ret->expr = Expression::parse( $parser, $list, array( 'parenthesesDelimited' => true, 'breakOnAlias' => true ) ); } $state = 5; } elseif ($state === 5) { $ret->options = OptionsArray::parse($parser, $list, static::$OPTIONS); $state = 6; } elseif ($state === 6) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $ret->subpartitions = ArrayObj::parse( $parser, $list, array( 'type' => 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition' ) ); ++$list->idx; } break; } } --$list->idx; return $ret; } /** * @param PartitionDefinition|PartitionDefinition[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return "(\n" . implode(",\n", $component) . "\n)"; } if ($component->isSubpartition) { return trim('SUBPARTITION ' . $component->name . ' ' . $component->options); } $subpartitions = empty($component->subpartitions) ? '' : ' ' . self::build($component->subpartitions); return trim( 'PARTITION ' . $component->name . (empty($component->type) ? '' : ' VALUES ' . $component->type . ' ' . $component->expr . ' ') . ((! empty($component->options) && ! empty($component->type)) ? '' : ' ') . $component->options . $subpartitions ); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/IntoKeyword.php000064400000020053151502156020021675 0ustar00 array( 1, 'expr', ), 'OPTIONALLY' => 2, 'ENCLOSED BY' => array( 3, 'expr', ), 'ESCAPED BY' => array( 4, 'expr', ) ); /** * LINES Options for `SELECT...INTO` statements. * * @var array */ public static $LINES_OPTIONS = array( 'STARTING BY' => array( 1, 'expr', ), 'TERMINATED BY' => array( 2, 'expr', ) ); /** * Type of target (OUTFILE or SYMBOL). * * @var string */ public $type; /** * The destination, which can be a table or a file. * * @var string|Expression */ public $dest; /** * The name of the columns. * * @var array */ public $columns; /** * The values to be selected into (SELECT .. INTO @var1). * * @var Expression[] */ public $values; /** * Options for FIELDS/COLUMNS keyword. * * @var OptionsArray * * @see static::$FIELDS_OPTIONS */ public $fields_options; /** * Whether to use `FIELDS` or `COLUMNS` while building. * * @var bool */ public $fields_keyword; /** * Options for OPTIONS keyword. * * @var OptionsArray * * @see static::$LINES_OPTIONS */ public $lines_options; /** * Constructor. * * @param string $type type of destination (may be OUTFILE) * @param string|Expression $dest actual destination * @param array $columns column list of destination * @param array $values selected fields * @param OptionsArray $fields_options options for FIELDS/COLUMNS keyword * @param bool $fields_keyword options for OPTIONS keyword */ public function __construct( $type = null, $dest = null, $columns = null, $values = null, $fields_options = null, $fields_keyword = null ) { $this->type = $type; $this->dest = $dest; $this->columns = $columns; $this->values = $values; $this->fields_options = $fields_options; $this->fields_keyword = $fields_keyword; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return IntoKeyword */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 -----------------------[ name ]----------------------> 1 * 0 ---------------------[ OUTFILE ]---------------------> 2 * * 1 ------------------------[ ( ]------------------------> (END) * * 2 ---------------------[ filename ]--------------------> 1 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { if (($state === 0) && ($token->keyword === 'OUTFILE')) { $ret->type = 'OUTFILE'; $state = 2; continue; } // No other keyword is expected except for $state = 4, which expects `LINES` if ($state !== 4) { break; } } if ($state === 0) { if ((isset($options['fromInsert']) && $options['fromInsert']) || (isset($options['fromReplace']) && $options['fromReplace']) ) { $ret->dest = Expression::parse( $parser, $list, array( 'parseField' => 'table', 'breakOnAlias' => true ) ); } else { $ret->values = ExpressionArray::parse($parser, $list); } $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $ret->columns = ArrayObj::parse($parser, $list)->values; ++$list->idx; } break; } elseif ($state === 2) { $ret->dest = $token->value; $state = 3; } elseif ($state === 3) { $ret->parseFileOptions($parser, $list, $token->value); $state = 4; } elseif ($state === 4) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'LINES') { break; } $ret->parseFileOptions($parser, $list, $token->value); $state = 5; } } --$list->idx; return $ret; } public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS') { ++$list->idx; if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { // parse field options $this->fields_options = OptionsArray::parse( $parser, $list, static::$FIELDS_OPTIONS ); $this->fields_keyword = ($keyword === 'FIELDS'); } else { // parse line options $this->lines_options = OptionsArray::parse( $parser, $list, static::$LINES_OPTIONS ); } } /** * @param IntoKeyword $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if ($component->dest instanceof Expression) { $columns = ! empty($component->columns) ? '(`' . implode('`, `', $component->columns) . '`)' : ''; return $component->dest . $columns; } elseif (isset($component->values)) { return ExpressionArray::build($component->values); } $ret = 'OUTFILE "' . $component->dest . '"'; $fields_options_str = OptionsArray::build($component->fields_options); if (trim($fields_options_str) !== '') { $ret .= $component->fields_keyword ? ' FIELDS' : ' COLUMNS'; $ret .= ' ' . $fields_options_str; } $lines_options_str = OptionsArray::build($component->lines_options, array('expr' => true)); if (trim($lines_options_str) !== '') { $ret .= ' LINES ' . $lines_options_str; } return $ret; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/Reference.php000064400000007656151502156020021333 0ustar00 array( 1, 'var', ), 'ON DELETE' => array( 2, 'var', ), 'ON UPDATE' => array( 3, 'var', ) ); /** * The referenced table. * * @var Expression */ public $table; /** * The referenced columns. * * @var array */ public $columns; /** * The options of the referencing. * * @var OptionsArray */ public $options; /** * Constructor. * * @param Expression $table the name of the table referenced * @param array $columns the columns referenced * @param OptionsArray $options the options */ public function __construct($table = null, array $columns = array(), $options = null) { $this->table = $table; $this->columns = $columns; $this->options = $options; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return Reference */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 ----------------------[ table ]---------------------> 1 * * 1 ---------------------[ columns ]--------------------> 2 * * 2 ---------------------[ options ]--------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $ret->table = Expression::parse( $parser, $list, array( 'parseField' => 'table', 'breakOnAlias' => true ) ); $state = 1; } elseif ($state === 1) { $ret->columns = ArrayObj::parse($parser, $list)->values; $state = 2; } elseif ($state === 2) { $ret->options = OptionsArray::parse($parser, $list, static::$REFERENCES_OPTIONS); ++$list->idx; break; } } --$list->idx; return $ret; } /** * @param Reference $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { return trim( $component->table . ' (' . implode(', ', Context::escape($component->columns)) . ') ' . $component->options ); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/ExpressionArray.php000064400000007670151502156020022567 0ustar00 1 * * 1 ------------------------[ , ]------------------------> 0 * 1 -----------------------[ else ]----------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED) && ((~$token->flags & Token::FLAG_KEYWORD_FUNCTION)) && ($token->value !== 'DUAL') && ($token->value !== 'NULL') && ($token->value !== 'CASE') ) { // No keyword is expected. break; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD && $token->value === 'CASE' ) { $expr = CaseExpression::parse($parser, $list, $options); } else { $expr = Expression::parse($parser, $list, $options); } if ($expr === null) { break; } $ret[] = $expr; $state = 1; } elseif ($state === 1) { if ($token->value === ',') { $state = 0; } else { break; } } } if ($state === 0) { $parser->error( 'An expression was expected.', $list->tokens[$list->idx] ); } --$list->idx; if (is_array($ret)) { $retIndex = count($ret) - 1; if (isset($ret[$retIndex])) { $expr = $ret[$retIndex]->expr; if (preg_match('/\s*--\s.*$/', $expr, $matches)) { $found = $matches[0]; $ret[$retIndex]->expr = substr($expr, 0, strlen($expr) - strlen($found)); } } } return $ret; } /** * @param Expression[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $ret = array(); foreach ($component as $frag) { $ret[] = $frag::build($frag); } return implode(', ', $ret); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/GroupKeyword.php000064400000006606151502156020022070 0ustar00expr = $expr; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return GroupKeyword[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 --------------------[ expression ]-------------------> 1 * * 1 ------------------------[ , ]------------------------> 0 * 1 -------------------[ ASC / DESC ]--------------------> 1 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $expr->expr = Expression::parse($parser, $list); $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_KEYWORD) && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) ) { $expr->type = $token->keyword; } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',') ) { if (! empty($expr->expr)) { $ret[] = $expr; } $expr = new self(); $state = 0; } else { break; } } } // Last iteration was not processed. if (! empty($expr->expr)) { $ret[] = $expr; } --$list->idx; return $ret; } /** * @param GroupKeyword|GroupKeyword[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } return trim($component->expr); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/UnionKeyword.php000064400000001362151502156020022056 0ustar00 $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $tmp = array(); foreach ($component as $componentPart) { $tmp[] = $componentPart[0] . ' ' . $componentPart[1]; } return implode(' ', $tmp); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/IndexHint.php000064400000014436151502156020021321 0ustar00type = $type; $this->indexOrKey = $indexOrKey; $this->for = $for; $this->indexes = $indexes; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return IndexHint|Component[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); $expr->type = isset($options['type']) ? $options['type'] : null; /** * The state of the parser. * * Below are the states of the parser. * 0 ----------------- [ USE/IGNORE/FORCE ]-----------------> 1 * 1 -------------------- [ INDEX/KEY ] --------------------> 2 * 2 ----------------------- [ FOR ] -----------------------> 3 * 2 -------------------- [ expr_list ] --------------------> 0 * 3 -------------- [ JOIN/GROUP BY/ORDER BY ] -------------> 4 * 4 -------------------- [ expr_list ] --------------------> 0 * @var int */ $state = 0; // By design, the parser will parse first token after the keyword. So, the keyword // must be analyzed too, in order to determine the type of this index hint. if ($list->idx > 0) { --$list->idx; } for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } switch ($state) { case 0: if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'USE' || $token->keyword === 'IGNORE' || $token->keyword === 'FORCE') { $expr->type = $token->keyword; $state = 1; } else { break 2; } } break; case 1: if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'INDEX' || $token->keyword === 'KEY') { $expr->indexOrKey = $token->keyword; } else { $parser->error('Unexpected keyword.', $token); } $state = 2; } else { // we expect the token to be a keyword $parser->error('Unexpected token.', $token); } break; case 2: if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'FOR') { $state = 3; } else { $expr->indexes = ExpressionArray::parse($parser, $list); $state = 0; $ret[] = $expr; $expr = new self(); } break; case 3: if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'JOIN' || $token->keyword === 'GROUP BY' || $token->keyword === 'ORDER BY') { $expr->for = $token->keyword; } else { $parser->error('Unexpected keyword.', $token); } $state = 4; } else { // we expect the token to be a keyword $parser->error('Unexpected token.', $token); } break; case 4: $expr->indexes = ExpressionArray::parse($parser, $list); $state = 0; $ret[] = $expr; $expr = new self(); break; } } --$list->idx; return $ret; } /** * @param ArrayObj|ArrayObj[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(' ', $component); } $ret = $component->type . ' ' . $component->indexOrKey . ' '; if ($component->for !== null) { $ret .= 'FOR ' . $component->for . ' '; } return $ret . ExpressionArray::build($component->indexes); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/Condition.php000064400000013672151502156020021356 0ustar00 1, 'AND' => 1, 'BETWEEN' => 1, 'EXISTS' => 1, 'IF' => 1, 'IN' => 1, 'INTERVAL' => 1, 'IS' => 1, 'LIKE' => 1, 'MATCH' => 1, 'NOT IN' => 1, 'NOT NULL' => 1, 'NOT' => 1, 'NULL' => 1, 'OR' => 1, 'REGEXP' => 1, 'RLIKE' => 1, 'XOR' => 1 ); /** * Identifiers recognized. * * @var array */ public $identifiers = array(); /** * Whether this component is an operator. * * @var bool */ public $isOperator = false; /** * The condition. * * @var string */ public $expr; /** * Constructor. * * @param string $expr the condition or the operator */ public function __construct($expr = null) { $this->expr = trim($expr); } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return Condition[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * Counts brackets. * * @var int */ $brackets = 0; /** * Whether there was a `BETWEEN` keyword before or not. * * It is required to keep track of them because their structure contains * the keyword `AND`, which is also an operator that delimits * expressions. * * @var bool */ $betweenBefore = false; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if ($token->type === Token::TYPE_COMMENT) { continue; } // Replacing all whitespaces (new lines, tabs, etc.) with a single // space character. if ($token->type === Token::TYPE_WHITESPACE) { $expr->expr .= ' '; continue; } // Conditions are delimited by logical operators. if (in_array($token->value, static::$DELIMITERS, true)) { if ($betweenBefore && ($token->value === 'AND')) { // The syntax of keyword `BETWEEN` is hard-coded. $betweenBefore = false; } else { // The expression ended. $expr->expr = trim($expr->expr); if (! empty($expr->expr)) { $ret[] = $expr; } // Adding the operator. $expr = new self($token->value); $expr->isOperator = true; $ret[] = $expr; // Preparing to parse another condition. $expr = new self(); continue; } } if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED) && ! ($token->flags & Token::FLAG_KEYWORD_FUNCTION) ) { if ($token->value === 'BETWEEN') { $betweenBefore = true; } if (($brackets === 0) && empty(static::$ALLOWED_KEYWORDS[$token->value])) { break; } } if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { ++$brackets; } elseif ($token->value === ')') { if ($brackets === 0) { break; } --$brackets; } } $expr->expr .= $token->token; if (($token->type === Token::TYPE_NONE) || (($token->type === Token::TYPE_KEYWORD) && (! ($token->flags & Token::FLAG_KEYWORD_RESERVED))) || ($token->type === Token::TYPE_STRING) || ($token->type === Token::TYPE_SYMBOL) ) { if (! in_array($token->value, $expr->identifiers)) { $expr->identifiers[] = $token->value; } } } // Last iteration was not processed. $expr->expr = trim($expr->expr); if (! empty($expr->expr)) { $ret[] = $expr; } --$list->idx; return $ret; } /** * @param Condition[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(' ', $component); } return $component->expr; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/FunctionCall.php000064400000006010151502156020021775 0ustar00name = $name; if (is_array($parameters)) { $this->parameters = new ArrayObj($parameters); } elseif ($parameters instanceof ArrayObj) { $this->parameters = $parameters; } } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return FunctionCall */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 ----------------------[ name ]-----------------------> 1 * * 1 --------------------[ parameters ]-------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $ret->name = $token->value; $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $ret->parameters = ArrayObj::parse($parser, $list); } break; } } return $ret; } /** * @param FunctionCall $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { return $component->name . $component->parameters; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/CreateDefinition.php000064400000025325151502156020022642 0ustar00 true, 'NOT NULL' => 1, 'NULL' => 1, 'DEFAULT' => array( 2, 'expr', array('breakOnAlias' => true) ), /* Following are not according to grammar, but MySQL happily accepts * these at any location */ 'CHARSET' => array( 2, 'var', ), 'COLLATE' => array( 3, 'var', ), 'AUTO_INCREMENT' => 3, 'PRIMARY' => 4, 'PRIMARY KEY' => 4, 'UNIQUE' => 4, 'UNIQUE KEY' => 4, 'COMMENT' => array( 5, 'var', ), 'COLUMN_FORMAT' => array( 6, 'var', ), 'ON UPDATE' => array( 7, 'expr', ), // Generated columns options. 'GENERATED ALWAYS' => 8, 'AS' => array( 9, 'expr', array('parenthesesDelimited' => true) ), 'VIRTUAL' => 10, 'PERSISTENT' => 11, 'STORED' => 11, 'CHECK' => array( 12, 'expr', array('parenthesesDelimited' => true), ), 'INVISIBLE' => 13, // Common entries. // // NOTE: Some of the common options are not in the same order which // causes troubles when checking if the options are in the right order. // I should find a way to define multiple sets of options and make the // parser select the right set. // // 'UNIQUE' => 4, // 'UNIQUE KEY' => 4, // 'COMMENT' => array(5, 'var'), // 'NOT NULL' => 1, // 'NULL' => 1, // 'PRIMARY' => 4, // 'PRIMARY KEY' => 4, ); /** * The name of the new column. * * @var string */ public $name; /** * Whether this field is a constraint or not. * * @var bool */ public $isConstraint; /** * The data type of thew new column. * * @var DataType */ public $type; /** * The key. * * @var Key */ public $key; /** * The table that is referenced. * * @var Reference */ public $references; /** * The options of this field. * * @var OptionsArray */ public $options; /** * Constructor. * * @param string $name the name of the field * @param OptionsArray $options the options of this field * @param DataType|Key $type the data type of this field or the key * @param bool $isConstraint whether this field is a constraint or not * @param Reference $references references */ public function __construct( $name = null, $options = null, $type = null, $isConstraint = false, $references = null ) { $this->name = $name; $this->options = $options; if ($type instanceof DataType) { $this->type = $type; } elseif ($type instanceof Key) { $this->key = $type; $this->isConstraint = $isConstraint; $this->references = $references; } } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return CreateDefinition[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 -----------------------[ ( ]------------------------> 1 * * 1 --------------------[ CONSTRAINT ]------------------> 1 * 1 -----------------------[ key ]----------------------> 2 * 1 -------------[ constraint / column name ]-----------> 2 * * 2 --------------------[ data type ]-------------------> 3 * * 3 ---------------------[ options ]--------------------> 4 * * 4 --------------------[ REFERENCES ]------------------> 4 * * 5 ------------------------[ , ]-----------------------> 1 * 5 ------------------------[ ) ]-----------------------> 6 (-1) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $state = 1; } else { $parser->error( 'An opening bracket was expected.', $token ); break; } } elseif ($state === 1) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'CONSTRAINT') { $expr->isConstraint = true; } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_KEY)) { $expr->key = Key::parse($parser, $list); $state = 4; } elseif ($token->type === Token::TYPE_SYMBOL || $token->type === Token::TYPE_NONE) { $expr->name = $token->value; if (! $expr->isConstraint) { $state = 2; } } elseif ($token->type === Token::TYPE_KEYWORD) { if ($token->flags & Token::FLAG_KEYWORD_RESERVED) { // Reserved keywords can't be used // as field names without backquotes $parser->error( 'A symbol name was expected! ' . 'A reserved keyword can not be used ' . 'as a column name without backquotes.', $token ); return $ret; } // Non-reserved keywords are allowed without backquotes $expr->name = $token->value; $state = 2; } else { $parser->error( 'A symbol name was expected!', $token ); return $ret; } } elseif ($state === 2) { $expr->type = DataType::parse($parser, $list); $state = 3; } elseif ($state === 3) { $expr->options = OptionsArray::parse($parser, $list, static::$FIELD_OPTIONS); $state = 4; } elseif ($state === 4) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'REFERENCES') { ++$list->idx; // Skipping keyword 'REFERENCES'. $expr->references = Reference::parse($parser, $list); } else { --$list->idx; } $state = 5; } elseif ($state === 5) { if (! empty($expr->type) || ! empty($expr->key)) { $ret[] = $expr; } $expr = new self(); if ($token->value === ',') { $state = 1; } elseif ($token->value === ')') { $state = 6; ++$list->idx; break; } else { $parser->error( 'A comma or a closing bracket was expected.', $token ); $state = 0; break; } } } // Last iteration was not saved. if (! empty($expr->type) || ! empty($expr->key)) { $ret[] = $expr; } if (($state !== 0) && ($state !== 6)) { $parser->error( 'A closing bracket was expected.', $list->tokens[$list->idx - 1] ); } --$list->idx; return $ret; } /** * @param CreateDefinition|CreateDefinition[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return "(\n " . implode(",\n ", $component) . "\n)"; } $tmp = ''; if ($component->isConstraint) { $tmp .= 'CONSTRAINT '; } if (isset($component->name) && ($component->name !== '')) { $tmp .= Context::escape($component->name) . ' '; } if (! empty($component->type)) { $tmp .= DataType::build( $component->type, array('lowercase' => true) ) . ' '; } if (! empty($component->key)) { $tmp .= $component->key . ' '; } if (! empty($component->references)) { $tmp .= 'REFERENCES ' . $component->references . ' '; } $tmp .= $component->options; return trim($tmp); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/Array2d.php000064400000007147151502156020020734 0ustar00 1 * * 1 ------------------------[ , ]------------------------> 0 * 1 -----------------------[ else ]----------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } // No keyword is expected. if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { break; } if ($state === 0) { if ($token->value === '(') { $arr = ArrayObj::parse($parser, $list, $options); $arrCount = count($arr->values); if ($count === -1) { $count = $arrCount; } elseif ($arrCount !== $count) { $parser->error( sprintf( Translator::gettext('%1$d values were expected, but found %2$d.'), $count, $arrCount ), $token ); } $ret[] = $arr; $state = 1; } else { break; } } elseif ($state === 1) { if ($token->value === ',') { $state = 0; } else { break; } } } if ($state === 0) { $parser->error( 'An opening bracket followed by a set of values was expected.', $list->tokens[$list->idx] ); } --$list->idx; return $ret; } /** * @param ArrayObj[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { return ArrayObj::build($component); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/OrderKeyword.php000064400000007111151502156020022037 0ustar00expr = $expr; $this->type = $type; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return OrderKeyword[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 --------------------[ expression ]-------------------> 1 * * 1 ------------------------[ , ]------------------------> 0 * 1 -------------------[ ASC / DESC ]--------------------> 1 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $expr->expr = Expression::parse($parser, $list); $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_KEYWORD) && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) ) { $expr->type = $token->keyword; } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',') ) { if (! empty($expr->expr)) { $ret[] = $expr; } $expr = new self(); $state = 0; } else { break; } } } // Last iteration was not processed. if (! empty($expr->expr)) { $ret[] = $expr; } --$list->idx; return $ret; } /** * @param OrderKeyword|OrderKeyword[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } return $component->expr . ' ' . $component->type; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/RenameOperation.php000064400000011562151502156020022514 0ustar00old = $old; $this->new = $new; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return RenameOperation[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------[ old name ]--------------------> 1 * * 1 ------------------------[ TO ]-----------------------> 2 * * 2 ---------------------[ new name ]--------------------> 3 * * 3 ------------------------[ , ]------------------------> 0 * 3 -----------------------[ else ]----------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $expr->old = Expression::parse( $parser, $list, array( 'breakOnAlias' => true, 'parseField' => 'table' ) ); if (empty($expr->old)) { $parser->error( 'The old name of the table was expected.', $token ); } $state = 1; } elseif ($state === 1) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'TO') { $state = 2; } else { $parser->error( 'Keyword "TO" was expected.', $token ); break; } } elseif ($state === 2) { $expr->new = Expression::parse( $parser, $list, array( 'breakOnAlias' => true, 'parseField' => 'table' ) ); if (empty($expr->new)) { $parser->error( 'The new name of the table was expected.', $token ); } $state = 3; } elseif ($state === 3) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { $ret[] = $expr; $expr = new self(); $state = 0; } else { break; } } } if ($state !== 3) { $parser->error( 'A rename operation was expected.', $list->tokens[$list->idx - 1] ); } // Last iteration was not saved. if (! empty($expr->old)) { $ret[] = $expr; } --$list->idx; return $ret; } /** * @param RenameOperation $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } return $component->old . ' TO ' . $component->new; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/OptionsArray.php000064400000030141151502156020022050 0ustar00options = $options; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return OptionsArray */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * The ID that will be assigned to duplicate options. * * @var int */ $lastAssignedId = count($options) + 1; /** * The option that was processed last time. * * @var array */ $lastOption = null; /** * The index of the option that was processed last time. * * @var int */ $lastOptionId = 0; /** * Counts brackets. * * @var int */ $brackets = 0; /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------[ option ]----------------------> 1 * * 1 -------------------[ = (optional) ]------------------> 2 * * 2 ----------------------[ value ]----------------------> 0 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping comments. if ($token->type === Token::TYPE_COMMENT) { continue; } // Skipping whitespace if not parsing value. if (($token->type === Token::TYPE_WHITESPACE) && ($brackets === 0)) { continue; } if ($lastOption === null) { $upper = strtoupper($token->token); if (isset($options[$upper])) { $lastOption = $options[$upper]; $lastOptionId = is_array($lastOption) ? $lastOption[0] : $lastOption; $state = 0; // Checking for option conflicts. // For example, in `SELECT` statements the keywords `ALL` // and `DISTINCT` conflict and if used together, they // produce an invalid query. // // Usually, tokens can be identified in the array by the // option ID, but if conflicts occur, a generated option ID // is used. // // The first pseudo duplicate ID is the maximum value of the // real options (e.g. if there are 5 options, the first // fake ID is 6). if (isset($ret->options[$lastOptionId])) { $parser->error( sprintf( Translator::gettext('This option conflicts with "%1$s".'), is_array($ret->options[$lastOptionId]) ? $ret->options[$lastOptionId]['name'] : $ret->options[$lastOptionId] ), $token ); $lastOptionId = $lastAssignedId++; } } else { // There is no option to be processed. break; } } if ($state === 0) { if (! is_array($lastOption)) { // This is a just keyword option without any value. // This is the beginning and the end of it. $ret->options[$lastOptionId] = $token->value; $lastOption = null; $state = 0; } elseif (($lastOption[1] === 'var') || ($lastOption[1] === 'var=')) { // This is a keyword that is followed by a value. // This is only the beginning. The value is parsed in state // 1 and 2. State 1 is used to skip the first equals sign // and state 2 to parse the actual value. $ret->options[$lastOptionId] = array( // @var string The name of the option. 'name' => $token->value, // @var bool Whether it contains an equal sign. // This is used by the builder to rebuild it. 'equals' => $lastOption[1] === 'var=', // @var string Raw value. 'expr' => '', // @var string Processed value. 'value' => '' ); $state = 1; } elseif ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { // This is a keyword that is followed by an expression. // The expression is used by the specialized parser. // Skipping this option in order to parse the expression. ++$list->idx; $ret->options[$lastOptionId] = array( // @var string The name of the option. 'name' => $token->value, // @var bool Whether it contains an equal sign. // This is used by the builder to rebuild it. 'equals' => $lastOption[1] === 'expr=', // @var Expression The parsed expression. 'expr' => '' ); $state = 1; } } elseif ($state === 1) { $state = 2; if ($token->token === '=') { $ret->options[$lastOptionId]['equals'] = true; continue; } } // This is outside the `elseif` group above because the change might // change this iteration. if ($state === 2) { if ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { $ret->options[$lastOptionId]['expr'] = Expression::parse( $parser, $list, empty($lastOption[2]) ? array() : $lastOption[2] ); $ret->options[$lastOptionId]['value'] = $ret->options[$lastOptionId]['expr']->expr; $lastOption = null; $state = 0; } else { if ($token->token === '(') { ++$brackets; } elseif ($token->token === ')') { --$brackets; } $ret->options[$lastOptionId]['expr'] .= $token->token; if (! ((($token->token === '(') && ($brackets === 1)) || (($token->token === ')') && ($brackets === 0))) ) { // First pair of brackets is being skipped. $ret->options[$lastOptionId]['value'] .= $token->value; } // Checking if we finished parsing. if ($brackets === 0) { $lastOption = null; } } } } /* * We reached the end of statement without getting a value * for an option for which a value was required */ if ($state === 1 && $lastOption && ($lastOption[1] === 'expr' || $lastOption[1] === 'var' || $lastOption[1] === 'var=' || $lastOption[1] === 'expr=') ) { $parser->error( sprintf( 'Value/Expression for the option %1$s was expected.', $ret->options[$lastOptionId]['name'] ), $list->tokens[$list->idx - 1] ); } if (empty($options['_UNSORTED'])) { ksort($ret->options); } --$list->idx; return $ret; } /** * @param OptionsArray $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (empty($component->options)) { return ''; } $options = array(); foreach ($component->options as $option) { if (! is_array($option)) { $options[] = $option; } else { $options[] = $option['name'] . ((! empty($option['equals']) && $option['equals']) ? '=' : ' ') . (! empty($option['expr']) ? $option['expr'] : $option['value']); } } return implode(' ', $options); } /** * Checks if it has the specified option and returns it value or true. * * @param string $key the key to be checked * @param bool $getExpr Gets the expression instead of the value. * The value is the processed form of the expression. * * @return mixed */ public function has($key, $getExpr = false) { foreach ($this->options as $option) { if (is_array($option)) { if (! strcasecmp($key, $option['name'])) { return $getExpr ? $option['expr'] : $option['value']; } } elseif (! strcasecmp($key, $option)) { return true; } } return false; } /** * Removes the option from the array. * * @param string $key the key to be removed * * @return bool whether the key was found and deleted or not */ public function remove($key) { foreach ($this->options as $idx => $option) { if (is_array($option)) { if (! strcasecmp($key, $option['name'])) { unset($this->options[$idx]); return true; } } elseif (! strcasecmp($key, $option)) { unset($this->options[$idx]); return true; } } return false; } /** * Merges the specified options with these ones. Values with same ID will be * replaced. * * @param array|OptionsArray $options the options to be merged */ public function merge($options) { if (is_array($options)) { $this->options = array_merge_recursive($this->options, $options); } elseif ($options instanceof self) { $this->options = array_merge_recursive($this->options, $options->options); } } /** * Checks tf there are no options set. * * @return bool */ public function isEmpty() { return empty($this->options); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/Expression.php000064400000036003151502156020021560 0ustar00 1, 'DUAL' => 1, 'NULL' => 1, 'REGEXP' => 1, 'CASE' => 1, 'DIV' => 1, 'AND' => 1, 'OR' => 1, 'XOR' => 1, 'NOT' => 1, 'MOD' => 1 ); /** * The name of this database. * * @var string */ public $database; /** * The name of this table. * * @var string */ public $table; /** * The name of the column. * * @var string */ public $column; /** * The sub-expression. * * @var string */ public $expr = ''; /** * The alias of this expression. * * @var string */ public $alias; /** * The name of the function. * * @var mixed */ public $function; /** * The type of subquery. * * @var string */ public $subquery; /** * Constructor. * * Syntax: * new Expression('expr') * new Expression('expr', 'alias') * new Expression('database', 'table', 'column') * new Expression('database', 'table', 'column', 'alias') * * If the database, table or column name is not required, pass an empty * string. * * @param string $database The name of the database or the the expression. * the the expression. * @param string $table The name of the table or the alias of the expression. * the alias of the expression. * @param string $column the name of the column * @param string $alias the name of the alias */ public function __construct($database = null, $table = null, $column = null, $alias = null) { if (($column === null) && ($alias === null)) { $this->expr = $database; // case 1 $this->alias = $table; // case 2 } else { $this->database = $database; // case 3 $this->table = $table; // case 3 $this->column = $column; // case 3 $this->alias = $alias; // case 4 } } /** * Possible options:. * * `field` * * First field to be filled. * If this is not specified, it takes the value of `parseField`. * * `parseField` * * Specifies the type of the field parsed. It may be `database`, * `table` or `column`. These expressions may not include * parentheses. * * `breakOnAlias` * * If not empty, breaks when the alias occurs (it is not included). * * `breakOnParentheses` * * If not empty, breaks when the first parentheses occurs. * * `parenthesesDelimited` * * If not empty, breaks after last parentheses occurred. * * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return Expression|null * @throws \PhpMyAdmin\SqlParser\Exceptions\ParserException */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * Whether current tokens make an expression or a table reference. * * @var bool */ $isExpr = false; /** * Whether a period was previously found. * * @var bool */ $dot = false; /** * Whether an alias is expected. Is 2 if `AS` keyword was found. * * @var bool */ $alias = false; /** * Counts brackets. * * @var int */ $brackets = 0; /** * Keeps track of the last two previous tokens. * * @var Token[] */ $prev = array( null, null ); // When a field is parsed, no parentheses are expected. if (! empty($options['parseField'])) { $options['breakOnParentheses'] = true; $options['field'] = $options['parseField']; } for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT) ) { if ($isExpr) { $ret->expr .= $token->token; } continue; } if ($token->type === Token::TYPE_KEYWORD) { if (($brackets > 0) && empty($ret->subquery) && ! empty(Parser::$STATEMENT_PARSERS[$token->keyword]) ) { // A `(` was previously found and this keyword is the // beginning of a statement, so this is a subquery. $ret->subquery = $token->keyword; } elseif (($token->flags & Token::FLAG_KEYWORD_FUNCTION) && (empty($options['parseField']) && ! $alias) ) { $isExpr = true; } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) && ($brackets === 0) ) { if (empty(self::$ALLOWED_KEYWORDS[$token->keyword])) { // A reserved keyword that is not allowed in the // expression was found so the expression must have // ended and a new clause is starting. break; } if ($token->keyword === 'AS') { if (! empty($options['breakOnAlias'])) { break; } if ($alias) { $parser->error( 'An alias was expected.', $token ); break; } $alias = true; continue; } elseif ($token->keyword === 'CASE') { // For a use of CASE like // 'SELECT a = CASE .... END, b=1, `id`, ... FROM ...' $tempCaseExpr = CaseExpression::parse($parser, $list); $ret->expr .= CaseExpression::build($tempCaseExpr); $isExpr = true; continue; } $isExpr = true; } elseif ($brackets === 0 && strlen($ret->expr) > 0 && ! $alias) { /* End of expression */ break; } } if (($token->type === Token::TYPE_NUMBER) || ($token->type === Token::TYPE_BOOL) || (($token->type === Token::TYPE_SYMBOL) && ($token->flags & Token::FLAG_SYMBOL_VARIABLE)) || (($token->type === Token::TYPE_SYMBOL) && ($token->flags & Token::FLAG_SYMBOL_PARAMETER)) || (($token->type === Token::TYPE_OPERATOR) && ($token->value !== '.')) ) { if (! empty($options['parseField'])) { break; } // Numbers, booleans and operators (except dot) are usually part // of expressions. $isExpr = true; } if ($token->type === Token::TYPE_OPERATOR) { if (! empty($options['breakOnParentheses']) && (($token->value === '(') || ($token->value === ')')) ) { // No brackets were expected. break; } if ($token->value === '(') { ++$brackets; if (empty($ret->function) && ($prev[1] !== null) && (($prev[1]->type === Token::TYPE_NONE) || ($prev[1]->type === Token::TYPE_SYMBOL) || (($prev[1]->type === Token::TYPE_KEYWORD) && ($prev[1]->flags & Token::FLAG_KEYWORD_FUNCTION))) ) { $ret->function = $prev[1]->value; } } elseif ($token->value === ')') { if ($brackets === 0) { // Not our bracket break; } else { --$brackets; if ($brackets === 0) { if (! empty($options['parenthesesDelimited'])) { // The current token is the last bracket, the next // one will be outside the expression. $ret->expr .= $token->token; ++$list->idx; break; } } elseif ($brackets < 0) { // $parser->error('Unexpected closing bracket.', $token); // $brackets = 0; break; } } } elseif ($token->value === ',') { // Expressions are comma-delimited. if ($brackets === 0) { break; } } } // Saving the previous tokens. $prev[0] = $prev[1]; $prev[1] = $token; if ($alias) { // An alias is expected (the keyword `AS` was previously found). if (! empty($ret->alias)) { $parser->error('An alias was previously found.', $token); break; } $ret->alias = $token->value; $alias = false; } elseif ($isExpr) { // Handling aliases. if (/* (empty($ret->alias)) && */ ($brackets === 0) && (($prev[0] === null) || ((($prev[0]->type !== Token::TYPE_OPERATOR) || ($prev[0]->token === ')')) && (($prev[0]->type !== Token::TYPE_KEYWORD) || (! ($prev[0]->flags & Token::FLAG_KEYWORD_RESERVED))))) && (($prev[1]->type === Token::TYPE_STRING) || (($prev[1]->type === Token::TYPE_SYMBOL) && (! ($prev[1]->flags & Token::FLAG_SYMBOL_VARIABLE))) || ($prev[1]->type === Token::TYPE_NONE)) ) { if (! empty($ret->alias)) { $parser->error('An alias was previously found.', $token); break; } $ret->alias = $prev[1]->value; } else { $ret->expr .= $token->token; } } elseif (! $isExpr) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '.')) { // Found a `.` which means we expect a column name and // the column name we parsed is actually the table name // and the table name is actually a database name. if (! empty($ret->database) || $dot) { $parser->error('Unexpected dot.', $token); } $ret->database = $ret->table; $ret->table = $ret->column; $ret->column = null; $dot = true; $ret->expr .= $token->token; } else { $field = empty($options['field']) ? 'column' : $options['field']; if (empty($ret->$field)) { $ret->$field = $token->value; $ret->expr .= $token->token; $dot = false; } else { // No alias is expected. if (! empty($options['breakOnAlias'])) { break; } if (! empty($ret->alias)) { $parser->error('An alias was previously found.', $token); break; } $ret->alias = $token->value; } } } } if ($alias) { $parser->error( 'An alias was expected.', $list->tokens[$list->idx - 1] ); } // White-spaces might be added at the end. $ret->expr = trim($ret->expr); if ($ret->expr === '') { return null; } --$list->idx; return $ret; } /** * @param Expression|Expression[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } if ($component->expr !== '' && ! is_null($component->expr)) { $ret = $component->expr; } else { $fields = array(); if (isset($component->database) && ($component->database !== '')) { $fields[] = $component->database; } if (isset($component->table) && ($component->table !== '')) { $fields[] = $component->table; } if (isset($component->column) && ($component->column !== '')) { $fields[] = $component->column; } $ret = implode('.', Context::escape($fields)); } if (! empty($component->alias)) { $ret .= ' AS ' . Context::escape($component->alias); } return $ret; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php000064400000011225151502156020023351 0ustar00name = $name; $this->inOut = $inOut; $this->type = $type; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return ParameterDefinition[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 -----------------------[ ( ]------------------------> 1 * * 1 ----------------[ IN / OUT / INOUT ]----------------> 1 * 1 ----------------------[ name ]----------------------> 2 * * 2 -------------------[ data type ]--------------------> 3 * * 3 ------------------------[ , ]-----------------------> 1 * 3 ------------------------[ ) ]-----------------------> (END) * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $state = 1; } continue; } elseif ($state === 1) { if (($token->value === 'IN') || ($token->value === 'OUT') || ($token->value === 'INOUT')) { $expr->inOut = $token->value; ++$list->idx; } elseif ($token->value === ')') { ++$list->idx; break; } else { $expr->name = $token->value; $state = 2; } } elseif ($state === 2) { $expr->type = DataType::parse($parser, $list); $state = 3; } elseif ($state === 3) { $ret[] = $expr; $expr = new self(); if ($token->value === ',') { $state = 1; } elseif ($token->value === ')') { ++$list->idx; break; } } } // Last iteration was not saved. if (isset($expr->name) && ($expr->name !== '')) { $ret[] = $expr; } --$list->idx; return $ret; } /** * @param ParameterDefinition[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return '(' . implode(', ', $component) . ')'; } $tmp = ''; if (! empty($component->inOut)) { $tmp .= $component->inOut . ' '; } return trim( $tmp . Context::escape($component->name) . ' ' . $component->type ); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/Key.php000064400000013042151502156020020147 0ustar00 array( 1, 'var', ), 'USING' => array( 2, 'var', ), 'WITH PARSER' => array( 3, 'var', ), 'COMMENT' => array( 4, 'var=', ) ); /** * The name of this key. * * @var string */ public $name; /** * Columns. * * @var array */ public $columns; /** * The type of this key. * * @var string */ public $type; /** * The options of this key. * * @var OptionsArray */ public $options; /** * Constructor. * * @param string $name the name of the key * @param array $columns the columns covered by this key * @param string $type the type of this key * @param OptionsArray $options the options of this key */ public function __construct( $name = null, array $columns = array(), $type = null, $options = null ) { $this->name = $name; $this->columns = $columns; $this->type = $type; $this->options = $options; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return Key */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * Last parsed column. * * @var array */ $lastColumn = array(); /** * The state of the parser. * * Below are the states of the parser. * * 0 ----------------------[ type ]-----------------------> 1 * * 1 ----------------------[ name ]-----------------------> 1 * 1 ---------------------[ columns ]---------------------> 2 * * 2 ---------------------[ options ]---------------------> 3 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $ret->type = $token->value; $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $state = 2; } else { $ret->name = $token->value; } } elseif ($state === 2) { if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { $state = 3; } elseif (($token->value === ',') || ($token->value === ')')) { $state = ($token->value === ',') ? 2 : 4; if (! empty($lastColumn)) { $ret->columns[] = $lastColumn; $lastColumn = array(); } } } else { $lastColumn['name'] = $token->value; } } elseif ($state === 3) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ')')) { $state = 2; } else { $lastColumn['length'] = $token->value; } } elseif ($state === 4) { $ret->options = OptionsArray::parse($parser, $list, static::$KEY_OPTIONS); ++$list->idx; break; } } --$list->idx; return $ret; } /** * @param Key $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $ret = $component->type . ' '; if (! empty($component->name)) { $ret .= Context::escape($component->name) . ' '; } $columns = array(); foreach ($component->columns as $column) { $tmp = Context::escape($column['name']); if (isset($column['length'])) { $tmp .= '(' . $column['length'] . ')'; } $columns[] = $tmp; } $ret .= '(' . implode(',', $columns) . ') ' . $component->options; return trim($ret); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/DataType.php000064400000011146151502156020021135 0ustar00 1, 'CHARACTER SET' => array( 2, 'var', ), 'CHARSET' => array( 2, 'var', ), 'COLLATE' => array( 3, 'var', ), 'UNSIGNED' => 4, 'ZEROFILL' => 5 ); /** * The name of the data type. * * @var string */ public $name; /** * The parameters of this data type. * * Some data types have no parameters. * Numeric types might have parameters for the maximum number of digits, * precision, etc. * String types might have parameters for the maximum length stored. * `ENUM` and `SET` have parameters for possible values. * * For more information, check the MySQL manual. * * @var array */ public $parameters = array(); /** * The options of this data type. * * @var OptionsArray */ public $options; /** * Constructor. * * @param string $name the name of this data type * @param array $parameters the parameters (size or possible values) * @param OptionsArray $options the options of this data type */ public function __construct( $name = null, array $parameters = array(), $options = null ) { $this->name = $name; $this->parameters = $parameters; $this->options = $options; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return DataType|null */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 -------------------[ data type ]--------------------> 1 * * 1 ----------------[ size and options ]----------------> 2 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $ret->name = strtoupper($token->value); if (($token->type !== Token::TYPE_KEYWORD) || (! ($token->flags & Token::FLAG_KEYWORD_DATA_TYPE))) { $parser->error('Unrecognized data type.', $token); } $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { $parameters = ArrayObj::parse($parser, $list); ++$list->idx; $ret->parameters = (($ret->name === 'ENUM') || ($ret->name === 'SET')) ? $parameters->raw : $parameters->values; } $ret->options = OptionsArray::parse($parser, $list, static::$DATA_TYPE_OPTIONS); ++$list->idx; break; } } if (empty($ret->name)) { return null; } --$list->idx; return $ret; } /** * @param DataType $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $name = empty($options['lowercase']) ? $component->name : strtolower($component->name); $parameters = ''; if (! empty($component->parameters)) { $parameters = '(' . implode(',', $component->parameters) . ')'; } return trim($name . $parameters . ' ' . $component->options); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/LockExpression.php000064400000013362151502156020022374 0ustar00 1 * 1 ---------------- [ lock_type ] ----------------> 2 * 2 -------------------- [ , ] --------------------> break * * @var int */ $state = 0; $prevToken = null; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER || ($token->type === Token::TYPE_OPERATOR && $token->value === ',') ) { break; } if ($state === 0) { $ret->table = Expression::parse($parser, $list, array('parseField' => 'table')); $state = 1; } elseif ($state === 1) { // parse lock type $ret->type = self::parseLockType($parser, $list); $state = 2; } $prevToken = $token; } // 2 is the only valid end state if ($state !== 2) { $parser->error('Unexpected end of LOCK expression.', $prevToken); } --$list->idx; return $ret; } /** * @param LockExpression|LockExpression[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } return $component->table . ' ' . $component->type; } private static function parseLockType(Parser $parser, TokensList $list) { $lockType = ''; /** * The state of the parser while parsing for lock type. * * Below are the states of the parser. * * 0 ---------------- [ READ ] -----------------> 1 * 0 ------------- [ LOW_PRIORITY ] ------------> 2 * 0 ---------------- [ WRITE ] ----------------> 3 * 1 ---------------- [ LOCAL ] ----------------> 3 * 2 ---------------- [ WRITE ] ----------------> 3 * * @var int */ $state = 0; $prevToken = null; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER || ($token->type === Token::TYPE_OPERATOR && $token->value === ',') ) { --$list->idx; break; } // Skipping whitespaces and comments. if ($token->type === Token::TYPE_WHITESPACE || $token->type === Token::TYPE_COMMENT) { continue; } // We only expect keywords if ($token->type !== Token::TYPE_KEYWORD) { $parser->error('Unexpected token.', $token); break; } if ($state === 0) { if ($token->keyword === 'READ') { $state = 1; } elseif ($token->keyword === 'LOW_PRIORITY') { $state = 2; } elseif ($token->keyword === 'WRITE') { $state = 3; } else { $parser->error('Unexpected keyword.', $token); break; } $lockType .= $token->keyword; } elseif ($state === 1) { if ($token->keyword === 'LOCAL') { $lockType .= ' ' . $token->keyword; $state = 3; } else { $parser->error('Unexpected keyword.', $token); break; } } elseif ($state === 2) { if ($token->keyword === 'WRITE') { $lockType .= ' ' . $token->keyword; $state = 3; // parsing over } else { $parser->error('Unexpected keyword.', $token); break; } } $prevToken = $token; } // Only two possible end states if ($state !== 1 && $state !== 3) { $parser->error('Unexpected end of Lock expression.', $prevToken); } return $lockType; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/SetOperation.php000064400000010401151502156020022027 0ustar00column = $column; $this->value = $value; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return SetOperation[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------[ col_name ]--------------------> 0 * 0 ------------------------[ = ]------------------------> 1 * 1 -----------------------[ value ]---------------------> 1 * 1 ------------------------[ , ]------------------------> 0 * * @var int */ $state = 0; /** * Token when the parser has seen the latest comma * * @var Token */ $commaLastSeenAt = null; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } // No keyword is expected. if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED) && ($state === 0) ) { break; } if ($state === 0) { if ($token->token === '=') { $state = 1; } elseif ($token->value !== ',') { $expr->column .= $token->token; } elseif ($token->value === ',') { $commaLastSeenAt = $token; } } elseif ($state === 1) { $tmp = Expression::parse( $parser, $list, array( 'breakOnAlias' => true ) ); if (is_null($tmp)) { $parser->error('Missing expression.', $token); break; } $expr->column = trim($expr->column); $expr->value = $tmp->expr; $ret[] = $expr; $expr = new self(); $state = 0; $commaLastSeenAt = null; } } --$list->idx; // We saw a comma, but didn't see a column-value pair after it if ($commaLastSeenAt !== null) { $parser->error('Unexpected token.', $commaLastSeenAt); } return $ret; } /** * @param SetOperation|SetOperation[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { if (is_array($component)) { return implode(', ', $component); } return $component->column . ' = ' . $component->value; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/CaseExpression.php000064400000023700151502156020022354 0ustar00idx; // Skip 'CASE' for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT) ) { continue; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD) { switch ($token->keyword) { case 'WHEN': ++$list->idx; // Skip 'WHEN' $new_condition = Condition::parse($parser, $list); $type = 1; $state = 1; $ret->conditions[] = $new_condition; break; case 'ELSE': ++$list->idx; // Skip 'ELSE' $ret->else_result = Expression::parse($parser, $list); $state = 0; // last clause of CASE expression break; case 'END': $state = 3; // end of CASE expression ++$list->idx; break 2; default: $parser->error('Unexpected keyword.', $token); break 2; } } else { $ret->value = Expression::parse($parser, $list); $type = 0; $state = 1; } } elseif ($state === 1) { if ($type === 0) { if ($token->type === Token::TYPE_KEYWORD) { switch ($token->keyword) { case 'WHEN': ++$list->idx; // Skip 'WHEN' $new_value = Expression::parse($parser, $list); $state = 2; $ret->compare_values[] = $new_value; break; case 'ELSE': ++$list->idx; // Skip 'ELSE' $ret->else_result = Expression::parse($parser, $list); $state = 0; // last clause of CASE expression break; case 'END': $state = 3; // end of CASE expression ++$list->idx; break 2; default: $parser->error('Unexpected keyword.', $token); break 2; } } } else { if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'THEN' ) { ++$list->idx; // Skip 'THEN' $new_result = Expression::parse($parser, $list); $state = 0; $ret->results[] = $new_result; } elseif ($token->type === Token::TYPE_KEYWORD) { $parser->error('Unexpected keyword.', $token); break; } } } elseif ($state === 2) { if ($type === 0) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'THEN' ) { ++$list->idx; // Skip 'THEN' $new_result = Expression::parse($parser, $list); $ret->results[] = $new_result; $state = 1; } elseif ($token->type === Token::TYPE_KEYWORD) { $parser->error('Unexpected keyword.', $token); break; } } } } if ($state !== 3) { $parser->error( 'Unexpected end of CASE expression', $list->tokens[$list->idx - 1] ); } else { // Parse for alias of CASE expression $asFound = false; for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT) ) { continue; } // Handle optional AS keyword before alias if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'AS') { if ($asFound || ! empty($ret->alias)) { $parser->error('Potential duplicate alias of CASE expression.', $token); break; } $asFound = true; continue; } if ($asFound && $token->type === Token::TYPE_KEYWORD && ($token->flags & Token::FLAG_KEYWORD_RESERVED || $token->flags & Token::FLAG_KEYWORD_FUNCTION)) { $parser->error('An alias expected after AS but got ' . $token->value, $token); $asFound = false; break; } if ($asFound || $token->type === Token::TYPE_STRING || ($token->type === Token::TYPE_SYMBOL && ! $token->flags & Token::FLAG_SYMBOL_VARIABLE) || $token->type === Token::TYPE_NONE ) { // An alias is expected (the keyword `AS` was previously found). if (! empty($ret->alias)) { $parser->error('An alias was previously found.', $token); break; } $ret->alias = $token->value; $asFound = false; continue; } break; } if ($asFound) { $parser->error('An alias was expected after AS.', $list->tokens[$list->idx - 1]); } $ret->expr = self::build($ret); } --$list->idx; return $ret; } /** * @param CaseExpression $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $ret = 'CASE '; if (isset($component->value)) { // Syntax type 0 $ret .= $component->value . ' '; $val_cnt = count($component->compare_values); $res_cnt = count($component->results); for ($i = 0; $i < $val_cnt && $i < $res_cnt; ++$i) { $ret .= 'WHEN ' . $component->compare_values[$i] . ' '; $ret .= 'THEN ' . $component->results[$i] . ' '; } } else { // Syntax type 1 $val_cnt = count($component->conditions); $res_cnt = count($component->results); for ($i = 0; $i < $val_cnt && $i < $res_cnt; ++$i) { $ret .= 'WHEN ' . Condition::build($component->conditions[$i]) . ' '; $ret .= 'THEN ' . $component->results[$i] . ' '; } } if (isset($component->else_result)) { $ret .= 'ELSE ' . $component->else_result . ' '; } $ret .= 'END'; if ($component->alias) { $ret .= ' AS ' . Context::escape($component->alias); } return $ret; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/JoinKeyword.php000064400000014565151502156020021676 0ustar00 'CROSS', 'FULL JOIN' => 'FULL', 'FULL OUTER JOIN' => 'FULL', 'INNER JOIN' => 'INNER', 'JOIN' => 'JOIN', 'LEFT JOIN' => 'LEFT', 'LEFT OUTER JOIN' => 'LEFT', 'RIGHT JOIN' => 'RIGHT', 'RIGHT OUTER JOIN' => 'RIGHT', 'NATURAL JOIN' => 'NATURAL', 'NATURAL LEFT JOIN' => 'NATURAL LEFT', 'NATURAL RIGHT JOIN' => 'NATURAL RIGHT', 'NATURAL LEFT OUTER JOIN' => 'NATURAL LEFT OUTER', 'NATURAL RIGHT OUTER JOIN' => 'NATURAL RIGHT OUTER', 'STRAIGHT_JOIN' => 'STRAIGHT' ); /** * Type of this join. * * @see static::$JOINS * * @var string */ public $type; /** * Join expression. * * @var Expression */ public $expr; /** * Join conditions. * * @var Condition[] */ public $on; /** * Columns in Using clause. * * @var ArrayObj */ public $using; /** * Constructor. * * @param string $type Join type * @param Expression $expr join expression * @param Condition[] $on join conditions * @param ArrayObj $using columns joined * * @see JoinKeyword::$JOINS */ public function __construct($type = null, $expr = null, $on = null, $using = null) { $this->type = $type; $this->expr = $expr; $this->on = $on; $this->using = $using; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return JoinKeyword[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = array(); $expr = new self(); /** * The state of the parser. * * Below are the states of the parser. * * 0 -----------------------[ JOIN ]----------------------> 1 * * 1 -----------------------[ expr ]----------------------> 2 * * 2 ------------------------[ ON ]-----------------------> 3 * 2 -----------------------[ USING ]---------------------> 4 * * 3 --------------------[ conditions ]-------------------> 0 * * 4 ----------------------[ columns ]--------------------> 0 * * @var int */ $state = 0; // By design, the parser will parse first token after the keyword. // In this case, the keyword must be analyzed too, in order to determine // the type of this join. if ($list->idx > 0) { --$list->idx; } for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if (($token->type === Token::TYPE_KEYWORD) && ! empty(static::$JOINS[$token->keyword]) ) { $expr->type = static::$JOINS[$token->keyword]; $state = 1; } else { break; } } elseif ($state === 1) { $expr->expr = Expression::parse($parser, $list, array('field' => 'table')); $state = 2; } elseif ($state === 2) { if ($token->type === Token::TYPE_KEYWORD) { switch ($token->keyword) { case 'ON': $state = 3; break; case 'USING': $state = 4; break; default: if (! empty(static::$JOINS[$token->keyword]) ) { $ret[] = $expr; $expr = new self(); $expr->type = static::$JOINS[$token->keyword]; $state = 1; } else { /* Next clause is starting */ break 2; } break; } } } elseif ($state === 3) { $expr->on = Condition::parse($parser, $list); $ret[] = $expr; $expr = new self(); $state = 0; } elseif ($state === 4) { $expr->using = ArrayObj::parse($parser, $list); $ret[] = $expr; $expr = new self(); $state = 0; } } if (! empty($expr->type)) { $ret[] = $expr; } --$list->idx; return $ret; } /** * @param JoinKeyword[] $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $ret = array(); foreach ($component as $c) { $ret[] = array_search($c->type, static::$JOINS) . ' ' . $c->expr . (! empty($c->on) ? ' ON ' . Condition::build($c->on) : '') . (! empty($c->using) ? ' USING ' . ArrayObj::build($c->using) : ''); } return implode(' ', $ret); } } db/login/vendor/phpmyadmin/sql-parser/src/Components/Limit.php000064400000006332151502156020020501 0ustar00rowCount = $rowCount; $this->offset = $offset; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return Limit */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); $offset = false; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { break; } if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'OFFSET') { if ($offset) { $parser->error('An offset was expected.', $token); } $offset = true; continue; } if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { $ret->offset = $ret->rowCount; $ret->rowCount = 0; continue; } // Skip if not a number if (($token->type !== Token::TYPE_NUMBER)) { break; } if ($offset) { $ret->offset = $token->value; $offset = false; } else { $ret->rowCount = $token->value; } } if ($offset) { $parser->error( 'An offset was expected.', $list->tokens[$list->idx - 1] ); } --$list->idx; return $ret; } /** * @param Limit $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { return $component->offset . ', ' . $component->rowCount; } } db/login/vendor/phpmyadmin/sql-parser/src/Components/AlterOperation.php000064400000022711151502156020022352 0ustar00 array( 1, 'var' ), 'CHARSET' => array( 1, 'var' ), 'DEFAULT CHARACTER SET' => array( 1, 'var' ), 'DEFAULT CHARSET' => array( 1, 'var' ), 'UPGRADE' => array( 1, 'var' ), 'COLLATE' => array( 2, 'var' ), 'DEFAULT COLLATE' => array( 2, 'var' ) ); /** * All table options. * * @var array */ public static $TABLE_OPTIONS = array( 'ENGINE' => array( 1, 'var=' ), 'AUTO_INCREMENT' => array( 1, 'var=' ), 'AVG_ROW_LENGTH' => array( 1, 'var' ), 'MAX_ROWS' => array( 1, 'var' ), 'ROW_FORMAT' => array( 1, 'var' ), 'COMMENT' => array( 1, 'var' ), 'ADD' => 1, 'ALTER' => 1, 'ANALYZE' => 1, 'CHANGE' => 1, 'CHECK' => 1, 'COALESCE' => 1, 'CONVERT' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DROP' => 1, 'ENABLE' => 1, 'IMPORT' => 1, 'MODIFY' => 1, 'OPTIMIZE' => 1, 'ORDER' => 1, 'PARTITION' => 1, 'REBUILD' => 1, 'REMOVE' => 1, 'RENAME' => 1, 'REORGANIZE' => 1, 'REPAIR' => 1, 'UPGRADE' => 1, 'COLUMN' => 2, 'CONSTRAINT' => 2, 'DEFAULT' => 2, 'TO' => 2, 'BY' => 2, 'FOREIGN' => 2, 'FULLTEXT' => 2, 'KEY' => 2, 'KEYS' => 2, 'PARTITIONING' => 2, 'PRIMARY KEY' => 2, 'SPATIAL' => 2, 'TABLESPACE' => 2, 'INDEX' => 2 ); /** * All view options. * * @var array */ public static $VIEW_OPTIONS = array( 'AS' => 1, ); /** * Options of this operation. * * @var OptionsArray */ public $options; /** * The altered field. * * @var Expression */ public $field; /** * Unparsed tokens. * * @var Token[]|string */ public $unknown = array(); /** * Constructor. * * @param OptionsArray $options options of alter operation * @param Expression $field altered field * @param array $unknown unparsed tokens found at the end of operation */ public function __construct( $options = null, $field = null, $unknown = array() ) { $this->options = $options; $this->field = $field; $this->unknown = $unknown; } /** * @param Parser $parser the parser that serves as context * @param TokensList $list the list of tokens that are being parsed * @param array $options parameters for parsing * * @return AlterOperation */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { $ret = new self(); /** * Counts brackets. * * @var int */ $brackets = 0; /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------[ options ]---------------------> 1 * * 1 ----------------------[ field ]----------------------> 2 * * 2 -------------------------[ , ]-----------------------> 0 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping comments. if ($token->type === Token::TYPE_COMMENT) { continue; } // Skipping whitespaces. if ($token->type === Token::TYPE_WHITESPACE) { if ($state === 2) { // When parsing the unknown part, the whitespaces are // included to not break anything. $ret->unknown[] = $token; } continue; } if ($state === 0) { $ret->options = OptionsArray::parse($parser, $list, $options); if ($ret->options->has('AS')) { for (; $list->idx < $list->count; ++$list->idx) { if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { break; } $ret->unknown[] = $list->tokens[$list->idx]; } break; } $state = 1; } elseif ($state === 1) { $ret->field = Expression::parse( $parser, $list, array( 'breakOnAlias' => true, 'parseField' => 'column' ) ); if ($ret->field === null) { // No field was read. We go back one token so the next // iteration will parse the same token, but in state 2. --$list->idx; } $state = 2; } elseif ($state === 2) { $array_key = ''; if (is_string($token->value) || is_numeric($token->value)) { $array_key = $token->value; } else { $array_key = $token->token; } if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { ++$brackets; } elseif ($token->value === ')') { --$brackets; } elseif (($token->value === ',') && ($brackets === 0)) { break; } } elseif (! empty(Parser::$STATEMENT_PARSERS[$token->value])) { // We have reached the end of ALTER operation and suddenly found // a start to new statement, but have not find a delimiter between them if (! ($token->value === 'SET' && $list->tokens[$list->idx - 1]->value === 'CHARACTER')) { $parser->error( 'A new statement was found, but no delimiter between it and the previous one.', $token ); break; } } elseif ((array_key_exists($array_key, self::$DB_OPTIONS) || array_key_exists($array_key, self::$TABLE_OPTIONS)) && ! self::checkIfColumnDefinitionKeyword($array_key) ) { // This alter operation has finished, which means a comma was missing before start of new alter operation $parser->error( 'Missing comma before start of a new alter operation.', $token ); break; } $ret->unknown[] = $token; } } if ($ret->options->isEmpty()) { $parser->error( 'Unrecognized alter operation.', $list->tokens[$list->idx] ); } --$list->idx; return $ret; } /** * @param AlterOperation $component the component to be built * @param array $options parameters for building * * @return string */ public static function build($component, array $options = array()) { $ret = $component->options . ' '; if ((isset($component->field)) && ($component->field !== '')) { $ret .= $component->field . ' '; } $ret .= TokensList::build($component->unknown); return $ret; } /** * Check if token's value is one of the common keywords * between column and table alteration * * @param string $tokenValue Value of current token * @return bool */ private static function checkIfColumnDefinitionKeyword($tokenValue) { $common_options = array( 'AUTO_INCREMENT', 'COMMENT', 'DEFAULT', 'CHARACTER SET', 'COLLATE', 'PRIMARY', 'UNIQUE', 'PRIMARY KEY', 'UNIQUE KEY' ); // Since these options can be used for // both table as well as a specific column in the table return in_array($tokenValue, $common_options); } } db/login/vendor/phpmyadmin/sql-parser/src/Translator.php000064400000003043151502156020017423 0ustar00setlocale( self::$loader->detectlocale() ); // Set default text domain self::$loader->textdomain('sqlparser'); // Set path where to look for a domain self::$loader->bindtextdomain('sqlparser', __DIR__ . '/../locale/'); } if (is_null(self::$translator)) { // Get translator self::$translator = self::$loader->getTranslator(); } } /** * Translates a string. * * @param string $msgid String to be translated * * @return string translated string (or original, if not found) */ public static function gettext($msgid) { if (! class_exists('\PhpMyAdmin\MoTranslator\Loader', true)) { return $msgid; } self::load(); return self::$translator->gettext($msgid); } } db/login/vendor/phpmyadmin/sql-parser/src/Exceptions/ParserException.php000064400000001434151502156020022530 0ustar00token = $token; } } db/login/vendor/phpmyadmin/sql-parser/src/Exceptions/LexerException.php000064400000001675151502156020022362 0ustar00ch = $ch; $this->pos = $pos; } } db/login/vendor/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php000064400000001341151502156020022477 0ustar00name = $name; } } db/login/vendor/phpmyadmin/sql-parser/src/Parser.php000064400000052240151502156020016531 0ustar00 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', 'DESC' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', 'EXPLAIN' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', 'FLUSH' => '', 'GRANT' => '', 'HELP' => '', 'SET PASSWORD' => '', 'STATUS' => '', 'USE' => '', // Table Maintenance Statements // https://dev.mysql.com/doc/refman/5.7/en/table-maintenance-sql.html 'ANALYZE' => 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement', 'BACKUP' => 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement', 'CHECK' => 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement', 'CHECKSUM' => 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement', 'OPTIMIZE' => 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement', 'REPAIR' => 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement', 'RESTORE' => 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement', // Database Administration Statements // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-server-administration.html 'SET' => 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement', 'SHOW' => 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement', // Data Definition Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-definition.html 'ALTER' => 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement', 'CREATE' => 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement', 'DROP' => 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement', 'RENAME' => 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement', 'TRUNCATE' => 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement', // Data Manipulation Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-manipulation.html 'CALL' => 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement', 'DELETE' => 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement', 'DO' => '', 'HANDLER' => '', 'INSERT' => 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement', 'LOAD DATA' => 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement', 'REPLACE' => 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement', 'SELECT' => 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement', 'UPDATE' => 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement', // Prepared Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html 'DEALLOCATE' => '', 'EXECUTE' => '', 'PREPARE' => '', // Transactional and Locking Statements // https://dev.mysql.com/doc/refman/5.7/en/commit.html 'BEGIN' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', 'COMMIT' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', 'ROLLBACK' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', 'START TRANSACTION' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', 'PURGE' => 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement', // Lock statements // https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html 'LOCK' => 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement', 'UNLOCK' => 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement' ); /** * Array of classes that are used in parsing SQL components. * * @var array */ public static $KEYWORD_PARSERS = array( // This is not a proper keyword and was added here to help the // formatter. 'PARTITION BY' => array(), 'SUBPARTITION BY' => array(), // This is not a proper keyword and was added here to help the // builder. '_OPTIONS' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray', 'field' => 'options', ), '_END_OPTIONS' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray', 'field' => 'end_options', ), 'INTERSECT' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', 'field' => 'union', ), 'EXCEPT' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', 'field' => 'union', ), 'UNION' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', 'field' => 'union', ), 'UNION ALL' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', 'field' => 'union', ), 'UNION DISTINCT' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', 'field' => 'union', ), // Actual clause parsers. 'ALTER' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', 'field' => 'table', 'options' => array('parseField' => 'table'), ), 'ANALYZE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'BACKUP' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'CALL' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall', 'field' => 'call', ), 'CHECK' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'CHECKSUM' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'CROSS JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'DROP' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'fields', 'options' => array('parseField' => 'table'), ), 'FORCE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', 'field' => 'index_hints', ), 'FROM' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'from', 'options' => array('field' => 'table'), ), 'GROUP BY' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword', 'field' => 'group', ), 'HAVING' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Condition', 'field' => 'having', ), 'IGNORE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', 'field' => 'index_hints', ), 'INTO' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword', 'field' => 'into', ), 'JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'LEFT JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'LEFT OUTER JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'ON' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', 'field' => 'table', 'options' => array('parseField' => 'table'), ), 'RIGHT JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'RIGHT OUTER JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'INNER JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'FULL JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'FULL OUTER JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'NATURAL JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'NATURAL LEFT JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'NATURAL RIGHT JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'NATURAL LEFT OUTER JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'NATURAL RIGHT OUTER JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'STRAIGHT_JOIN' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), 'LIMIT' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Limit', 'field' => 'limit', ), 'OPTIMIZE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'ORDER BY' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword', 'field' => 'order', ), 'PARTITION' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj', 'field' => 'partition', ), 'PROCEDURE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall', 'field' => 'procedure', ), 'RENAME' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation', 'field' => 'renames', ), 'REPAIR' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'RESTORE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'SET' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\SetOperation', 'field' => 'set', ), 'SELECT' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'expr', ), 'TRUNCATE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', 'field' => 'table', 'options' => array('parseField' => 'table'), ), 'UPDATE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', 'field' => 'tables', 'options' => array('parseField' => 'table'), ), 'USE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', 'field' => 'index_hints', ), 'VALUE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Array2d', 'field' => 'values', ), 'VALUES' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Array2d', 'field' => 'values', ), 'WHERE' => array( 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Condition', 'field' => 'where', ) ); /** * The list of tokens that are parsed. * * @var TokensList */ public $list; /** * List of statements parsed. * * @var Statement[] */ public $statements = array(); /** * The number of opened brackets. * * @var int */ public $brackets = 0; /** * Constructor. * * @param string|UtfString|TokensList $list the list of tokens to be parsed * @param bool $strict whether strict mode should be enabled or not */ public function __construct($list = null, $strict = false) { if (is_string($list) || ($list instanceof UtfString)) { $lexer = new Lexer($list, $strict); $this->list = $lexer->list; } elseif ($list instanceof TokensList) { $this->list = $list; } $this->strict = $strict; if ($list !== null) { $this->parse(); } } /** * Builds the parse trees. * @throws ParserException */ public function parse() { /** * Last transaction. * * @var TransactionStatement */ $lastTransaction = null; /** * Last parsed statement. * * @var Statement */ $lastStatement = null; /** * Union's type or false for no union. * * @var bool|string */ $unionType = false; /** * The index of the last token from the last statement. * * @var int */ $prevLastIdx = -1; /** * The list of tokens. * * @var TokensList */ $list = &$this->list; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // `DELIMITER` is not an actual statement and it requires // special handling. if (($token->type === Token::TYPE_NONE) && (strtoupper($token->token) === 'DELIMITER') ) { // Skipping to the end of this statement. $list->getNextOfType(Token::TYPE_DELIMITER); $prevLastIdx = $list->idx; continue; } // Counting the brackets around statements. if ($token->value === '(') { ++$this->brackets; continue; } // Statements can start with keywords only. // Comments, whitespaces, etc. are ignored. if ($token->type !== Token::TYPE_KEYWORD) { if (($token->type !== Token::TYPE_COMMENT) && ($token->type !== Token::TYPE_WHITESPACE) && ($token->type !== Token::TYPE_OPERATOR) // `(` and `)` && ($token->type !== Token::TYPE_DELIMITER) ) { $this->error( 'Unexpected beginning of statement.', $token ); } continue; } if (($token->keyword === 'UNION') || ($token->keyword === 'UNION ALL') || ($token->keyword === 'UNION DISTINCT') || ($token->keyword === 'EXCEPT') || ($token->keyword === 'INTERSECT') ) { $unionType = $token->keyword; continue; } // Checking if it is a known statement that can be parsed. if (empty(static::$STATEMENT_PARSERS[$token->keyword])) { if (! isset(static::$STATEMENT_PARSERS[$token->keyword])) { // A statement is considered recognized if the parser // is aware that it is a statement, but it does not have // a parser for it yet. $this->error( 'Unrecognized statement type.', $token ); } // Skipping to the end of this statement. $list->getNextOfType(Token::TYPE_DELIMITER); $prevLastIdx = $list->idx; continue; } /** * The name of the class that is used for parsing. * * @var string */ $class = static::$STATEMENT_PARSERS[$token->keyword]; /** * Processed statement. * * @var Statement */ $statement = new $class($this, $this->list); // The first token that is a part of this token is the next token // unprocessed by the previous statement. // There might be brackets around statements and this shouldn't // affect the parser $statement->first = $prevLastIdx + 1; // Storing the index of the last token parsed and updating the old // index. $statement->last = $list->idx; $prevLastIdx = $list->idx; // Handles unions. if (! empty($unionType) && ($lastStatement instanceof SelectStatement) && ($statement instanceof SelectStatement) ) { /* * This SELECT statement. * * @var SelectStatement $statement */ /* * Last SELECT statement. * * @var SelectStatement $lastStatement */ $lastStatement->union[] = array( $unionType, $statement ); // if there are no no delimiting brackets, the `ORDER` and // `LIMIT` keywords actually belong to the first statement. $lastStatement->order = $statement->order; $lastStatement->limit = $statement->limit; $statement->order = array(); $statement->limit = null; // The statement actually ends where the last statement in // union ends. $lastStatement->last = $statement->last; $unionType = false; // Validate clause order $statement->validateClauseOrder($this, $list); continue; } // Handles transactions. if ($statement instanceof TransactionStatement) { /* * @var TransactionStatement */ if ($statement->type === TransactionStatement::TYPE_BEGIN) { $lastTransaction = $statement; $this->statements[] = $statement; } elseif ($statement->type === TransactionStatement::TYPE_END) { if ($lastTransaction === null) { // Even though an error occurred, the query is being // saved. $this->statements[] = $statement; $this->error( 'No transaction was previously started.', $token ); } else { $lastTransaction->end = $statement; } $lastTransaction = null; } // Validate clause order $statement->validateClauseOrder($this, $list); continue; } // Validate clause order $statement->validateClauseOrder($this, $list); // Finally, storing the statement. if ($lastTransaction !== null) { $lastTransaction->statements[] = $statement; } else { $this->statements[] = $statement; } $lastStatement = $statement; } } /** * Creates a new error log. * * @param string $msg the error message * @param Token $token the token that produced the error * @param int $code the code of the error * * @throws ParserException throws the exception, if strict mode is enabled */ public function error($msg, Token $token = null, $code = 0) { $error = new ParserException( Translator::gettext($msg), $token, $code ); parent::error($error); } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php000064400000001506151502156020023075 0ustar00 1 ); /** * The name of the truncated table. * * @var Expression */ public $table; /** * Special build method for truncate statement as Statement::build would return empty string. * * @return string */ public function build() { return 'TRUNCATE TABLE ' . $this->table . ';'; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php000064400000001031151502156020023043 0ustar00 1, 'QUICK' => 2, 'EXTENDED' => 3 ); } db/login/vendor/phpmyadmin/sql-parser/src/Statements/AlterStatement.php000064400000007401151502156020022357 0ustar00 1, 'OFFLINE' => 1, 'IGNORE' => 2, 'DATABASE' => 3, 'EVENT' => 3, 'FUNCTION' => 3, 'PROCEDURE' => 3, 'SERVER' => 3, 'TABLE' => 3, 'TABLESPACE' => 3, 'VIEW' => 3 ); /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `ALTER`. $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); ++$list->idx; // Parsing affected table. $this->table = Expression::parse( $parser, $list, array( 'parseField' => 'table', 'breakOnAlias' => true ) ); ++$list->idx; // Skipping field. /** * The state of the parser. * * Below are the states of the parser. * * 0 -----------------[ alter operation ]-----------------> 1 * * 1 -------------------------[ , ]-----------------------> 0 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $options = array(); if ($this->options->has('DATABASE')) { $options = AlterOperation::$DB_OPTIONS; } elseif ($this->options->has('TABLE')) { $options = AlterOperation::$TABLE_OPTIONS; } elseif ($this->options->has('VIEW')) { $options = AlterOperation::$VIEW_OPTIONS; } $this->altered[] = AlterOperation::parse($parser, $list, $options); $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { $state = 0; } } } } /** * @return string */ public function build() { $tmp = array(); foreach ($this->altered as $altered) { $tmp[] = $altered::build($altered); } return 'ALTER ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->table) . ' ' . implode(', ', $tmp); } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/BackupStatement.php000064400000001145151502156020022514 0ustar00 1, 'NO_WRITE_TO_BINLOG' => 2, 'LOCAL' => 3, 'TO' => array( 4, 'var', ) ); } db/login/vendor/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php000064400000012347151502156020022670 0ustar00 1, 'DELAYED' => 1 ); /** * Tables used as target for this statement. * * @var IntoKeyword */ public $into; /** * Values to be replaced. * * @var Array2d */ public $values; /** * If SET clause is present * holds the SetOperation. * * @var SetOperation[] */ public $set; /** * If SELECT clause is present * holds the SelectStatement. * * @var SelectStatement */ public $select; /** * @return string */ public function build() { $ret = 'REPLACE ' . $this->options; $ret = trim($ret) . ' INTO ' . $this->into; if (! is_null($this->values) && count($this->values) > 0) { $ret .= ' VALUES ' . Array2d::build($this->values); } elseif (! is_null($this->set) && count($this->set) > 0) { $ret .= ' SET ' . SetOperation::build($this->set); } elseif (! is_null($this->select) && strlen($this->select) > 0) { $ret .= ' ' . $this->select->build(); } return $ret; } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `REPLACE`. // parse any options if provided $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); ++$list->idx; /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------------------[ INTO ]----------------------------------> 1 * * 1 -------------------------[ VALUES/VALUE/SET/SELECT ]-----------------------> 2 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'INTO' ) { $parser->error('Unexpected keyword.', $token); break; } ++$list->idx; $this->into = IntoKeyword::parse( $parser, $list, array('fromReplace' => true) ); $state = 1; } elseif ($state === 1) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'VALUE' || $token->keyword === 'VALUES' ) { ++$list->idx; // skip VALUES $this->values = Array2d::parse($parser, $list); } elseif ($token->keyword === 'SET') { ++$list->idx; // skip SET $this->set = SetOperation::parse($parser, $list); } elseif ($token->keyword === 'SELECT') { $this->select = new SelectStatement($parser, $list); } else { $parser->error( 'Unexpected keyword.', $token ); break; } $state = 2; } else { $parser->error( 'Unexpected token.', $token ); break; } } } --$list->idx; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/ShowStatement.php000064400000002514151502156020022230 0ustar00 1, 'AUTHORS' => 2, 'BINARY' => 2, 'BINLOG' => 2, 'CHARACTER' => 2, 'CODE' => 2, 'COLLATION' => 2, 'COLUMNS' => 2, 'CONTRIBUTORS' => 2, 'DATABASE' => 2, 'DATABASES' => 2, 'ENGINE' => 2, 'ENGINES' => 2, 'ERRORS' => 2, 'EVENT' => 2, 'EVENTS' => 2, 'FUNCTION' => 2, 'GRANTS' => 2, 'HOSTS' => 2, 'INDEX' => 2, 'INNODB' => 2, 'LOGS' => 2, 'MASTER' => 2, 'OPEN' => 2, 'PLUGINS' => 2, 'PRIVILEGES' => 2, 'PROCEDURE' => 2, 'PROCESSLIST' => 2, 'PROFILE' => 2, 'PROFILES' => 2, 'SCHEDULER' => 2, 'SET' => 2, 'SLAVE' => 2, 'STATUS' => 2, 'TABLE' => 2, 'TABLES' => 2, 'TRIGGER' => 2, 'TRIGGERS' => 2, 'VARIABLES' => 2, 'VIEW' => 2, 'WARNINGS' => 2 ); } db/login/vendor/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php000064400000026731151502156020022521 0ustar00 1, 'QUICK' => 2, 'IGNORE' => 3 ); /** * The clauses of this statement, in order. * * @see Statement::$CLAUSES * * @var array */ public static $CLAUSES = array( 'DELETE' => array( 'DELETE', 2, ), // Used for options. '_OPTIONS' => array( '_OPTIONS', 1, ), 'FROM' => array( 'FROM', 3, ), 'PARTITION' => array( 'PARTITION', 3, ), 'USING' => array( 'USING', 3, ), 'WHERE' => array( 'WHERE', 3, ), 'ORDER BY' => array( 'ORDER BY', 3, ), 'LIMIT' => array( 'LIMIT', 3, ) ); /** * Table(s) used as sources for this statement. * * @var Expression[] */ public $from; /** * Joins. * * @var JoinKeyword[] */ public $join; /** * Tables used as sources for this statement. * * @var Expression[] */ public $using; /** * Columns used in this statement. * * @var Expression[] */ public $columns; /** * Partitions used as source for this statement. * * @var ArrayObj */ public $partition; /** * Conditions used for filtering each row of the result set. * * @var Condition[] */ public $where; /** * Specifies the order of the rows in the result set. * * @var OrderKeyword[] */ public $order; /** * Conditions used for limiting the size of the result set. * * @var Limit */ public $limit; /** * @return string */ public function build() { $ret = 'DELETE ' . OptionsArray::build($this->options); if (! is_null($this->columns) && count($this->columns) > 0) { $ret .= ' ' . ExpressionArray::build($this->columns); } if (! is_null($this->from) && count($this->from) > 0) { $ret .= ' FROM ' . ExpressionArray::build($this->from); } if (! is_null($this->join) && count($this->join) > 0) { $ret .= ' ' . JoinKeyword::build($this->join); } if (! is_null($this->using) && count($this->using) > 0) { $ret .= ' USING ' . ExpressionArray::build($this->using); } if (! is_null($this->where) && count($this->where) > 0) { $ret .= ' WHERE ' . Condition::build($this->where); } if (! is_null($this->order) && count($this->order) > 0) { $ret .= ' ORDER BY ' . ExpressionArray::build($this->order); } if (! is_null($this->limit) && strlen($this->limit) > 0) { $ret .= ' LIMIT ' . Limit::build($this->limit); } return $ret; } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `DELETE`. // parse any options if provided $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); ++$list->idx; /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------------------[ FROM ]----------------------------------> 2 * 0 ------------------------------[ table[.*] ]--------------------------------> 1 * 1 ---------------------------------[ FROM ]----------------------------------> 2 * 2 --------------------------------[ USING ]----------------------------------> 3 * 2 --------------------------------[ WHERE ]----------------------------------> 4 * 2 --------------------------------[ ORDER ]----------------------------------> 5 * 2 --------------------------------[ LIMIT ]----------------------------------> 6 * * @var int */ $state = 0; /** * If the query is multi-table or not. * * @var bool */ $multiTable = false; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword !== 'FROM') { $parser->error('Unexpected keyword.', $token); break; } else { ++$list->idx; // Skip 'FROM' $this->from = ExpressionArray::parse($parser, $list); $state = 2; } } else { $this->columns = ExpressionArray::parse($parser, $list); $state = 1; } } elseif ($state === 1) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword !== 'FROM') { $parser->error('Unexpected keyword.', $token); break; } else { ++$list->idx; // Skip 'FROM' $this->from = ExpressionArray::parse($parser, $list); $state = 2; } } else { $parser->error('Unexpected token.', $token); break; } } elseif ($state === 2) { if ($token->type === Token::TYPE_KEYWORD) { if (stripos($token->keyword, 'JOIN') !== false) { ++$list->idx; $this->join = JoinKeyword::parse($parser, $list); // remain in state = 2 } else { switch ($token->keyword) { case 'USING': ++$list->idx; // Skip 'USING' $this->using = ExpressionArray::parse($parser, $list); $state = 3; $multiTable = true; break; case 'WHERE': ++$list->idx; // Skip 'WHERE' $this->where = Condition::parse($parser, $list); $state = 4; break; case 'ORDER BY': ++$list->idx; // Skip 'ORDER BY' $this->order = OrderKeyword::parse($parser, $list); $state = 5; break; case 'LIMIT': ++$list->idx; // Skip 'LIMIT' $this->limit = Limit::parse($parser, $list); $state = 6; break; default: $parser->error('Unexpected keyword.', $token); break 2; } } } } elseif ($state === 3) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'WHERE') { ++$list->idx; // Skip 'WHERE' $this->where = Condition::parse($parser, $list); $state = 4; } else { $parser->error('Unexpected keyword.', $token); break; } } else { $parser->error('Unexpected token.', $token); break; } } elseif ($state === 4) { if ($multiTable === true && $token->type === Token::TYPE_KEYWORD ) { $parser->error( 'This type of clause is not valid in Multi-table queries.', $token ); break; } if ($token->type === Token::TYPE_KEYWORD) { switch ($token->keyword) { case 'ORDER BY': ++$list->idx; // Skip 'ORDER BY' $this->order = OrderKeyword::parse($parser, $list); $state = 5; break; case 'LIMIT': ++$list->idx; // Skip 'LIMIT' $this->limit = Limit::parse($parser, $list); $state = 6; break; default: $parser->error('Unexpected keyword.', $token); break 2; } } } elseif ($state === 5) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'LIMIT') { ++$list->idx; // Skip 'LIMIT' $this->limit = Limit::parse($parser, $list); $state = 6; } else { $parser->error('Unexpected keyword.', $token); break; } } } } if ($state >= 2) { foreach ($this->from as $from_expr) { $from_expr->database = $from_expr->table; $from_expr->table = $from_expr->column; $from_expr->column = null; } } --$list->idx; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/LoadStatement.php000064400000026042151502156020022171 0ustar00 1, 'CONCURRENT' => 1, 'LOCAL' => 2 ); /** * FIELDS/COLUMNS Options for `LOAD DATA...INFILE` statements. * * @var array */ public static $FIELDS_OPTIONS = array( 'TERMINATED BY' => array( 1, 'expr', ), 'OPTIONALLY' => 2, 'ENCLOSED BY' => array( 3, 'expr', ), 'ESCAPED BY' => array( 4, 'expr', ) ); /** * LINES Options for `LOAD DATA...INFILE` statements. * * @var array */ public static $LINES_OPTIONS = array( 'STARTING BY' => array( 1, 'expr', ), 'TERMINATED BY' => array( 2, 'expr', ) ); /** * File name being used to load data. * * @var Expression */ public $file_name; /** * Table used as destination for this statement. * * @var Expression */ public $table; /** * Partitions used as source for this statement. * * @var ArrayObj */ public $partition; /** * Character set used in this statement. * * @var Expression */ public $charset_name; /** * Options for FIELDS/COLUMNS keyword. * * @var OptionsArray * * @see static::$FIELDS_OPTIONS */ public $fields_options; /** * Whether to use `FIELDS` or `COLUMNS` while building. * * @var string */ public $fields_keyword; /** * Options for OPTIONS keyword. * * @var OptionsArray * * @see static::$LINES_OPTIONS */ public $lines_options; /** * Column names or user variables. * * @var Expression[] */ public $col_name_or_user_var; /** * SET clause's updated values(optional). * * @var SetOperation[] */ public $set; /** * Ignore 'number' LINES/ROWS. * * @var Expression */ public $ignore_number; /** * REPLACE/IGNORE Keyword. * * @var string */ public $replace_ignore; /** * LINES/ROWS Keyword. * * @var string */ public $lines_rows; /** * @return string */ public function build() { $ret = 'LOAD DATA ' . $this->options . ' INFILE ' . $this->file_name; if ($this->replace_ignore !== null) { $ret .= ' ' . trim($this->replace_ignore); } $ret .= ' INTO TABLE ' . $this->table; if ($this->partition !== null && strlen($this->partition) > 0) { $ret .= ' PARTITION ' . ArrayObj::build($this->partition); } if ($this->charset_name !== null) { $ret .= ' CHARACTER SET ' . $this->charset_name; } if ($this->fields_keyword !== null) { $ret .= ' ' . $this->fields_keyword . ' ' . $this->fields_options; } if ($this->lines_options !== null && strlen($this->lines_options) > 0) { $ret .= ' LINES ' . $this->lines_options; } if ($this->ignore_number !== null) { $ret .= ' IGNORE ' . $this->ignore_number . ' ' . $this->lines_rows; } if ($this->col_name_or_user_var !== null && count($this->col_name_or_user_var) > 0) { $ret .= ' ' . ExpressionArray::build($this->col_name_or_user_var); } if ($this->set !== null && count($this->set) > 0) { $ret .= ' SET ' . SetOperation::build($this->set); } return $ret; } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `LOAD DATA`. // parse any options if provided $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); ++$list->idx; /** * The state of the parser. * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'INFILE' ) { $parser->error('Unexpected keyword.', $token); break; } elseif ($token->type !== Token::TYPE_KEYWORD) { $parser->error('Unexpected token.', $token); break; } ++$list->idx; $this->file_name = Expression::parse( $parser, $list, array('parseField' => 'file') ); $state = 1; } elseif ($state === 1) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'REPLACE' || $token->keyword === 'IGNORE') { $this->replace_ignore = trim($token->keyword); } elseif ($token->keyword === 'INTO') { $state = 2; } } } elseif ($state === 2) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'TABLE' ) { ++$list->idx; $this->table = Expression::parse($parser, $list, array('parseField' => 'table')); $state = 3; } else { $parser->error('Unexpected token.', $token); break; } } elseif ($state >= 3 && $state <= 7) { if ($token->type === Token::TYPE_KEYWORD) { $newState = $this->parseKeywordsAccordingToState( $parser, $list, $state ); if ($newState === $state) { // Avoid infinite loop break; } } elseif ($token->type === Token::TYPE_OPERATOR && $token->token === '(' ) { $this->col_name_or_user_var = ExpressionArray::parse($parser, $list); $state = 7; } else { $parser->error('Unexpected token.', $token); break; } } } --$list->idx; } public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS') { ++$list->idx; if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { // parse field options $this->fields_options = OptionsArray::parse( $parser, $list, static::$FIELDS_OPTIONS ); $this->fields_keyword = $keyword; } else { // parse line options $this->lines_options = OptionsArray::parse( $parser, $list, static::$LINES_OPTIONS ); } } public function parseKeywordsAccordingToState($parser, $list, $state) { $token = $list->tokens[$list->idx]; switch ($state) { case 3: if ($token->keyword === 'PARTITION') { ++$list->idx; $this->partition = ArrayObj::parse($parser, $list); $state = 4; return $state; } // no break case 4: if ($token->keyword === 'CHARACTER SET') { ++$list->idx; $this->charset_name = Expression::parse($parser, $list); $state = 5; return $state; } // no break case 5: if ($token->keyword === 'FIELDS' || $token->keyword === 'COLUMNS' || $token->keyword === 'LINES' ) { $this->parseFileOptions($parser, $list, $token->value); $state = 6; return $state; } // no break case 6: if ($token->keyword === 'IGNORE') { ++$list->idx; $this->ignore_number = Expression::parse($parser, $list); $nextToken = $list->getNextOfType(Token::TYPE_KEYWORD); if ($nextToken->type === Token::TYPE_KEYWORD && (($nextToken->keyword === 'LINES') || ($nextToken->keyword === 'ROWS')) ) { $this->lines_rows = $nextToken->token; } $state = 7; return $state; } // no break case 7: if ($token->keyword === 'SET') { ++$list->idx; $this->set = SetOperation::parse($parser, $list); $state = 8; return $state; } // no break default: } return $state; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php000064400000004621151502156020022533 0ustar00 1, 'IGNORE' => 2 ); /** * The clauses of this statement, in order. * * @see Statement::$CLAUSES * * @var array */ public static $CLAUSES = array( 'UPDATE' => array( 'UPDATE', 2, ), // Used for options. '_OPTIONS' => array( '_OPTIONS', 1, ), // Used for updated tables. '_UPDATE' => array( 'UPDATE', 1, ), 'SET' => array( 'SET', 3, ), 'WHERE' => array( 'WHERE', 3, ), 'ORDER BY' => array( 'ORDER BY', 3, ), 'LIMIT' => array( 'LIMIT', 3, ) ); /** * Tables used as sources for this statement. * * @var Expression[] */ public $tables; /** * The updated values. * * @var SetOperation[] */ public $set; /** * Conditions used for filtering each row of the result set. * * @var Condition[] */ public $where; /** * Specifies the order of the rows in the result set. * * @var OrderKeyword[] */ public $order; /** * Conditions used for limiting the size of the result set. * * @var Limit */ public $limit; } db/login/vendor/phpmyadmin/sql-parser/src/Statements/CheckStatement.php000064400000001145151502156020022324 0ustar00 1, 'FOR UPGRADE' => 2, 'QUICK' => 3, 'FAST' => 4, 'MEDIUM' => 5, 'EXTENDED' => 6, 'CHANGED' => 7 ); } db/login/vendor/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php000064400000003047151502156020023534 0ustar00idx; $this->options->merge( OptionsArray::parse( $parser, $list, static::$OPTIONS ) ); } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/SelectStatement.php000064400000017041151502156020022530 0ustar00 1, 'DISTINCT' => 1, 'DISTINCTROW' => 1, 'HIGH_PRIORITY' => 2, 'MAX_STATEMENT_TIME' => array( 3, 'var=', ), 'STRAIGHT_JOIN' => 4, 'SQL_SMALL_RESULT' => 5, 'SQL_BIG_RESULT' => 6, 'SQL_BUFFER_RESULT' => 7, 'SQL_CACHE' => 8, 'SQL_NO_CACHE' => 8, 'SQL_CALC_FOUND_ROWS' => 9 ); public static $END_OPTIONS = array( 'FOR UPDATE' => 1, 'LOCK IN SHARE MODE' => 1 ); /** * The clauses of this statement, in order. * * @see Statement::$CLAUSES * * @var array */ public static $CLAUSES = array( 'SELECT' => array( 'SELECT', 2, ), // Used for options. '_OPTIONS' => array( '_OPTIONS', 1, ), // Used for selected expressions. '_SELECT' => array( 'SELECT', 1, ), 'INTO' => array( 'INTO', 3, ), 'FROM' => array( 'FROM', 3, ), 'FORCE' => array( 'FORCE', 1, ), 'USE' => array( 'USE', 1, ), 'IGNORE' => array( 'IGNORE', 3, ), 'PARTITION' => array( 'PARTITION', 3, ), 'JOIN' => array( 'JOIN', 1, ), 'FULL JOIN' => array( 'FULL JOIN', 1, ), 'INNER JOIN' => array( 'INNER JOIN', 1, ), 'LEFT JOIN' => array( 'LEFT JOIN', 1, ), 'LEFT OUTER JOIN' => array( 'LEFT OUTER JOIN', 1, ), 'RIGHT JOIN' => array( 'RIGHT JOIN', 1, ), 'RIGHT OUTER JOIN' => array( 'RIGHT OUTER JOIN', 1, ), 'NATURAL JOIN' => array( 'NATURAL JOIN', 1, ), 'NATURAL LEFT JOIN' => array( 'NATURAL LEFT JOIN', 1, ), 'NATURAL RIGHT JOIN' => array( 'NATURAL RIGHT JOIN', 1, ), 'NATURAL LEFT OUTER JOIN' => array( 'NATURAL LEFT OUTER JOIN', 1, ), 'NATURAL RIGHT OUTER JOIN' => array( 'NATURAL RIGHT JOIN', 1, ), 'WHERE' => array( 'WHERE', 3, ), 'GROUP BY' => array( 'GROUP BY', 3, ), 'HAVING' => array( 'HAVING', 3, ), 'ORDER BY' => array( 'ORDER BY', 3, ), 'LIMIT' => array( 'LIMIT', 3, ), 'PROCEDURE' => array( 'PROCEDURE', 3, ), 'UNION' => array( 'UNION', 1, ), 'EXCEPT' => array( 'EXCEPT', 1, ), 'INTERSECT' => array( 'INTERSECT', 1, ), '_END_OPTIONS' => array( '_END_OPTIONS', 1, ), // These are available only when `UNION` is present. // 'ORDER BY' => array('ORDER BY', 3), // 'LIMIT' => array('LIMIT', 3) ); /** * Expressions that are being selected by this statement. * * @var Expression[] */ public $expr = array(); /** * Tables used as sources for this statement. * * @var Expression[] */ public $from = array(); /** * Index hints * * @var IndexHint[] */ public $index_hints; /** * Partitions used as source for this statement. * * @var ArrayObj */ public $partition; /** * Conditions used for filtering each row of the result set. * * @var Condition[] */ public $where; /** * Conditions used for grouping the result set. * * @var OrderKeyword[] */ public $group; /** * Conditions used for filtering the result set. * * @var Condition[] */ public $having; /** * Specifies the order of the rows in the result set. * * @var OrderKeyword[] */ public $order; /** * Conditions used for limiting the size of the result set. * * @var Limit */ public $limit; /** * Procedure that should process the data in the result set. * * @var FunctionCall */ public $procedure; /** * Destination of this result set. * * @var IntoKeyword */ public $into; /** * Joins. * * @var JoinKeyword[] */ public $join; /** * Unions. * * @var SelectStatement[] */ public $union = array(); /** * The end options of this query. * * @var OptionsArray * * @see static::$END_OPTIONS */ public $end_options; /** * Gets the clauses of this statement. * * @return array */ public function getClauses() { // This is a cheap fix for `SELECT` statements that contain `UNION`. // The `ORDER BY` and `LIMIT` clauses should be at the end of the // statement. if (! empty($this->union)) { $clauses = static::$CLAUSES; unset($clauses['ORDER BY'], $clauses['LIMIT']); $clauses['ORDER BY'] = array( 'ORDER BY', 3 ); $clauses['LIMIT'] = array( 'LIMIT', 3 ); return $clauses; } return static::$CLAUSES; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php000064400000000420151502156020022702 0ustar00 1, 'BEGIN' => 1, 'COMMIT' => 1, 'ROLLBACK' => 1, 'WITH CONSISTENT SNAPSHOT' => 2, 'WORK' => 2, 'AND NO CHAIN' => 3, 'AND CHAIN' => 3, 'RELEASE' => 4, 'NO RELEASE' => 4 ); /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { parent::parse($parser, $list); // Checks the type of this query. if ($this->options->has('START TRANSACTION') || $this->options->has('BEGIN') ) { $this->type = self::TYPE_BEGIN; } elseif ($this->options->has('COMMIT') || $this->options->has('ROLLBACK') ) { $this->type = self::TYPE_END; } } /** * @return string */ public function build() { $ret = OptionsArray::build($this->options); if ($this->type === self::TYPE_BEGIN) { foreach ($this->statements as $statement) { /* * @var SelectStatement $statement */ $ret .= ';' . $statement->build(); } $ret .= ';' . $this->end->build(); } return $ret; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php000064400000001315151502156020023106 0ustar00 1, 'NO_WRITE_TO_BINLOG' => 2, 'LOCAL' => 3 ); /** * Optimized tables. * * @var Expression[] */ public $tables; } db/login/vendor/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php000064400000001322151502156020022707 0ustar00 1, 'NO_WRITE_TO_BINLOG' => 2, 'LOCAL' => 3 ); /** * Analyzed tables. * * @var Expression[] */ public $tables; } db/login/vendor/phpmyadmin/sql-parser/src/Statements/CreateStatement.php000064400000055353151502156020022524 0ustar00 1, // CREATE VIEW 'OR REPLACE' => 2, 'ALGORITHM' => array( 3, 'var=', ), // `DEFINER` is also used for `CREATE FUNCTION / PROCEDURE` 'DEFINER' => array( 4, 'expr=', ), 'SQL SECURITY' => array( 5, 'var', ), 'DATABASE' => 6, 'EVENT' => 6, 'FUNCTION' => 6, 'INDEX' => 6, 'UNIQUE INDEX' => 6, 'FULLTEXT INDEX' => 6, 'SPATIAL INDEX' => 6, 'PROCEDURE' => 6, 'SERVER' => 6, 'TABLE' => 6, 'TABLESPACE' => 6, 'TRIGGER' => 6, 'USER' => 6, 'VIEW' => 6, 'SCHEMA' => 6, // CREATE TABLE 'IF NOT EXISTS' => 7 ); /** * All database options. * * @var array */ public static $DB_OPTIONS = array( 'CHARACTER SET' => array( 1, 'var=', ), 'CHARSET' => array( 1, 'var=', ), 'DEFAULT CHARACTER SET' => array( 1, 'var=', ), 'DEFAULT CHARSET' => array( 1, 'var=', ), 'DEFAULT COLLATE' => array( 2, 'var=', ), 'COLLATE' => array( 2, 'var=', ) ); /** * All table options. * * @var array */ public static $TABLE_OPTIONS = array( 'ENGINE' => array( 1, 'var=', ), 'AUTO_INCREMENT' => array( 2, 'var=', ), 'AVG_ROW_LENGTH' => array( 3, 'var', ), 'CHARACTER SET' => array( 4, 'var=', ), 'CHARSET' => array( 4, 'var=', ), 'DEFAULT CHARACTER SET' => array( 4, 'var=', ), 'DEFAULT CHARSET' => array( 4, 'var=', ), 'CHECKSUM' => array( 5, 'var', ), 'DEFAULT COLLATE' => array( 6, 'var=', ), 'COLLATE' => array( 6, 'var=', ), 'COMMENT' => array( 7, 'var=', ), 'CONNECTION' => array( 8, 'var', ), 'DATA DIRECTORY' => array( 9, 'var', ), 'DELAY_KEY_WRITE' => array( 10, 'var', ), 'INDEX DIRECTORY' => array( 11, 'var', ), 'INSERT_METHOD' => array( 12, 'var', ), 'KEY_BLOCK_SIZE' => array( 13, 'var', ), 'MAX_ROWS' => array( 14, 'var', ), 'MIN_ROWS' => array( 15, 'var', ), 'PACK_KEYS' => array( 16, 'var', ), 'PASSWORD' => array( 17, 'var', ), 'ROW_FORMAT' => array( 18, 'var', ), 'TABLESPACE' => array( 19, 'var', ), 'STORAGE' => array( 20, 'var', ), 'UNION' => array( 21, 'var', ) ); /** * All function options. * * @var array */ public static $FUNC_OPTIONS = array( 'COMMENT' => array( 1, 'var=', ), 'LANGUAGE SQL' => 2, 'DETERMINISTIC' => 3, 'NOT DETERMINISTIC' => 3, 'CONTAINS SQL' => 4, 'NO SQL' => 4, 'READS SQL DATA' => 4, 'MODIFIES SQL DATA' => 4, 'SQL SECURITY DEFINER' => array( 5, 'var', ) ); /** * All trigger options. * * @var array */ public static $TRIGGER_OPTIONS = array( 'BEFORE' => 1, 'AFTER' => 1, 'INSERT' => 2, 'UPDATE' => 2, 'DELETE' => 2 ); /** * The name of the entity that is created. * * Used by all `CREATE` statements. * * @var Expression */ public $name; /** * The options of the entity (table, procedure, function, etc.). * * Used by `CREATE TABLE`, `CREATE FUNCTION` and `CREATE PROCEDURE`. * * @var OptionsArray * * @see static::$TABLE_OPTIONS * @see static::$FUNC_OPTIONS * @see static::$TRIGGER_OPTIONS */ public $entityOptions; /** * If `CREATE TABLE`, a list of columns and keys. * If `CREATE VIEW`, a list of columns. * * Used by `CREATE TABLE` and `CREATE VIEW`. * * @var CreateDefinition[]|ArrayObj */ public $fields; /** * If `CREATE TABLE ... SELECT`. * If `CREATE VIEW AS ` ... SELECT`. * * Used by `CREATE TABLE`, `CREATE VIEW` * * @var SelectStatement|null */ public $select; /** * If `CREATE TABLE ... LIKE`. * * Used by `CREATE TABLE` * * @var Expression */ public $like; /** * Expression used for partitioning. * * @var string */ public $partitionBy; /** * The number of partitions. * * @var int */ public $partitionsNum; /** * Expression used for subpartitioning. * * @var string */ public $subpartitionBy; /** * The number of subpartitions. * * @var int */ public $subpartitionsNum; /** * The partition of the new table. * * @var PartitionDefinition[] */ public $partitions; /** * If `CREATE TRIGGER` the name of the table. * * Used by `CREATE TRIGGER`. * * @var Expression */ public $table; /** * The return data type of this routine. * * Used by `CREATE FUNCTION`. * * @var DataType */ public $return; /** * The parameters of this routine. * * Used by `CREATE FUNCTION` and `CREATE PROCEDURE`. * * @var ParameterDefinition[] */ public $parameters; /** * The body of this function or procedure. * For views, it is the select statement that creates the view. * Used by `CREATE FUNCTION`, `CREATE PROCEDURE` and `CREATE VIEW`. * * @var Token[]|string */ public $body = array(); /** * @return string */ public function build() { $fields = ''; if (! empty($this->fields)) { if (is_array($this->fields)) { $fields = CreateDefinition::build($this->fields) . ' '; } elseif ($this->fields instanceof ArrayObj) { $fields = ArrayObj::build($this->fields); } } if ($this->options->has('DATABASE') || $this->options->has('SCHEMA')) { return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . OptionsArray::build($this->entityOptions); } elseif ($this->options->has('TABLE')) { if (! is_null($this->select)) { return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . $this->select->build(); } elseif (! is_null($this->like)) { return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' LIKE ' . Expression::build($this->like); } else { $partition = ''; if (! empty($this->partitionBy)) { $partition .= "\nPARTITION BY " . $this->partitionBy; } if (! empty($this->partitionsNum)) { $partition .= "\nPARTITIONS " . $this->partitionsNum; } if (! empty($this->subpartitionBy)) { $partition .= "\nSUBPARTITION BY " . $this->subpartitionBy; } if (! empty($this->subpartitionsNum)) { $partition .= "\nSUBPARTITIONS " . $this->subpartitionsNum; } if (! empty($this->partitions)) { $partition .= "\n" . PartitionDefinition::build($this->partitions); } return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . $fields . OptionsArray::build($this->entityOptions) . $partition; } } elseif ($this->options->has('VIEW')) { return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . $fields . ' AS ' . ($this->select ? $this->select->build() : TokensList::build($this->body)) . ' ' . OptionsArray::build($this->entityOptions); } elseif ($this->options->has('TRIGGER')) { return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . OptionsArray::build($this->entityOptions) . ' ' . 'ON ' . Expression::build($this->table) . ' ' . 'FOR EACH ROW ' . TokensList::build($this->body); } elseif ($this->options->has('PROCEDURE') || $this->options->has('FUNCTION') ) { $tmp = ''; if ($this->options->has('FUNCTION')) { $tmp = 'RETURNS ' . DataType::build($this->return); } return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . ParameterDefinition::build($this->parameters) . ' ' . $tmp . ' ' . TokensList::build($this->body); } return 'CREATE ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->name) . ' ' . TokensList::build($this->body); } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `CREATE`. // Parsing options. $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); ++$list->idx; // Skipping last option. $isDatabase = $this->options->has('DATABASE') || $this->options->has('SCHEMA'); $fieldName = $isDatabase ? 'database' : 'table'; // Parsing the field name. $this->name = Expression::parse( $parser, $list, array( 'parseField' => $fieldName, 'breakOnAlias' => true ) ); if (! isset($this->name) || ($this->name === '')) { $parser->error( 'The name of the entity was expected.', $list->tokens[$list->idx] ); } else { ++$list->idx; // Skipping field. } /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; $nextidx = $list->idx + 1; while ($nextidx < $list->count && $list->tokens[$nextidx]->type === Token::TYPE_WHITESPACE) { ++$nextidx; } if ($isDatabase) { $this->entityOptions = OptionsArray::parse( $parser, $list, static::$DB_OPTIONS ); } elseif ($this->options->has('TABLE')) { if (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SELECT')) { /* CREATE TABLE ... SELECT */ $this->select = new SelectStatement($parser, $list); } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'AS') && ($list->tokens[$nextidx]->type === Token::TYPE_KEYWORD) && ($list->tokens[$nextidx]->value === 'SELECT')) { /* CREATE TABLE ... AS SELECT */ $list->idx = $nextidx; $this->select = new SelectStatement($parser, $list); } elseif ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'LIKE') { /* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */ $list->idx = $nextidx; $this->like = Expression::parse( $parser, $list, array( 'parseField' => 'table', 'breakOnAlias' => true ) ); // The 'LIKE' keyword was found, but no table_name was found next to it if (is_null($this->like)) { $parser->error( 'A table name was expected.', $list->tokens[$list->idx] ); } } else { $this->fields = CreateDefinition::parse($parser, $list); if (empty($this->fields)) { $parser->error( 'At least one column definition was expected.', $list->tokens[$list->idx] ); } ++$list->idx; $this->entityOptions = OptionsArray::parse( $parser, $list, static::$TABLE_OPTIONS ); /** * The field that is being filled (`partitionBy` or * `subpartitionBy`). * * @var string */ $field = null; /** * The number of brackets. `false` means no bracket was found * previously. At least one bracket is required to validate the * expression. * * @var int|bool */ $brackets = false; /* * Handles partitions. */ for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping comments. if ($token->type === Token::TYPE_COMMENT) { continue; } if (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'PARTITION BY')) { $field = 'partitionBy'; $brackets = false; } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITION BY')) { $field = 'subpartitionBy'; $brackets = false; } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'PARTITIONS')) { $token = $list->getNextOfType(Token::TYPE_NUMBER); --$list->idx; // `getNextOfType` also advances one position. $this->partitionsNum = $token->value; } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITIONS')) { $token = $list->getNextOfType(Token::TYPE_NUMBER); --$list->idx; // `getNextOfType` also advances one position. $this->subpartitionsNum = $token->value; } elseif (! empty($field)) { /* * Handling the content of `PARTITION BY` and `SUBPARTITION BY`. */ // Counting brackets. if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { // This is used instead of `++$brackets` because, // initially, `$brackets` is `false` cannot be // incremented. $brackets = $brackets + 1; } elseif ($token->value === ')') { --$brackets; } } // Building the expression used for partitioning. $this->$field .= ($token->type === Token::TYPE_WHITESPACE) ? ' ' : $token->token; // Last bracket was read, the expression ended. // Comparing with `0` and not `false`, because `false` means // that no bracket was found and at least one must is // required. if ($brackets === 0) { $this->$field = trim($this->$field); $field = null; } } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { if (! empty($this->partitionBy)) { $this->partitions = ArrayObj::parse( $parser, $list, array( 'type' => 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition' ) ); } break; } } } } elseif ($this->options->has('PROCEDURE') || $this->options->has('FUNCTION') ) { $this->parameters = ParameterDefinition::parse($parser, $list); if ($this->options->has('FUNCTION')) { $prev_token = $token; $token = $list->getNextOfType(Token::TYPE_KEYWORD); if (is_null($token) || $token->keyword !== 'RETURNS') { $parser->error( 'A "RETURNS" keyword was expected.', is_null($token) ? $prev_token : $token ); } else { ++$list->idx; $this->return = DataType::parse( $parser, $list ); } } ++$list->idx; $this->entityOptions = OptionsArray::parse( $parser, $list, static::$FUNC_OPTIONS ); ++$list->idx; for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; $this->body[] = $token; } } elseif ($this->options->has('VIEW')) { /** @var Token $token */ $token = $list->getNext(); // Skipping whitespaces and comments. // Parsing columns list. if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { --$list->idx; // getNext() also goes forward one field. $this->fields = ArrayObj::parse($parser, $list); ++$list->idx; // Skipping last token from the array. $list->getNext(); } // Parsing the SELECT expression with and without the `AS` keyword if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'SELECT' ) { $this->select = new SelectStatement($parser, $list); } elseif ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'AS' && $list->tokens[$nextidx]->type === Token::TYPE_KEYWORD && $list->tokens[$nextidx]->value === 'SELECT' ) { $list->idx = $nextidx; $this->select = new SelectStatement($parser, $list); } else { for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; if ($token->type === Token::TYPE_DELIMITER) { break; } $this->body[] = $token; } } } elseif ($this->options->has('TRIGGER')) { // Parsing the time and the event. $this->entityOptions = OptionsArray::parse( $parser, $list, static::$TRIGGER_OPTIONS ); ++$list->idx; $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'ON'); ++$list->idx; // Skipping `ON`. // Parsing the name of the table. $this->table = Expression::parse( $parser, $list, array( 'parseField' => 'table', 'breakOnAlias' => true ) ); ++$list->idx; $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'FOR EACH ROW'); ++$list->idx; // Skipping `FOR EACH ROW`. for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; $this->body[] = $token; } } else { for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; if ($token->type === Token::TYPE_DELIMITER) { break; } $this->body[] = $token; } } } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/LockStatement.php000064400000006734151502156020022210 0ustar00tokens[$list->idx]->value === 'UNLOCK') { // this is in fact an UNLOCK statement $this->isLock = false; } ++$list->idx; // Skipping `LOCK`. /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------- [ TABLES ] -----------------> 1 * 1 -------------- [ lock_expr ] ----------------> 2 * 2 ------------------ [ , ] --------------------> 1 * * @var int */ $state = 0; /** * Previous parsed token */ $prevToken = null; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword !== 'TABLES') { $parser->error('Unexpected keyword.', $token); break; } $state = 1; continue; } else { $parser->error('Unexpected token.', $token); break; } } elseif ($state === 1) { if (! $this->isLock) { // UNLOCK statement should not have any more tokens $parser->error('Unexpected token.', $token); break; } $this->locked[] = LockExpression::parse($parser, $list); $state = 2; } elseif ($state === 2) { if ($token->value === ',') { // move over to parsing next lock expression $state = 1; } } $prevToken = $token; } if ($state !== 2 && $prevToken != null) { $parser->error('Unexpected end of LOCK statement.', $prevToken); } } /** * @return string */ public function build() { return trim(($this->isLock ? 'LOCK' : 'UNLOCK') . ' TABLES ' . LockExpression::build($this->locked)); } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/RenameStatement.php000064400000002651151502156020022521 0ustar00type === Token::TYPE_KEYWORD) && ($token->keyword === 'RENAME')) { // Checking if it is the beginning of the query. $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE'); } } /** * @return string */ public function build() { return 'RENAME TABLE ' . RenameOperation::build($this->renames); } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php000064400000002652151502156020024237 0ustar00unknown as $token) { $query .= $token->token; } return $query; } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { for (; $list->idx < $list->count; ++$list->idx) { if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { break; } $this->unknown[] = $list->tokens[$list->idx]; } } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/CallStatement.php000064400000001411151502156020022156 0ustar00call->name . "(" . ($this->call->parameters ? implode(",", $this->call->parameters->raw) : "") . ")"; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/SetStatement.php000064400000004117151502156020022044 0ustar00 array( 'SET', 3 ), '_END_OPTIONS' => array( '_END_OPTIONS', 1 ) ); /** * Possible exceptions in SET statment. * * @var array */ public static $OPTIONS = array( 'CHARSET' => array( 3, 'var', ), 'CHARACTER SET' => array( 3, 'var', ), 'NAMES' => array( 3, 'var', ), 'PASSWORD' => array( 3, 'expr', ), 'SESSION' => 3, 'GLOBAL' => 3, 'PERSIST' => 3, 'PERSIST_ONLY' => 3, '@@SESSION' => 3, '@@GLOBAL' => 3, '@@PERSIST' => 3, '@@PERSIST_ONLY' => 3, ); public static $END_OPTIONS = array( 'COLLATE' => array( 1, 'var', ), 'DEFAULT' => 1 ); /** * Options used in current statement. * * @var OptionsArray[] */ public $options; /** * The end options of this query. * * @var OptionsArray * * @see static::$END_OPTIONS */ public $end_options; /** * The updated values. * * @var SetOperation[] */ public $set; /** * @return string */ public function build() { $ret = 'SET ' . OptionsArray::build($this->options) . ' ' . SetOperation::build($this->set) . ' ' . OptionsArray::build($this->end_options); return trim($ret); } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/DropStatement.php000064400000002775151502156020022225 0ustar00 1, 'EVENT' => 1, 'FUNCTION' => 1, 'INDEX' => 1, 'LOGFILE' => 1, 'PROCEDURE' => 1, 'SCHEMA' => 1, 'SERVER' => 1, 'TABLE' => 1, 'VIEW' => 1, 'TABLESPACE' => 1, 'TRIGGER' => 1, 'USER' => 1, 'TEMPORARY' => 2, 'IF EXISTS' => 3 ); /** * The clauses of this statement, in order. * * @see Statement::$CLAUSES * * @var array */ public static $CLAUSES = array( 'DROP' => array( 'DROP', 2, ), // Used for options. '_OPTIONS' => array( '_OPTIONS', 1, ), // Used for select expressions. 'DROP_' => array( 'DROP', 1, ), 'ON' => array( 'ON', 3, ) ); /** * Dropped elements. * * @var Expression[] */ public $fields; /** * Table of the dropped index. * * @var Expression */ public $table; } db/login/vendor/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php000064400000001056151502156020022733 0ustar00 1, 'FROM' => array( 2, 'var', ) ); } db/login/vendor/phpmyadmin/sql-parser/src/Statements/InsertStatement.php000064400000016466151502156020022567 0ustar00 1, 'DELAYED' => 2, 'HIGH_PRIORITY' => 3, 'IGNORE' => 4 ); /** * Tables used as target for this statement. * * @var IntoKeyword */ public $into; /** * Values to be inserted. * * @var ArrayObj[]|null */ public $values; /** * If SET clause is present * holds the SetOperation. * * @var SetOperation[] */ public $set; /** * If SELECT clause is present * holds the SelectStatement. * * @var SelectStatement */ public $select; /** * If ON DUPLICATE KEY UPDATE clause is present * holds the SetOperation. * * @var SetOperation[] */ public $onDuplicateSet; /** * @return string */ public function build() { $ret = 'INSERT ' . $this->options; $ret = trim($ret) . ' INTO ' . $this->into; if (! is_null($this->values) && count($this->values) > 0) { $ret .= ' VALUES ' . Array2d::build($this->values); } elseif (! is_null($this->set) && count($this->set) > 0) { $ret .= ' SET ' . SetOperation::build($this->set); } elseif (! is_null($this->select) && strlen($this->select) > 0) { $ret .= ' ' . $this->select->build(); } if (! is_null($this->onDuplicateSet) && count($this->onDuplicateSet) > 0) { $ret .= ' ON DUPLICATE KEY UPDATE ' . SetOperation::build($this->onDuplicateSet); } return $ret; } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `INSERT`. // parse any options if provided $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); ++$list->idx; /** * The state of the parser. * * Below are the states of the parser. * * 0 ---------------------------------[ INTO ]----------------------------------> 1 * * 1 -------------------------[ VALUES/VALUE/SET/SELECT ]-----------------------> 2 * * 2 -------------------------[ ON DUPLICATE KEY UPDATE ]-----------------------> 3 * * @var int */ $state = 0; /** * For keeping track of semi-states on encountering * ON DUPLICATE KEY UPDATE ... */ $miniState = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'INTO' ) { $parser->error('Unexpected keyword.', $token); break; } ++$list->idx; $this->into = IntoKeyword::parse( $parser, $list, array('fromInsert' => true) ); $state = 1; } elseif ($state === 1) { if ($token->type === Token::TYPE_KEYWORD) { if ($token->keyword === 'VALUE' || $token->keyword === 'VALUES' ) { ++$list->idx; // skip VALUES $this->values = Array2d::parse($parser, $list); } elseif ($token->keyword === 'SET') { ++$list->idx; // skip SET $this->set = SetOperation::parse($parser, $list); } elseif ($token->keyword === 'SELECT') { $this->select = new SelectStatement($parser, $list); } else { $parser->error( 'Unexpected keyword.', $token ); break; } $state = 2; $miniState = 1; } else { $parser->error( 'Unexpected token.', $token ); break; } } elseif ($state === 2) { $lastCount = $miniState; if ($miniState === 1 && $token->keyword === 'ON') { ++$miniState; } elseif ($miniState === 2 && $token->keyword === 'DUPLICATE') { ++$miniState; } elseif ($miniState === 3 && $token->keyword === 'KEY') { ++$miniState; } elseif ($miniState === 4 && $token->keyword === 'UPDATE') { ++$miniState; } if ($lastCount === $miniState) { $parser->error( 'Unexpected token.', $token ); break; } if ($miniState === 5) { ++$list->idx; $this->onDuplicateSet = SetOperation::parse($parser, $list); $state = 3; } } } --$list->idx; } } db/login/vendor/phpmyadmin/sql-parser/src/Statements/RepairStatement.php000064400000001206151502156020022527 0ustar00 1, 'NO_WRITE_TO_BINLOG' => 2, 'LOCAL' => 3, 'QUICK' => 4, 'EXTENDED' => 5, 'USE_FRM' => 6 ); } db/login/vendor/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php000064400000007527151502156020022403 0ustar00log_type . ' ' . 'LOGS ' . ($this->end_option !== null ? ($this->end_option . ' ' . $this->end_expr) : ''); return trim($ret); } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `PURGE`. /** * The state of the parser. * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } switch ($state) { case 0: // parse `{ BINARY | MASTER }` $this->log_type = self::parseExpectedKeyword($parser, $token, array('BINARY', 'MASTER')); break; case 1: // parse `LOGS` self::parseExpectedKeyword($parser, $token, array('LOGS')); break; case 2: // parse `{ TO | BEFORE }` $this->end_option = self::parseExpectedKeyword($parser, $token, array('TO', 'BEFORE')); break; case 3: // parse `expr` $this->end_expr = Expression::parse($parser, $list, array()); break; default: $parser->error('Unexpected token.', $token); break; } $state++; $prevToken = $token; } // Only one possible end state if ($state != 4) { $parser->error('Unexpected token.', $prevToken); } } /** * Parse expected keyword (or throw relevant error) * * @param Parser $parser the instance that requests parsing * @param Token $token token to be parsed * @param Array $expected_keywords array of possibly expected keywords at this point */ private static function parseExpectedKeyword($parser, $token, $expected_keywords) { if ($token->type === Token::TYPE_KEYWORD) { if (in_array($token->keyword, $expected_keywords)) { return $token->keyword; } else { $parser->error('Unexpected keyword', $token); } } else { $parser->error('Unexpected token.', $token); } return null; } } db/login/vendor/phpmyadmin/sql-parser/src/Context.php000064400000044750151502156020016730 0ustar00 1, '*' => 1, '+' => 1, '-' => 1, '/' => 1, // @see Token::FLAG_OPERATOR_LOGICAL '!' => 2, '!=' => 2, '&&' => 2, '<' => 2, '<=' => 2, '<=>' => 2, '<>' => 2, '=' => 2, '>' => 2, '>=' => 2, '||' => 2, // @see Token::FLAG_OPERATOR_BITWISE '&' => 4, '<<' => 4, '>>' => 4, '^' => 4, '|' => 4, '~' => 4, // @see Token::FLAG_OPERATOR_ASSIGNMENT ':=' => 8, // @see Token::FLAG_OPERATOR_SQL '(' => 16, ')' => 16, '.' => 16, ',' => 16, ';' => 16 ); /** * The mode of the MySQL server that will be used in lexing, parsing and * building the statements. * * @var int */ public static $MODE = 0; /* * Server SQL Modes * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html */ // Compatibility mode for Microsoft's SQL server. // This is the equivalent of ANSI_QUOTES. const SQL_MODE_COMPAT_MYSQL = 2; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_allow_invalid_dates const SQL_MODE_ALLOW_INVALID_DATES = 1; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ansi_quotes const SQL_MODE_ANSI_QUOTES = 2; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_error_for_division_by_zero const SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO = 4; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_high_not_precedence const SQL_MODE_HIGH_NOT_PRECEDENCE = 8; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ignore_space const SQL_MODE_IGNORE_SPACE = 16; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_create_user const SQL_MODE_NO_AUTO_CREATE_USER = 32; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_value_on_zero const SQL_MODE_NO_AUTO_VALUE_ON_ZERO = 64; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_backslash_escapes const SQL_MODE_NO_BACKSLASH_ESCAPES = 128; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create const SQL_MODE_NO_DIR_IN_CREATE = 256; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create const SQL_MODE_NO_ENGINE_SUBSTITUTION = 512; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_field_options const SQL_MODE_NO_FIELD_OPTIONS = 1024; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_key_options const SQL_MODE_NO_KEY_OPTIONS = 2048; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_table_options const SQL_MODE_NO_TABLE_OPTIONS = 4096; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_unsigned_subtraction const SQL_MODE_NO_UNSIGNED_SUBTRACTION = 8192; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_date const SQL_MODE_NO_ZERO_DATE = 16384; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_in_date const SQL_MODE_NO_ZERO_IN_DATE = 32768; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_only_full_group_by const SQL_MODE_ONLY_FULL_GROUP_BY = 65536; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_pipes_as_concat const SQL_MODE_PIPES_AS_CONCAT = 131072; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_real_as_float const SQL_MODE_REAL_AS_FLOAT = 262144; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_all_tables const SQL_MODE_STRICT_ALL_TABLES = 524288; // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_trans_tables const SQL_MODE_STRICT_TRANS_TABLES = 1048576; // Custom modes. // The table and column names and any other field that must be escaped will // not be. // Reserved keywords are being escaped regardless this mode is used or not. const SQL_MODE_NO_ENCLOSING_QUOTES = 1073741824; /* * Combination SQL Modes * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sql-mode-combo */ // REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE const SQL_MODE_ANSI = 393234; // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, const SQL_MODE_DB2 = 138258; // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER const SQL_MODE_MAXDB = 138290; // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS const SQL_MODE_MSSQL = 138258; // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER const SQL_MODE_ORACLE = 138290; // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS const SQL_MODE_POSTGRESQL = 138258; // STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, // ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER const SQL_MODE_TRADITIONAL = 1622052; // ------------------------------------------------------------------------- // Keyword. /** * Checks if the given string is a keyword. * * @param string $str string to be checked * @param bool $isReserved checks if the keyword is reserved * * @return int|null */ public static function isKeyword($str, $isReserved = false) { $str = strtoupper($str); if (isset(static::$KEYWORDS[$str])) { if ($isReserved && ! (static::$KEYWORDS[$str] & Token::FLAG_KEYWORD_RESERVED)) { return null; } return static::$KEYWORDS[$str]; } return null; } // ------------------------------------------------------------------------- // Operator. /** * Checks if the given string is an operator. * * @param string $str string to be checked * * @return int|null the appropriate flag for the operator */ public static function isOperator($str) { if (! isset(static::$OPERATORS[$str])) { return null; } return static::$OPERATORS[$str]; } // ------------------------------------------------------------------------- // Whitespace. /** * Checks if the given character is a whitespace. * * @param string $str string to be checked * * @return bool */ public static function isWhitespace($str) { return ($str === ' ') || ($str === "\r") || ($str === "\n") || ($str === "\t"); } // ------------------------------------------------------------------------- // Comment. /** * Checks if the given string is the beginning of a whitespace. * * @param string $str string to be checked * @param mixed $end * * @return int|null the appropriate flag for the comment type */ public static function isComment($str, $end = false) { $len = strlen($str); if ($len === 0) { return null; } // If comment is Bash style (#): if ($str[0] === '#') { return Token::FLAG_COMMENT_BASH; } // If comment is opening C style (/*), warning, it could be a MySQL command (/*!) if (($len > 1) && ($str[0] === '/') && ($str[1] === '*')) { return ($len > 2) && ($str[2] === '!') ? Token::FLAG_COMMENT_MYSQL_CMD : Token::FLAG_COMMENT_C; } // If comment is closing C style (*/), warning, it could conflicts with wildcard and a real opening C style. // It would looks like the following valid SQL statement: "SELECT */* comment */ FROM...". if (($len > 1) && ($str[0] === '*') && ($str[1] === '/')) { return Token::FLAG_COMMENT_C; } // If comment is SQL style (--\s?): if (($len > 2) && ($str[0] === '-') && ($str[1] === '-') && static::isWhitespace($str[2]) ) { return Token::FLAG_COMMENT_SQL; } if (($len === 2) && $end && ($str[0] === '-') && ($str[1] === '-')) { return Token::FLAG_COMMENT_SQL; } return null; } // ------------------------------------------------------------------------- // Bool. /** * Checks if the given string is a boolean value. * This actually check only for `TRUE` and `FALSE` because `1` or `0` are * actually numbers and are parsed by specific methods. * * @param string $str string to be checked * * @return bool */ public static function isBool($str) { $str = strtoupper($str); return ($str === 'TRUE') || ($str === 'FALSE'); } // ------------------------------------------------------------------------- // Number. /** * Checks if the given character can be a part of a number. * * @param string $str string to be checked * * @return bool */ public static function isNumber($str) { return (($str >= '0') && ($str <= '9')) || ($str === '.') || ($str === '-') || ($str === '+') || ($str === 'e') || ($str === 'E'); } // ------------------------------------------------------------------------- // Symbol. /** * Checks if the given character is the beginning of a symbol. A symbol * can be either a variable or a field name. * * @param string $str string to be checked * * @return int|null the appropriate flag for the symbol type */ public static function isSymbol($str) { if (strlen($str) === 0) { return null; } if ($str[0] === '@') { return Token::FLAG_SYMBOL_VARIABLE; } elseif ($str[0] === '`') { return Token::FLAG_SYMBOL_BACKTICK; } elseif ($str[0] === ':' || $str[0] === '?') { return Token::FLAG_SYMBOL_PARAMETER; } return null; } // ------------------------------------------------------------------------- // String. /** * Checks if the given character is the beginning of a string. * * @param string $str string to be checked * * @return int|null the appropriate flag for the string type */ public static function isString($str) { if (strlen($str) === 0) { return null; } if ($str[0] === '\'') { return Token::FLAG_STRING_SINGLE_QUOTES; } elseif ($str[0] === '"') { return Token::FLAG_STRING_DOUBLE_QUOTES; } return null; } // ------------------------------------------------------------------------- // Delimiter. /** * Checks if the given character can be a separator for two lexeme. * * @param string $str string to be checked * * @return bool */ public static function isSeparator($str) { // NOTES: Only non alphanumeric ASCII characters may be separators. // `~` is the last printable ASCII character. return ($str <= '~') && ($str !== '_') && ($str !== '$') && (($str < '0') || ($str > '9')) && (($str < 'a') || ($str > 'z')) && (($str < 'A') || ($str > 'Z')); } /** * Loads the specified context. * * Contexts may be used by accessing the context directly. * * @param string $context name of the context or full class name that * defines the context * * @throws LoaderException if the specified context doesn't exist */ public static function load($context = '') { if (empty($context)) { $context = self::$defaultContext; } if ($context[0] !== '\\') { // Short context name (must be formatted into class name). $context = self::$contextPrefix . $context; } if (! class_exists($context)) { throw @new LoaderException( 'Specified context ("' . $context . '") does not exist.', $context ); } self::$loadedContext = $context; self::$KEYWORDS = $context::$KEYWORDS; } /** * Loads the context with the closest version to the one specified. * * The closest context is found by replacing last digits with zero until one * is loaded successfully. * * @see Context::load() * * @param string $context name of the context or full class name that * defines the context * * @return string|null The loaded context. `null` if no context was loaded. */ public static function loadClosest($context = '') { $length = strlen($context); for ($i = $length; $i > 0;) { try { /* Trying to load the new context */ static::load($context); return $context; } catch (LoaderException $e) { /* Replace last two non zero digits by zeroes */ do { $i -= 2; $part = substr($context, $i, 2); /* No more numeric parts to strip */ if (! is_numeric($part)) { break 2; } } while (intval($part) === 0 && $i > 0); $context = substr($context, 0, $i) . '00' . substr($context, $i + 2); } } /* Fallback to loading at least matching engine */ if (strncmp($context, 'MariaDb', 7) === 0) { return static::loadClosest('MariaDb100300'); } elseif (strncmp($context, 'MySql', 5) === 0) { return static::loadClosest('MySql50700'); } return null; } /** * Sets the SQL mode. * * @param string $mode The list of modes. If empty, the mode is reset. */ public static function setMode($mode = '') { static::$MODE = 0; if (empty($mode)) { return; } $mode = explode(',', $mode); foreach ($mode as $m) { static::$MODE |= constant('static::SQL_MODE_' . $m); } } /** * Escapes the symbol by adding surrounding backticks. * * @param array|string $str the string to be escaped * @param string $quote quote to be used when escaping * * @return string|array */ public static function escape($str, $quote = '`') { if (is_array($str)) { foreach ($str as $key => $value) { $str[$key] = static::escape($value); } return $str; } if ((static::$MODE & self::SQL_MODE_NO_ENCLOSING_QUOTES) && (! static::isKeyword($str, true)) ) { return $str; } if (static::$MODE & self::SQL_MODE_ANSI_QUOTES) { $quote = '"'; } return $quote . str_replace($quote, $quote . $quote, $str) . $quote; } /** * Returns char used to quote identifiers based on currently set SQL Mode (ie. standard or ANSI_QUOTES) * @return string either " (double quote, ansi_quotes mode) or ` (backtick, standard mode) */ public static function getIdentifierQuote() { return self::hasMode(self::SQL_MODE_ANSI_QUOTES) ? '"' : '`'; } /** * Function verifies that given SQL Mode constant is currently set * * @return boolean false on empty param, true/false on given constant/int value * @param int $flag for example Context::SQL_MODE_ANSI_QUOTES */ public static function hasMode($flag = null) { if (empty($flag)) { return false; } return (self::$MODE & $flag) === $flag; } } // Initializing the default context. Context::load(); db/login/vendor/phpmyadmin/sql-parser/src/UtfString.php000064400000011437151502156020017225 0ustar00str = $str; $this->byteIdx = 0; $this->charIdx = 0; $this->byteLen = mb_strlen($str, '8bit'); if (! mb_check_encoding($str, 'UTF-8')) { $this->charLen = 0; } else { $this->charLen = mb_strlen($str, 'UTF-8'); } } /** * Checks if the given offset exists. * * @param int $offset the offset to be checked * * @return bool */ public function offsetExists($offset) { return ($offset >= 0) && ($offset < $this->charLen); } /** * Gets the character at given offset. * * @param int $offset the offset to be returned * * @return string|null */ public function offsetGet($offset) { if (($offset < 0) || ($offset >= $this->charLen)) { return null; } $delta = $offset - $this->charIdx; if ($delta > 0) { // Fast forwarding. while ($delta-- > 0) { $this->byteIdx += static::getCharLength($this->str[$this->byteIdx]); ++$this->charIdx; } } elseif ($delta < 0) { // Rewinding. while ($delta++ < 0) { do { $byte = ord($this->str[--$this->byteIdx]); } while (($byte >= 128) && ($byte < 192)); --$this->charIdx; } } $bytesCount = static::getCharLength($this->str[$this->byteIdx]); $ret = ''; for ($i = 0; $bytesCount-- > 0; ++$i) { $ret .= $this->str[$this->byteIdx + $i]; } return $ret; } /** * Sets the value of a character. * * @param int $offset the offset to be set * @param string $value the value to be set * * @throws \Exception not implemented */ public function offsetSet($offset, $value) { throw new \Exception('Not implemented.'); } /** * Unsets an index. * * @param int $offset the value to be unset * * @throws \Exception not implemented */ public function offsetUnset($offset) { throw new \Exception('Not implemented.'); } /** * Gets the length of an UTF-8 character. * * According to RFC 3629, a UTF-8 character can have at most 4 bytes. * However, this implementation supports UTF-8 characters containing up to 6 * bytes. * * @param string $byte the byte to be analyzed * * @see https://tools.ietf.org/html/rfc3629 * * @return int */ public static function getCharLength($byte) { $byte = ord($byte); if ($byte < 128) { return 1; } elseif ($byte < 224) { return 2; } elseif ($byte < 240) { return 3; } elseif ($byte < 248) { return 4; } elseif ($byte < 252) { return 5; // unofficial } return 6; // unofficial } /** * Returns the length in characters of the string. * * @return int */ public function length() { return $this->charLen; } /** * Returns the contained string. * * @return string */ public function __toString() { return $this->str; } } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php000064400000037363151502156020022114 0ustar00 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'LAST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'PHASE' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'RELOAD' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INVOKER' => 1, 'MIGRATE' => 1, 'PARTIAL' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PROFILES' => 1, 'ROLLBACK' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'PACK_KEYS' => 1, 'RAID_TYPE' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'VARIABLES' => 1, 'BERKELEYDB' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'DES_KEY_FILE' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'USER_RESOURCES' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'MASTER_SERVER_ID' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SONAME' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'SUBSTRING' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php000064400000053756151502156020022127 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'REPLICATE_IGNORE_DB' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, 'REPLICATE_IGNORE_TABLE' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'REPLICATE_WILD_IGNORE_TABLE' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, 'ST_MULTIPOINTFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php000064400000043221151502156020022107 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, 'CONSTRAINT_CATALOG' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'SUBSTRING' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'MULTIPOINTFROMTEXT' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php000064400000054125151502156020022420 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SEQUENCE' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'REPLICATE_IGNORE_DB' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, 'REPLICATE_IGNORE_TABLE' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'REPLICATE_WILD_IGNORE_TABLE' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'EXCEPT' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'INTERSECT' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, 'ST_MULTIPOINTFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php000064400000043242151502156020022413 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, 'CONSTRAINT_CATALOG' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'SUBSTRING' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'MULTIPOINTFROMTEXT' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php000064400000054021151502156020022412 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'REPLICATE_IGNORE_DB' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, 'REPLICATE_IGNORE_TABLE' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'REPLICATE_WILD_IGNORE_TABLE' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, 'ST_MULTIPOINTFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php000064400000042553151502156020022112 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'GOTO' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LABEL' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAXVALUE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'RAID_TYPE' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SCHEDULER' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'BERKELEYDB' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, 'REORGANISE' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'PAGE_CHECKSUM' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'TRANSACTIONAL' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'DECOD' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'SUBSTRING' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'MULTIPOINTFROMTEXT' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php000064400000050302151502156020022106 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'ANALYSE' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_ISEMPTY' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'CREATE_DIGEST' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'ASYMMETRIC_SIGN' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, 'ASYMMETRIC_DERIVE' => 33, 'ASYMMETRIC_VERIFY' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'ST_POLYGONFROMWKB' => 33, 'ASYMMETRIC_DECRYPT' => 33, 'ASYMMETRIC_ENCRYPT' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_POLYGONFROMTEXT' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'CREATE_DH_PARAMETERS' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'CREATE_ASYMMETRIC_PUB_KEY' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'CREATE_ASYMMETRIC_PRIV_KEY' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, 'SQL_THREAD_WAIT_AFTER_GTIDS' => 33, 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php000064400000053777151502156020022432 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'REPLICATE_IGNORE_DB' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, 'REPLICATE_IGNORE_TABLE' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'REPLICATE_WILD_IGNORE_TABLE' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, 'ST_MULTIPOINTFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php000064400000054150151502156020022110 0ustar00 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PERSIST' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'PERSIST_ONLY' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'REPLICATE_IGNORE_DB' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, 'REPLICATE_IGNORE_TABLE' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, 'REPLICATE_WILD_IGNORE_TABLE' => 1, 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, 'UNION ALL' => 7, 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, 'NATURAL LEFT OUTER JOIN' => 7, 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, 'BIT' => 9, 'XML' => 9, 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'SERIAL' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, 'MULTILINEPOINT' => 9, 'MULTILINEPOLYGON' => 9, 'INT' => 11, 'SET' => 11, 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, 'BINARY VARYING' => 15, 'KEY' => 19, 'INDEX' => 19, 'UNIQUE' => 19, 'SPATIAL' => 19, 'FULLTEXT' => 19, 'INDEX KEY' => 23, 'UNIQUE KEY' => 23, 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, 'SPATIAL INDEX' => 23, 'FULLTEXT INDEX' => 23, 'X' => 33, 'Y' => 33, 'LN' => 33, 'PI' => 33, 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'IS_UUID' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'BIN_TO_UUID' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'UUID_TO_BIN' => 33, 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, 'ST_MULTIPOINTFROMTEXT' => 33, 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, 'IF' => 35, 'IN' => 35, 'MOD' => 35, 'LEFT' => 35, 'MATCH' => 35, 'RIGHT' => 35, 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, 'LOCALTIME' => 35, 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, 'UTC_TIMESTAMP' => 35, 'LOCALTIMESTAMP' => 35, 'CURRENT_TIMESTAMP' => 35, 'NOT IN' => 39, 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, 'POINT' => 41, 'POLYGON' => 41, 'TIMESTAMP' => 41, 'LINESTRING' => 41, 'MULTILINESTRING' => 41, 'GEOMETRYCOLLECTION' => 41, 'CHAR' => 43, 'BINARY' => 43, 'INTERVAL' => 43, ); } db/login/vendor/phpmyadmin/sql-parser/src/TokensList.php000064400000010653151502156020017376 0ustar00tokens = $tokens; if ($count === -1) { $this->count = count($tokens); } } } /** * Builds an array of tokens by merging their raw value. * * @param string|Token[]|TokensList $list the tokens to be built * * @return string */ public static function build($list) { if (is_string($list)) { return $list; } if ($list instanceof self) { $list = $list->tokens; } $ret = ''; if (is_array($list)) { foreach ($list as $tok) { $ret .= $tok->token; } } return $ret; } /** * Adds a new token. * * @param Token $token token to be added in list */ public function add(Token $token) { $this->tokens[$this->count++] = $token; } /** * Gets the next token. Skips any irrelevant token (whitespaces and * comments). * * @return Token|null */ public function getNext() { for (; $this->idx < $this->count; ++$this->idx) { if (($this->tokens[$this->idx]->type !== Token::TYPE_WHITESPACE) && ($this->tokens[$this->idx]->type !== Token::TYPE_COMMENT) ) { return $this->tokens[$this->idx++]; } } return null; } /** * Gets the next token. * * @param int $type the type * * @return Token|null */ public function getNextOfType($type) { for (; $this->idx < $this->count; ++$this->idx) { if ($this->tokens[$this->idx]->type === $type) { return $this->tokens[$this->idx++]; } } return null; } /** * Gets the next token. * * @param int $type the type of the token * @param string $value the value of the token * * @return Token|null */ public function getNextOfTypeAndValue($type, $value) { for (; $this->idx < $this->count; ++$this->idx) { if (($this->tokens[$this->idx]->type === $type) && ($this->tokens[$this->idx]->value === $value) ) { return $this->tokens[$this->idx++]; } } return null; } /** * Sets an value inside the container. * * @param int $offset the offset to be set * @param Token $value the token to be saved */ public function offsetSet($offset, $value) { if ($offset === null) { $this->tokens[$this->count++] = $value; } else { $this->tokens[$offset] = $value; } } /** * Gets a value from the container. * * @param int $offset the offset to be returned * * @return Token */ public function offsetGet($offset) { return $offset < $this->count ? $this->tokens[$offset] : null; } /** * Checks if an offset was previously set. * * @param int $offset the offset to be checked * * @return bool */ public function offsetExists($offset) { return $offset < $this->count; } /** * Unsets the value of an offset. * * @param int $offset the offset to be unset */ public function offsetUnset($offset) { unset($this->tokens[$offset]); --$this->count; for ($i = $offset; $i < $this->count; ++$i) { $this->tokens[$i] = $this->tokens[$i + 1]; } unset($this->tokens[$this->count]); } } db/login/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.mo000064400000001376151502156020022002 0ustar004L`avMhGNot implemented yet.Unexpected keyword.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-07-21 09:33+0000 Last-Translator: Murshid Ahmed Language-Team: Tamil Language: ta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.16-dev இன்னும் அமுலாக்கப்படவில்லை.எதிர்பாராத சிறப்புச்சொல்.db/login/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.mo000064400000003505151502156020022003 0ustar00 h*i''<"d!@'D#b(+74-H$v&'*/    %1$d values were expected, but found %2$d.A symbol name was expected!An expression was expected.An offset was expected.Keyword "TO" was expected.Not implemented yet.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unrecognized alter operation.Unrecognized data type.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2016-12-25 22:02+0000 Last-Translator: SD SkyKlouD Language-Team: Korean Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 2.11-dev 값 %1$d 이 예상되었지만, %2$d 가 발견되었습니다.심볼 이름이 예상되었습니다!식이 예상되었습니다.오프셋이 예상되었습니다.키워드 "TO"가 예상되었습니다.아직 구현되지 않은 기능입니다.테이블의 새로운 이름이 예상되었습니다.테이블의 이전 이름이 예상되었습니다.이 옵션은 "%1$s"와(과) 충돌합니다.예상되지 않은 점(.)입니다.예상되지 않은 CASE 문의 종료예상되지 않은 키워드입니다.인식되지 않은 ALTER 작업입니다.인식할 수 없는 데이터 형식입니다.db/login/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.mo000064400000010275151502156020022004 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   (   " F Q j  ! 0 G X 6f  ' !  &7Pj,z/=4*r"3Oe{ )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-06 19:45+0000 Last-Translator: Kristjan Räts Language-Team: Estonian Language: et MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17-dev Oodati %1$d väärtust, kuid leiti %2$d.Oodati võtmesõna "RETURNS".Oodati lõpetavat sulgu.Oodati koma või lõpetavat sulgu.Leiti uus lause, kuid selle ja talle järgneva vahelt puudub eraldaja.Oodati ümbernimetamist.Oodati sümboli nime!Oodati sümboli nime! Reserveeritud võtmesõna saab kasutada veeru nimena ainult siis, kui ta on ühekordsete tagurpidi jutumärkide vahel.Oodati tabeli nime.Oodati aliast.Eelnevalt leiti alias.Oodati avaldist.Oodati nihet.Oodati avanevat sulgu, millele järgnevad väärtused.Oodati avanevat sulgu.Oodati vähemalt ühe veeru kirjeldust.Oodati lõpetavat sümbolit %1$s.Oodati eraldajat.Oodati eraldajale eelnevat tühemikku.Oodati võtmesõna "TO".Võtmesõna lause lõpus.Avaldis puudub.Transaktsiooni ei olnud eelnevalt alustatud.Hetkel veel rakendamata.Oodati olemi nime.Oodati tabeli uut nime.Oodati tabeli vana nime.See säte põhjustab konflikti sättega "%1$s".Sellist tüüpi klausel ei ole mitme tabeli päringus kehtiv.Sellist tüüpi klausel parsiti eelnevalt.Ootamatu lause algus.Ootamatu sümbol.Ootamatu punkt.Ootamatu CASE lause lõppOotamatu võtmesõna.Ootamatu lausete järjestus.Ootamatud märk.Tundmatu ALTER operatsioon.Tundmatu andmetüüp.Tundmatu võtmesõna.Tundmatut tüüpi lause.Oodati muutuja nime.viga #1otsene vigadb/login/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.mo000064400000001160151502156020023141 0ustar00$,869Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:24+0200 Last-Translator: Michal Čihař Language-Team: Serbian (latin) Language: sr@latin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.mo000064400000011673151502156020021771 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   Eb 2 ' 3 {7 $ % ' ' 3 ,'HHp*90'O6w-BB8{<0-;6Hr-6 9U!u"$*0H!y )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Japanese (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-22 17:18+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.5-dev 値 %1$d があるべきですが、 %2$d が見つかりました。キーワード "RETURNS" があるべきです。閉じる括弧があるべきです。カンマか閉じる括弧があるべきです。新しいステートメントが見つかりましたが、それとその前の間に区切り文字がありません。リネーム操作が必要です。シンボル名があるべきです!シンボル名が予期されていました。 カラム名は予約語を利用するときに、バッククォートでエスケープする必要があります。テーブル名があるべきです。エイリアスがあるべきです。エイリアスが前に見つかっています。式があるべきです。オフセットがあるべきです。左括弧とそれに続く一連の値が予期されていました。左括弧が予期されていました。少なくとも 1 つのカラム定義が必要です。終端クォート %1$s があるべきです。区切り文字があるべきです。空白が区切り文字の前にあるべきです。キーワード "TO" があるべきです。ステートメントの末尾にキーワードがあります。式がありません。開始されているトランザクションはありません。実装されていません。エンティティの名前が予想されていました。テーブルの新しい名前が必要です。テーブルの古い名前が必要です。このオプションは "%1$s" と競合しています。この句の種類は、複数テーブルクエリでは無効です。この句種類は既に処理しました。ステートメントの開始があるべきです。予期しない文字。予期しないドット。予期しないCASE式の終了予期しないキーワード。予期しない節の順序。予期しないトークン。認識できない alter 操作。認識できないデータ形式。認識できないキーワードです。認識されないステートメント形式。変数名があるべきです。エラー #1厳格なエラーdb/login/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.mo000064400000001044151502156020022172 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2014-12-23 23:39+0200 Last-Translator: Robin van der Vliet Language-Team: West Flemish Language: vls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.2-dev db/login/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.mo000064400000001021151502156020022154 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-09-04 09:33+0200 Last-Translator: Michal Čihař Language-Team: Bodo Language: brx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Weblate 2.4-dev db/login/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.mo000064400000001133151502156020021776 0ustar00$,8!9Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:24+0200 Last-Translator: Michal Čihař Language-Team: Croatian Language: hr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.mo000064400000001154151502156020021777 0ustar00,<PQZVerror #1Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-12 15:08+0000 Last-Translator: ប៉ុកណូ រ៉ូយ៉ាល់ Language-Team: Central Khmer Language: km MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 2.16 កំហុស​ #1db/login/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.mo000064400000010620151502156020022011 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   *h #  . c i  s  2 +Q }  <  ' 4T0l 1%D]!zL. 5Vk$}# )B\ v)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Albanian (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-03-20 01:34+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Albanian Language: sq MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.20-dev Vlerat %1$d u pritën, por u gjetën %2$d.Pritej një fjalë kyçe "RETURNS".Pritej një kllapë mbyllëse.Pritej një presje ose një kllapë mbyllëse.Një deklaratë e re është gjetur, por nuk ka delimiter ndërmjet asaj dhe tjetrës më përpara.Pritej një veprim riemërimi.Pritej emri i një simboli!Pritej një emër simboli! Një fjalë kyçe e rezervuar nuk mund të përdoret si një emër kolone pa backquotes.Pritej një emër tabele.Pritej një alias (pseudonim).Një pseudonim është gjetur më përpara.Pritej një shprehje.Pritej një rezultat (offset).Pritej një kllapë e hapur, e ndjekur nga një set vlerash.Pritej një kllapë e hapur.Pritej së paku një përcaktim kolone.Pritej thonjëza e fundit %1$s.Delimitues i pritshëm.Pritej hapësirë(a) e bardhë para delimiterit.Pritej fjala kyçe "TO" (për).Fillim i papritur i deklaratës.Shprehje që mungon.Deri më tani nuk ka filluar ndonjë transaksion.Nuk është implementuar ende.Pritej emri i entitetit.Pritej emri i ri i tabelës.Pritej emri i vjetër i tabelës.Ky opsion ndeshet me "%1$s".Ky lloj i klauzolës nuk është i vlefshëm në pyetjet me shumë tavolina.Ky tip i klauzolës është parsuar më parë.Fillim i papritur i deklaratës.Karakter i papritur.Pikë e papritur.Fund i papritur i shprehjes së CASEFjalë kyçe e papritur.Urdhërimi i papritur i klauzolave.Shenjë e papritur.Veprim alter i panjohur.Tip të dhënash i panjohur.Fjalë kyçe e panjohur.Tip deklarate i panjohur.Pritej emri i ndryshores.gabim # 1gabim i rreptëdb/login/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.mo000064400000010737151502156020022015 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   < +  %4 VZ %  p d     B "+.N(}!5& %F!Xz!"6%Hn!.Kh#  )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-11-09 23:58+0000 Last-Translator: Domen Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3; X-Generator: Weblate 2.18-dev Pričakovali smo %1$d vrednosti, vendar smo jih našli %2$d.Pričakovali smo ključno besedo "RETURNS".Pričakovali smo zaklepaj.Pričakovali smo vejico ali zaklepaj.Naleteli smo na nov stavek, vendar med njim in prejšnjim stavkom ni ločilnega znaka.Pričakovali smo poseg preimenovanja.Pričakovali smo ime znaka!Pričakovali smo ime simbola! Rezervirane besede ne morete uporabiti kot ime stolpca brez ustreznih narekovajev.Pričakovali smo ime tabele.Pričakovali smo vzdevek.Vzdevek smo našli že prej.Pričakovali smo izraz.Pričakovali smo odmik.Pričakovali smo začetni oklepaj, ki mu sledi množica vrednosti.Pričakovali smo začetni oklepaj.Pričakovali smo vsaj eno opredelitev stolpca.Pričakovali smo končni narekovaj %1$s.Pričakovali smo ločitveni znak.Pred ločitvenim znakom smo pričakoval prazne znake.Pričakovali smo ključno besedo "TO".Ključna beseda na koncu stavka.Manjkajoč izraz.Začeli niste nobene transakcije.Ni še implementirano.Pričakovali smo ime entitete.Pričakovali smo novo ime tabele.Pričakovali smo staro ime tabele.Izbira je v sporu z "%1$s".Ta vrsta stavka ni veljavna v večtabelnih poizvedbah.To vrsto stavka smo prej razčlenili.Nepričakovan začetek stavka.Nepričakovan znak.Nepričakovana pika.Nepričakovan konec izraza CASENepričakovana ključna beseda.Nepričakovan vrstni red stavkov.Nepričakovan žeton.Neprepoznan poseg spremembe.Neprepoznana vrsta podatkov.Nepričakovana ključna beseda.Neprepoznana vrsta stavka.Pričakovali smo ime spremenljivke.napaka #1stroga napakadb/login/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.mo000064400000000771151502156020021762 0ustar00$,89Project-Id-Version: Persian (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2019-03-25 20:40+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Persian Language: fa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.6-dev db/login/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.mo000064400000010526151502156020022345 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   * !  * L, y  b  4 K j  < , )I(]&$'3'["8*" -C!Su$@ I)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-10-26 23:49+0000 Last-Translator: Bo Anderson Language-Team: English (United Kingdom) Language: en_GB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17 %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword cannot be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognised alter operation.Unrecognised data type.Unrecognised keyword.Unrecognised statement type.Variable name was expected.error #1strict errordb/login/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.mo000064400000001111151502156020021774 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:04+0200 Last-Translator: Michal Čihař Language-Team: Welsh Language: cy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=6; plural=(n==0) ? 0 : (n==1) ? 1 : (n==2) ? 2 : (n==3) ? 3 :(n==6) ? 4 : 5; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.mo000064400000011204151502156020022005 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   5 , * :% i` * q     G*_3,5 A*a0!& (03YG.%*@%Sy#& ) I jt)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Romanian (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-07-24 07:41+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Romanian Language: ro MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2; X-Generator: Weblate 3.1-dev Au fost așteptate %1$d valori, dar s-au găsit %2$d.Un cuvânt cheie "RETURNS" era de aşteptat.Era așteptată o paranteza de închidere.Era așteptată o virgulă sau o paranteză de închidere.A fost găsită o nouă activitate, dar nu există niciun delimitator între aceasta și cea anterioară.Era așteptată o operație de redenumire.Era așteptat un nume de simbol!Era așteptat nume de simbol! Un cuvânt cheie rezervat nu poate fi folosit ca nume de coloană fără ghilimele.Era așteptat un nume de tabel.Era așteptat un alias.A fost găsit anterior un alias.Era așteptată o expresie.Era așteptat un decalaj.Era așteptată o paranteză de deschidere urmată de un set de valori.Era așteptată o paranteza de deschidere.Era așteptată cel puțin o definiție a coloanei.Erau așteptate ghilimele la sfârșit %1$s.A fost așteptat delimitatorul.S-au așteptat spații goale înainte de delimitator.Cuvantul cheie "TO" este cerut.Cuvânt cheie la sfârșitul declarației.Lipsește expresia.Nu a fost începută anterior nicio tranzacție.Neimplementat încă.Era așteptat numele entității.Era așteptat numele nou al tabelului.Era așteptat numele vechi al tabelului.Aceasta opțiune intră în conflict cu „%1$s”.Acest tip de clauză nu este valid în interogările mai multor tabele.Acest tip de clauză a fost analizat anterior.Început neașteptat al declarației.Caracter neașteptat.Punct neașteptat.Sirsit neasteptat al expresiei "CASE"Cuvinte cheie neașteptate.Ordonare neașteptată a clauzelor.Token neașteptat.Activitate de modificare necunoscută.Tip de date nerecunoscut.Cuvânt cheie nerecunoscut.Tip de activitate nerecunoscut.Era așteptat numele variabilei.eroare #1eroare strictădb/login/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.mo000064400000013322151502156020021770 0ustar00,|;*!*6La cOj< ,2_(&$''L't"8*"#F\!l  = Y b o Ee > 5 M n J 1M  -^+>+5#yY8Q <^,`5)&_O)?@@FHY83&)ZC2B->Dl@6<)5f%,*!  )'$ +%"& #( %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-01-24 07:02+0000 Last-Translator: Παναγιώτης Παπάζογλου Language-Team: Greek Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.11-dev Αναμενόταν %1$d τιμές, αλλά βρέθηκαν %2$d.Αναμενόταν μια λέξη-κλειδί «RETURNS».Αναμενόταν κλείσιμο αγκύλης.Αναμενόταν ένα κόμμα ή μια κλειστή αγκύλη.Βρέθηκε μια νέα δήλωση, αλλά χωρίς διαχωριστικό μεταξύ της και της προηγούμενης.Αναμενόταν μια λειτουργία μετονομασίας.Αναμενόταν όνομα συμβόλου!Αναμενόταν ένα όνομα συμβόλου! Μια δεσμευμένη λέξη-κλειδί δεν μπορεί να χρησιμοποιηθεί ως όνομα στήλης χωρίς εισαγωγικά.Αναμενόταν όνομα πίνακα.Αναμενόταν μια ετικέτα.Βρέθηκε μια ετικέτα προηγουμένως.Αναμενόταν μια έκφραση.Αναμενόταν μια αντιστάθμιση.Αναμενόταν μια ανοιχτή αγκύλη ακολουθούμενη από ένα σύνολο τιμών.Αναμενόταν μια ανοιχτή αγκύλη.Αναμενόταν τουλάχιστον ένας ορισμός πεδίου.Αναμενόταν τελικό εισαγωγικό %1$s.Αναμενόταν διαχωριστής.Αναμενόταν λευκό(ά) διάστημα(τα) πριν τον διαχωριστή.Αναμενόταν η λέξη-κλειδί «TO».Απολεσθείσα έκφραση.Καμιά συναλλαγή δεν ξεκίνησε προηγουμένως.Δεν εφαρμόστηκε ακόμα.Αναμενόταν το όνομα της οντότητας.Αναμενόταν το νέο όνομα του πίνακα.Αναμενόταν το παλαιό όνομα του πίνακα.Αυτή η επιλογή έχει διαίνεξη με το «%1$s».Αυτός ο τύπος ρύτρας δεν είναι έγκυρος σε ερωτήματα πολλαπλών πινάκων.Αυτός ο τύπος ρύτρας έχει αναλυθεί προηγουμένως.Μη αναμενόμενη έναρξη δήλωσης.Μη αναμενόμενος χαρακτήρας.Μη αναμενόμενη τελεία.Μη αναμενόμενο τέλος της έκφρασης CASEΜη αναμενόμενη λέξη-κλειδί.Μη αναμενόμενη ταξινόμηση δηλώσεων.Μη αναμενόμενο τεκμήριο.Μη αναγνωρισμένη λειτουργία αλλαγής.Μη αναγνωρισμένος τύπος δεδομένων.Μη αναγνωρισμένη λέξη κλειδί.Μη αναγνωρισμένος τύπος δήλωσης.Αναμενόταν όνομα μεταβλητής.σφάλμα #1περιορισμένο σφάλμαdb/login/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.mo000064400000010747151502156020022025 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   , ' * < OA (  Y q    C )"&L/s/"  1'>f{%>0> o.$)'@h )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-21 11:22+0000 Last-Translator: Burak Yavuz Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 2.17-dev %1$d değer beklenmekte, ancak %2$d bulundu."RETURNS" anahtar kelimesi beklenmekte.Kapalı bir köşeli parantez beklenmekte.Bir virgül ya da kapalı bir köşeli parantez beklenmekte.Yeni bir ifade bulundu, ancak bu ve önceki arasında hiç sınırlayıcı yok.Yeniden adlandırma işlemi beklenmekte.Bir sembol adı beklenmekte!Bir sembol adı beklenmekte! Ayrılmış bir anahtar kelime ters eğik tırnakları olmadan bir sütun adı olarak kullanılamaz.Tablo adı beklenmekte.Bir kodadı beklenmekte.Bir kodadı daha önce bulundu.Bir ifade beklenmekte.Bir karşılık beklenmekte.Açık bir köşeli parantez ardından bir grup değer beklenmekte.Açık bir köşeli parantez beklenmekte.En az bir sütun tanımı beklenmekte.Sonlandırma tırnak işareti %1$s beklenmekte.Beklenen sınırlayıcı.Sınırlayıcıdan önce beklenen boşluk(lar)."TO" anahtar kelimesi beklenmekte.İfade sonundaki anahtar kelime.Eksik ifade.Daha önce hiç işlem başlatılmadı.Henüz uygulanmadı.Varlığın adı beklenmekte.Tablonun yeni adı beklenmekte.Tablonun eski adı beklenmekte.Bu seçenek "%1$s" ile çakışıyor.Bu tür yan tümce Çoklu tablo sorgularında geçerli değil.Bu tür yan tümce daha önce ayrıştırıldı.Beklenmedik ifade başlangıcı.Beklenmedik karakter.Beklenmedik nokta.Beklenmedik Büyük/Küçük harf ifadesi sonuBeklenmedik anahtar kelime.Beklenmedik yan tümce sıralaması.Beklenmedik belirteç.Kategorilenmemiş değiştirme işlemi.Tanınmayan veri türü.Tanınmayan anahtar kelime.Tanınmayan ifade türü.Değişken adı beklenmekte.hata #1kesin hatadb/login/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.mo000064400000012717151502156020021765 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r  2 E 9 5W G ?] + +"83TP5O8+,dJ3A RFs%-68E;~jJ%7p -//Fv7+77-+e+)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-22 09:47+0000 Last-Translator: Viktar Vauchkevich Language-Team: Belarusian Language: be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.17-dev Чакалася %1$d значэнняў, а знойдзена %2$d.Чакалася ключавое слова «RETURNS».Чакалася закрывальная дужка.Чакалася коска або закрывальная дужка.Знойдзена новае сцвярджэнне, але між ім і папярэднім няма раздзяляльніка.Чакалася аперацыя перайменавання.Чакалася назва сімвала!Чакалася назва сімвала! Зарэзерваваныя ключавыя словы нельга выкарыстоўваць як назву слупка без двукоссяў.Чакалася назва табліцы.Чакаўся псеўданім.Псеўданім быў знайдзены раней.Чакаўся выраз.Чакаўся соступ.Чакаліся адкрывальная дужка і спіс значэнняў.Чакалася адкрывальная дужка.Чакалася азначэнне прынамсі аднаго слупка.Чакалася канцавое двукоссе %1$s.Чакаецца раздзяляльнік.Чакаўся прагал(ы) перад раздзяляльнікам.Чакалаcя ключавое слова «TO».Ключавое слова ў канцы сцвярджэння.Адсутнічае выраз.Няма папярэдне запушчанай транзакцыі.Яшчэ не рэалізавана.Чакалася назва сутнасці.Чакалася новая назва табліцы.Чакалася старая назва табліцы.Гэты параметр канфліктуе з «%1$s».Гэты тып выразу не правільны для мультытаблічных запытаў.Гэты тып выразу быў папярэдне разабраны.Нечаканы пачатак сцвярджэння.Нечаканы сімвал.Нечаканая кропка.Нечаканы канец CASE-выразуНечаканае ключавое слова.Нечаканы парадак выразаў.Нечаканы знак.Нераспазнаная аперацыя змены.Нераспазнаны тып даных.Нераспазнанае ключавое слова.Нераспазнаны тып сцвярджэння.Чакалася назва зменнай.памылка #1недапушчальная памылкаdb/login/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.mo000064400000011106151502156020021775 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   ?b ) ' 6 e+ , # c  *   G'K6s!B$.!Su7#*(,.U22$.S!g"  -7)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: French (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-12-23 06:01+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.4-dev %1$d valeurs étaient attendues, mais %2$d ont été trouvées.Le mot clé « RETURNS » était attendu.Une parenthèse droite était attendue.Une virgule ou une parenthèse droite était attendus.Un nouvel énoncé a été trouvé, mais il n'y a aucun délimiteur entre celui-ci et le précédent.Une opération de renommage était attendue.Un nom de variable était attendu !Un nom de symbole était attendu ! Un mot clé réservé ne peut pas servir comme nom de colonne sans les apostrophes inverses.Un nom de table était attendu.Un alias était attendu.Un alias a été constaté précédemment.Une expression était attendue.Un décalage était prévu.Une parenthèse gauche suivie d'un ensemble de valeurs était attendus.Une parenthèse gauche était attendue.La définition d'au moins une colonne était attendue.Un guillemet %1$s était attendu.Un délimiteur était attendu.Des espaces ou tabulations étaient attendus avant le délimiteur.Le mot clé « TO » était attendu.Mot clé à la fin de l'énoncé.Expression manquante.Aucune transaction n'a été précédemment démarrée.Pas encore mis en œuvre.Le nom de l'entité était attendu.Le nouveau nom de la table était attendu.L'ancien nom de la table était attendu.Cette option entre en conflit avec « %1$s ».Ce type de clause a été analysé précédemment.Ce type de clause a été analysé précédemment.Début d'énoncé inattendu.Caractère inattendu.Point inattendu.Fin inattendue d'une expression CASEMot clef inattendu.Classement inattendu des clauses.Jeton inattendu.Opération ALTER non reconnue.Type de données non reconnu.Mot clé non reconnu.Type d'énoncé non reconnu.Un nom de variable était attendu.erreur #1erreur strictedb/login/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.mo000064400000011000151502156020022002 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   8h ) ' 7 S+ # ! o #5 Y $p   G %28#k6 '%/:j #%">1T#!%4+Fr" )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Portuguese (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-10-08 23:33+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Portuguese Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.2.1 Eram esperados %1$d valores, mas foram encontrados %2$d.Uma palavra-chave "RETURNS" era esperada.Um colchete ou parenteses era esperado.Uma vírgula ou um colchete de fechamento era esperado.Uma nova instrução foi encontrada, mas nenhum delimitador entre ela e a anterior.Uma operação rename era esperada.Um nome do símbolo era esperado!Um nome de símbolo era esperado! Uma chave reservada não pode ser usada como um nome de coluna sem as chaves.Um nome para a tabela era esperado.Um alias era esperado.Um alias foi previamente encontrado.Uma expressão era esperada.Um offset era esperado.Uma abertura de chaveta seguida de um conjunto de valores era esperada.Uma abertura de chaveta era esperada.Pelo menos uma definição de coluna era esperada.Citação final %1$s1 era esperada.Delimitador esperado.Espaço(s) em Branco(s) esperado antes do delimitador.Palavra-chave "TO" era esperada.Palavra-chave no final da declaração.Faltando expressão.Nenhuma transação foi iniciada anteriormente.Ainda não foi implementado.O nome da entidade era esperado.O novo nome da tabela era esperado.O nome antigo da tabela era esperado.Essa opção conflita com "%1$s1".Esse tipo de clausula não é válida em queries Multi-tabela.Este tipo de cláusula foi previamente analisado.Inesperado começo da declaração.Caractere inesperado.Ponto inesperado.Fim da expressão CASE inesperadaPalavra-chave inesperada.Ordenação inesperada de cláusulas.Token inesperado.Operação de alteração não reconhecida.Tipo de dado desconhecido.Palavra-chave desconhecida.Tipo de declaração desconhecida.Nome da variável era esperado.Erro #1Erro severodb/login/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.mo000064400000010470151502156020022424 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   - &  ' E $e  T   * F _ $  $ &  *)Ts+$$"#G-k*!5Qp! ! +)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Chinese (Traditional) (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-11-29 07:08+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Chinese (Traditional) Language: zh_Hant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.3-dev 預期 %1$d 個數值,但找到 %2$d 個。預期要使用 "RETURNS" 關鍵字。預期要有結束括號。預期要有逗號或者結束括號。找到新的陳述句,但與前一陳述句之間沒有分隔符。預期要有重新命名的操作。預期要有符號名稱!預期有一個符號!保留字不可以在沒有反引號時用作欄位名稱。預期有表格名稱。預期要有別名。已於前面找到別名。預期要有表示式。預期要有偏移量(Offset)。預期開括號後有一組數值。預期要有開始括號。預期要至少一個欄位定義。預期要於結束使用括號 %1$s。預期要有分隔符號。預期要有空白於分隔符號之前。預期要有 "TO" 關鍵字。陳述句結尾的關鍵字。缺少表達式。前面未開啟交易(Transaction)模式。尚未實作。預期要有實體名稱。預期要有新的資料表名稱。預期要有舊的資料表名稱。此選項與 "%1$s" 發生衝突。此類型的子句不可用於多表查詢。此類型的子句已於前面解析過。預期之外的陳述句開頭。預期之外的字元。預期之外的句點。預期之外的CASE陳述式預期之外的關鍵字。預期之外的排序語句。預期之外的符號。無法識別的修改操作。無法識別的資料類型。無法辨識的關鍵字。無法辨識的陳述句類型。預期要有變數名稱。錯誤 #1嚴謹錯誤db/login/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.mo000064400000012250151502156020021763 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   E P ;5 Iq d < '] ) &Jq&$rJNI@&$BKE$" /-K;y;-P2p*9&@,g**& &1+X )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Hebrew (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-04-25 13:54+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Hebrew Language: he MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3)); X-Generator: Weblate 3.0-dev היו אמורים להיות %1$d ערכים, אך נמצאו %2$d.אמורה הייתה להיות מילת מפתח „RETURNS” (מחזירה).אמורים היו להיות סוגריים סוגרים.אמורים היו להיות פסיק או סוגריים סוגרים.נמצא ביטוי חדש, אך לא נמצא מפריד בינו לבין הביטוי הקודם.אמורה הייתה להיות פעולת שינוי שם.אמור היה להיות שם סמל!אמור היה להיות שם של סמל! אסור להשתמש במילה שמורה בתור שם עמודה ללא סימן הטעמה משני (`).אמור היה להיות שם טבלה.אמור היה להיות כינוי.נמצא כינוי בעבר.אמור היה להיות ביטוי.אמור היה להיות היסט.היו אמורים להיות סוגריים מרובעים פותחים ואחריהם סדרה של ערכים.היו אמורים להיות סוגריים מרובעים פותחים.אמורה הייתה להיות לפחות הגדרת עמודה אחת.אמורות היו להיות מירכאות סוגרות %1$s.אמור היה להיות מפריד.אמורים היו להיות רווחים לפני המפריד.אמורה הייתה להיות מילת המפתח „TO” (אל).מילת מפתח בסוף משפט.ביטוי חסר.לא החלה העברה בעבר.לא מוטמע עדיין.אמור היה להיות שם היישות.אמור היה להיות השם החדש של הטבלה.אמור היה להיות השם הישן של הטבלה.אפשרות זו סותרת את „%1$s”.סוג סעיף זה אינו תקף בשאילתות מרובות טבלאות.סוג הסעיף הזה כבר נותח בעבר.תחילת הביטוי אינו צפוי.תו בלתי צפוי.נקודה בלתי צפויה.סיום בלתי צפוי לביטוי התניה (CASE)מילת מפתח בלתי צפויה.סידור הסעיפים בלתי צפוי.אסימון בלתי צפוי.פעולת שינוי בלתי מזוהה.סוג הנתונים אינו מזוהה.מילת מפתח בלתי מזוהה.סוג המשפט בלתי מזוהה.אמור היה להיות שם משתנה.שגיאה #1שגיאת הקפדהdb/login/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.mo000064400000001011151502156020022007 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:22+0200 Last-Translator: Michal Čihař Language-Team: Tatar Language: tt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.mo000064400000001035151502156020023154 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-12-29 19:19+0000 Last-Translator: Michal Čihař Language-Team: Uzbek (latin) Language: uz@latin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.mo000064400000001022151502156020021772 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:05+0200 Last-Translator: Michal Čihař Language-Team: Malayalam Language: ml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.mo000064400000001017151502156020022014 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:05+0200 Last-Translator: Michal Čihař Language-Team: Urdu Language: ur MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.mo000064400000011132151502156020022001 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   8 ' . k2 &  j  *   @ ;-\=!(%N7d')*'@R9(#(L!a(   :D)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-09 08:40+0000 Last-Translator: Dan Ungureanu Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17-dev Erano attesi %1$d valori, ma ne sono stati trovati %2$d.Era attesa una parola chiave "RETURNS".Era attesa una parentesi chiusa.Era attesa una virgola o una parentesi chiusa.E' stato trovato un nuovo statement, ma c'è alcun delimitatore tra questo nuovo statement e il precedente.Era attesa una operazione di rinomina.Era atteso un nome di simbolo!Era atteso un nome di simbolo! Un termine riservato non può essere usato come nome di un campo senza inserirlo tra backquotes ( ` ).Era atteso un nome di tabella.Era atteso un alias.Un alias è stato trovato precedentemente.Era attesa un'espressione.Era atteso un offset.Era attesa una parentesi aperta seguita da un insieme di valori.Era attesa una parentesi aperta.Era attesa almeno la definizione di un campo.Era atteso il fine quote %1$s.Era atteso un delimitatore.Erano attesi uno o più spazi bianchi prima del delimitatore.Era attesa la parola chiave "TO".Parola chiave alla fine dello statement.Espressione mancante.Non è stata iniziata alcuna transazione in precedenza.Non ancora implementato.Era atteso il nome dell'entity.Era atteso il nuovo nome della tabella.Era atteso il vecchio nome della tabella.Questa opzione è in conflitto con "%1$s".Questo tipo di clausola non è valida nelle query Multi-tabella.Questo tipo di clausola è stata esaminata in precedenza.Inizio di statement inatteso.Carattere inatteso.Segno di punteggiatura "punto" inatteso.Inattesa fine dell'espressione CASEKeyword inaspettata.Ordinamento di clausole inatteso.Token inatteso.Operazione di modifica non riconosciuta.Tipo dati non riconosciuto.Parola chiave non riconosciuta.Tipo statement non riconosciuto.Era atteso un nome di variabile.errore #1errore di tipo strictdb/login/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.mo000064400000001070151502156020022006 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2016-01-23 11:11+0000 Last-Translator: Arturs Nikolajevs Language-Team: Latvian Language: lv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.mo000064400000003267151502156020022012 0ustar00 l *<Xo!_}LOE+;qRW^X  A closing bracket was expected.A comma or a closing bracket was expected.A symbol name was expected!An alias was expected.An expression was expected.Not implemented yet.Unexpected dot.Unexpected end of CASE expressionUnrecognized alter operation.Project-Id-Version: Sinhala (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-10-01 16:35+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Sinhala Language: si MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.2-dev අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ.කොමාවක් හෝ අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ.සංකේත නාමයක් බලාපොරොත්තු වේ!අනවර්ථ නාමයක් බලාපොරොත්තු වේ.ප්‍රකාශයක් බලපොරොත්තු වේ.තවම නිර්මාණය කර නොමැත.බලාපොරොත්තු නොවූ ඩොට් සලකුණක්.'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය.හදුනානොගත් වෙනස් කිරීමේ මෙහෙයුමක්.db/login/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.mo000064400000001016151502156020021770 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2014-03-28 11:07+0200 Last-Translator: Michal Čihař Language-Team: Breton Language: br MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 1.9-dev db/login/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.mo000064400000001712151502156020021760 0ustar00<\pLq'c>A new statement was found, but no delimiter between it and the previous one.Not implemented yet.Unrecognized alter operation.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-07 11:22+0000 Last-Translator: Filip Obretenov Language-Team: Bulgarian Language: bg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.16-dev Беше открито ново изявление, но не и разграничител между него и предишния.Все още не е внедрена.Неизвестна промяна на операцията.db/login/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.mo000064400000001017151502156020022004 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2013-05-07 17:12+0200 Last-Translator: Michal Čihař Language-Team: Turkmen Language: tk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 1.6-dev db/login/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.mo000064400000007107151502156020022010 0ustar00%D5l@*A!l*L &Gcz< ,+Xx(&$ '1'Y"*"*H`v 4  $ , UF   '  ( C; $ )  - 3 +N z    - 5 E b v  '   " 1 9 $ "#  % ! %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2016-12-21 15:58+0000 Last-Translator: Michal Čihař Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.10 %1$d értékek voltak elvárva, de %2$d található."RETURNS" kulcsszavat vártunk.Záró kapcsos zárójelet vártunk.Egy vessző vagy egy záró zárójel várt.Egy új utasítás található, de nincs elválasztó közte és az előző között.Egy átnevezési művelet várt.Egy szimbólumnév várt!Egy álnév várt.Egy álnév korábban már megtalálva.Egy kifejezés várt.Offsetet vártunk.Nyitó kapcsos zárójelet és az azt követő értékeket vártuk.Nyitó kapcsos zárójelet vártunk.Legalább egy oszlopmeghatározás várt.A(z) %1$s záró idézés várt.Határolót vártunk.A határoló előtt szóközö(ke)t vártunk."TO" kulcsszavat vártunk.Nem volt korábban elindított tranzakció.Még nincs megvalósítva.Az entitás neve várt.A tábla új neve várt.A tábla régi neve várt.Ez a lehetőség ütközik ezzel: „%1$s”.A kikötés ezen típusa korábban fel lett dolgozva.Váratlan utasítás kezdet.Váratlan karakter.Váratlan pont.Váratlan jelsor.Felismerhetetlen módosítás művelet.Felismerhetetlen adattípus.Felismerhetetlen kulcsszó.Felismerhetetlen utasítástípus.Változónév várt.hiba #1szigorú hibadb/login/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.mo000064400000001017151502156020022011 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:03+0200 Last-Translator: Michal Čihař Language-Team: Kyrgyz Language: ky MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.mo000064400000006354151502156020022166 0ustar00 )**L dc;W<o (*EY'n'"!)=[s3o!,T-G u h  % < X Fw # (  7% "]   % ( & & < "N q %       %1$d values were expected, but found %2$d.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Missing expression.Not implemented yet.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unrecognized alter operation.Unrecognized data type.Variable name was expected.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-28 07:44+0000 Last-Translator: Xuacu Saturio Language-Team: Asturian Language: ast MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17-dev Esperábense %1$d valores, pero s'alcontraron %2$d.Esperábase un corchete de zarru.Esperábase una coma o un corchete de zarru.Alcontróse una nueva declaración, pero nun hai llendador ente ésta y la anterior.Esperábase una operación de cambiu de nome.Esperábase un nome de símboluEsperábase un nome de símbolu. Una palabra acutada nun puede usase como nome de columna ensin comines.Esperábase un alcuñu.Alcontróse anteriormente un alcuñu.Esperábase una espresión.Esperábase un desplazamientu.Esperábase un corchete d'apertura siguíu por un conxuntu de valores.Esperábase un corchete d'apertura.Esperábense les comines de final %1$s.Esperábase un llendador.Esperábase espaciu(os) en blancu antes d'un llendador.Esperábase la palabra clave "TO".Falta una espresión.Entá nun se desendolcó.Esperábase'l nome nuevu de la tabla.Esperábase'l nome anterior de la tabla.Esta opción fai conflictu con "%1$s".Carácter inesperáu.Puntu inesperáu.Final inesperáu d'espresión CASEPalabra clave inesperada.Operación d'alteración desconocida.Tipu de datu desconocíu.Esperábase un nome de variable.db/login/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.mo000064400000001017151502156020022024 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:39+0200 Last-Translator: Michal Čihař Language-Team: Uzbek Language: uz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.mo000064400000010302151502156020022364 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   ,   $ K Y u W    4 P 3i  !    (Cb!{ -$Jo)>]y  )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Chinese (Simplified) (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-08-02 09:35+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Chinese (Simplified) Language: zh_Hans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.1.1 应有%1$d个值,但查找到了%2$d个。应有“RETURNS”关键字。应有一个右括号。应该是有逗号或结束括号。发现了一个新的声明,但它与前一声明之间没有分隔符。应进行重命名操作。应该有一个符号名称!应该有一个符号名称!保留的关键字不能用作没有反引号的列名。应有表名。应该有一个别名。之前发现了一个别名。应该为一个表达式。应该为一个偏移。应该有一个开头括号后面跟着一组值。应该有一个左括号。至少应有一个字段定义。应有结束引号 %1$s。应有分隔符。分隔符之前应有空格。应为关键词“TO”。声明结尾处的关键字。缺少正则表达式。之前没有开始任何事务。还未实现.应有该实体的名称。应有表的新名称。需要有表的旧名称。此选项与“%1$s”冲突。此类型的子句在多表查询中无效。之前已解析此类型的子句。不应出现的开始声明。缺少字符。不应出现的点。CASE表达式意外结束不应出现的关键词。错误的语句顺序。意外的标记.无法识别的变更(alter)操作。无法识别的数据类型。不能识别的关键词。无法识别的声明形式。应有变量名。错误 #1严格错误db/login/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.mo000064400000001122151502156020022002 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:20+0200 Last-Translator: Michal Čihař Language-Team: Lithuanian Language: lt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.mo000064400000001011151502156020021777 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:06+0200 Last-Translator: Michal Čihař Language-Team: Malay Language: ms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/sqlparser.pot000064400000013055151502156020017775 0ustar00# phpMyAdmin SQL parser translation. # Copyright (C) 2015 - 2017 phpMyAdmin devel team # This file is distributed under the same license as the SQL parser package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: SQL parser 0\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2017-08-21 12:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/Component.php:43 src/Component.php:63 msgid "Not implemented yet." msgstr "" #: src/Components/AlterOperation.php:241 src/Statement.php:334 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" #: src/Components/AlterOperation.php:253 msgid "Unrecognized alter operation." msgstr "" #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." msgstr "" #: src/Components/Array2d.php:111 msgid "An opening bracket followed by a set of values was expected." msgstr "" #: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 msgid "An opening bracket was expected." msgstr "" #: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 #: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 #: src/Statements/DeleteStatement.php:227 #: src/Statements/DeleteStatement.php:244 #: src/Statements/DeleteStatement.php:292 #: src/Statements/DeleteStatement.php:303 #: src/Statements/DeleteStatement.php:333 #: src/Statements/DeleteStatement.php:344 #: src/Statements/InsertStatement.php:189 #: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 #: src/Statements/ReplaceStatement.php:155 #: src/Statements/ReplaceStatement.php:182 msgid "Unexpected keyword." msgstr "" #: src/Components/CaseExpression.php:199 msgid "Unexpected end of CASE expression" msgstr "" #: src/Components/CreateDefinition.php:223 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" #: src/Components/CreateDefinition.php:237 msgid "A symbol name was expected!" msgstr "" #: src/Components/CreateDefinition.php:270 msgid "A comma or a closing bracket was expected." msgstr "" #: src/Components/CreateDefinition.php:286 msgid "A closing bracket was expected." msgstr "" #: src/Components/DataType.php:123 msgid "Unrecognized data type." msgstr "" #: src/Components/Expression.php:244 src/Components/Expression.php:394 msgid "An alias was expected." msgstr "" #: src/Components/Expression.php:332 src/Components/Expression.php:351 #: src/Components/Expression.php:383 msgid "An alias was previously found." msgstr "" #: src/Components/Expression.php:364 msgid "Unexpected dot." msgstr "" #: src/Components/ExpressionArray.php:102 msgid "An expression was expected." msgstr "" #: src/Components/Limit.php:86 src/Components/Limit.php:108 msgid "An offset was expected." msgstr "" #: src/Components/OptionsArray.php:143 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" #: src/Components/RenameOperation.php:109 msgid "The old name of the table was expected." msgstr "" #: src/Components/RenameOperation.php:119 msgid "Keyword \"TO\" was expected." msgstr "" #: src/Components/RenameOperation.php:135 msgid "The new name of the table was expected." msgstr "" #: src/Components/RenameOperation.php:153 msgid "A rename operation was expected." msgstr "" #: src/Components/SetOperation.php:117 msgid "Missing expression." msgstr "" #: src/Lexer.php:237 msgid "Unexpected character." msgstr "" #: src/Lexer.php:278 msgid "Expected whitespace(s) before delimiter." msgstr "" #: src/Lexer.php:296 src/Lexer.php:314 msgid "Expected delimiter." msgstr "" #: src/Lexer.php:843 #, php-format msgid "Ending quote %1$s was expected." msgstr "" #: src/Lexer.php:884 msgid "Variable name was expected." msgstr "" #: src/Parser.php:423 msgid "Unexpected beginning of statement." msgstr "" #: src/Parser.php:442 msgid "Unrecognized statement type." msgstr "" #: src/Parser.php:527 msgid "No transaction was previously started." msgstr "" #: src/Statement.php:242 src/Statements/DeleteStatement.php:254 #: src/Statements/DeleteStatement.php:306 #: src/Statements/InsertStatement.php:226 #: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 #: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 #: src/Statements/ReplaceStatement.php:190 msgid "Unexpected token." msgstr "" #: src/Statement.php:306 msgid "This type of clause was previously parsed." msgstr "" #: src/Statement.php:366 msgid "Unrecognized keyword." msgstr "" #: src/Statement.php:377 msgid "Keyword at end of statement." msgstr "" #: src/Statement.php:503 msgid "Unexpected ordering of clauses." msgstr "" #: src/Statements/CreateStatement.php:375 msgid "The name of the entity was expected." msgstr "" #: src/Statements/CreateStatement.php:430 msgid "A table name was expected." msgstr "" #: src/Statements/CreateStatement.php:438 msgid "At least one column definition was expected." msgstr "" #: src/Statements/CreateStatement.php:550 msgid "A \"RETURNS\" keyword was expected." msgstr "" #: src/Statements/DeleteStatement.php:314 msgid "This type of clause is not valid in Multi-table queries." msgstr "" #: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 msgid "error #1" msgstr "" #: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 msgid "strict error" msgstr "" db/login/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.mo000064400000004741151502156020022010 0ustar00x*y*L<X p'!/Men'R{e9-3gO;G'Po<D/B 1r <     %1$d values were expected, but found %2$d.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.An expression was expected.An offset was expected.An opening bracket was expected.Keyword "TO" was expected.Not implemented yet.The old name of the table was expected.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unrecognized alter operation.Unrecognized data type.Project-Id-Version: Gujarati (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-12-05 15:09+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Gujarati Language: gu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.4-dev %1$d આ પ્રકાર ની values અપેક્ષિત હતી, પણ મળ્યું %2$d.કલોસિંગ બ્રેકેટની અપેક્ષા હતી.અલ્પવિરામ અથવા કલોસિંગ બ્રેકેટની અપેક્ષા હતી.નવો નિવેદન મળ્યો હતો, પરંતુ તે અને પાછલા એક વચ્ચે કોઈ વિભાજક અક્ષરો નથી મળયા.નિવેદનની અપેક્ષા હતી.ઓફસેટ અપેક્ષિત હતી.ઓપનિંગ બ્રેકેટ અપેક્ષિત હતું.કીવર્ડ "TO" અપેક્ષિત હતો.હજુ સુધી અમલમાં નથી મુકાયુ.ટેબલનુ જૂનું નામ અપેક્ષિત હતુ.અનપેક્ષિત પૂર્ણ વિરામ.અનપેક્ષિત અંત CASE નિવેદન નોઅનપેક્ષિત કીવર્ડ.આ ફેરફાર માન્ય નથી.અનપેક્ષિત ડેટા પ્રકાર.db/login/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.mo000064400000010762151502156020022012 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   0 + % 7 _; &  ~ ^ |    A &%/L-|))#=!Qs&'$B 'c!" 1Gf ~)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Slovak (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-05-10 15:09+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Slovak Language: sk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; X-Generator: Weblate 3.0-dev Očakávali sa hodnoty %1$d, ale našli sa %2$d.Očakávalo sa kľúčové slovo "RETURNS".Očakávalo sa uzatvorenie zátvorky.Bola očakávaná čiarka alebo uzatváracia zátvorka.Nový príkaz bol nájdený, ale nenašiel sa oddeľovač medzi týmto a predošlým príkazom.Očakávala sa operácia premenovania.Očakávalo sa meno symbolu!Očakávalo sa meno symbolu! Rezervované kľúčové slovo nemôže byt použité ako meno stĺpca bez spätných uvodzoviek.Očakávalo sa meno tabuľky.Bol očakávaný alias.Alias bol predtým najdený.Bol očakávaný výraz.Odstup bol očakávaný.Očakávala sa otvárajúca zátvorka nasledovaná sadou hodnôt.Očakávala sa otvárajúca zátvorka.Očakávala sa aspoň jedna definícia stĺpca.Ukončujúca úvodzovka %1$s sa očakávala.Očakával sa oddeľovač.Očakávala sa medzera pred oddelovačom.Kľúčové slovo "TO" bolo očakávané.Kľúčové slovo na konci výrazu.Chýbajúci výraz.Transakcia sa predtým nezačala.Zatiaľ neimplementované.Meno celku bolo očakávané.Bolo očakávané nové meno tabuľky.Bolo očakávané staré meno tabuľky.Táto možnosť je v rozpore s %1$s.Takýto typ výrazu nie je platný vo viac tabuľkových dotazoch.Tento typ vety bol predtým rozobraný.Neočakávaný začiatok výrazu.Neočakávaný znak.Neočakávaná bodka.Neočakávaný koniec CASE výrazuNeočakávaný znak.Neočakávané poradie výrazov.Neočakávaný token.Nerozpoznaná operácia zmeny.Nerozpoznaný typ dát.Nerozpoznané kľúčové slovo.Nerozpoznaný typ výrazu.Očakávalo sa meno premennej.Chyba #1Striktná chybadb/login/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.mo000064400000001402151502156020021776 0ustar004L`*aD6%1$d values were expected, but found %2$d.Unrecognized alter operation.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-05-29 07:42+0000 Last-Translator: Sambuu-Yondon Language-Team: Mongolian Language: mn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.14.1 %1$d утгууд хүссэн, гэвч %2$d утга олдсон.үл ойлгогдох alter үйлдэл байна.db/login/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.mo000064400000001132151502156020021770 0ustar00$,8 9Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:31+0200 Last-Translator: Michal Čihař Language-Team: Bosnian Language: bs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.mo000064400000001014151502156020021756 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:03+0200 Last-Translator: Michal Čihař Language-Team: Georgian Language: ka MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.mo000064400000010572151502156020021760 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   ) % $ ) _-   b # < R p  H ( (<X/u!.(B\ {+N?Wt! 0Jck)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-14 19:11+0000 Last-Translator: Claus Svalekjaer Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17-dev %1$d værdier var ventet, men fandt %2$d.Et "RETURNS" nøgleord var forventet.En kantet højreparantes var ventet.Et komma eller lukke parentes var ventet.Et nyt statement blev fundet, men der var ingen adskillelsestegn mellem det og det foregående.En omdøbsopgave var ventet.Et symbol var ventet!Et symbolnavn var ventet! Et reserveret nøgleord kan ikke bruges som et feltnavn uden backquotes.Et tabelnavn var ventet.Et alias var verntet.Et alias er fundet tidligere.Et udtryk var ventet.En forskydning var ventet.En kantet venstreparentes efterfulgt af et sæt værdier blev forventet.En kantet venstreparantes var forventet.Mindst en kolonne definition var ventet.Slut quote %1$s var ventet.Forventede adskillelsestegn.Forventede whitespace(s) før adskillelsestegn.Nøgleordet "TO" var forventet.Nøgleord i slutningen af udtryk.Manglende udtryk.Ingen transaktion er blevet startet tidligere.Endnu ikke implementeret.Enhedens navn var ventet.Tabellens nye navn var ventet.Tabellens gamle navn var ventet.Denne indstilling er i konflikt med "%1$s".Denn type af sætningskonstruktion er ikke gyldig i multitabel forespørgsler.Denne type af sætningskonstruktion er tidligere blevet parset.Uventet start på statement.Uventet karakter.Uventet punktum.Uventet afslutning af CASE udtrykUventet nøgleord.Uventet clause rækkefølge.Uventet token.Ukendt alter opgave.Ukendt datatype.Ukendt nøgleord.Ukendt type af statement.Variabelnavn var ventet.fejl #1stringent fejldb/login/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.mo000064400000001022151502156020021750 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:30+0200 Last-Translator: Michal Čihař Language-Team: Afrikaans Language: af MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.mo000064400000001021151502156020021763 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2016-01-17 22:02+0000 Last-Translator: Xosé Calvo Language-Team: Galician Language: gl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.mo000064400000001016151502156020021765 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:29+0200 Last-Translator: Michal Čihař Language-Team: Hindi Language: hi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.mo000064400000012403151502156020022002 0ustar00!$/,**4L_ cMd< 5(Ir&''"-"Ps!">xHm i W UC 9 ? = NQ Q `WB<H$Yi~<T%]zDcE@lTul97EqK  !   %1$d values were expected, but found %2$d.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Missing expression.No transaction was previously started.Not implemented yet.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unrecognized alter operation.Unrecognized data type.Unrecognized statement type.Variable name was expected.Project-Id-Version: Thai (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-08-17 12:42+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Thai Language: th MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.2-dev ค่าของ %1$d ได้รับการคาดเดา แต่สิ่งที่พบคือ %2$dวงเล็บปิดได้รับการคาดเดาจุลภาค หรือ วงเล็บปิด ได้รับการคาดเดาตรวจพบประพจน์ใหม่ แต่ไม่มีตัวคั่นระหว่างข้อความนี้กับข้อความก่อนหน้าการเปลี่ยนชื่อได้รับการคาดเดาชื่อสัญลักษณ์ได้รับการคาดเดา!ชื่อสัญลักษณ์ได้รับการคาดเดาแล้ว คำสำคัญที่สงวนไว้ไม่สามารถใช้เป็นชื่อคอลัมน์โดยไม่มีอัญประกาศกลับหลังได้ตัวแทนได้รับการคาดเดาชื่อ alias มีอยู่ก่อนแล้วหนึ่งนิพจน์ได้รับการคาดเดาหนึ่งออฟเซ็ตได้รับการคาดเดาเปิดวงเล็บเหลี่ยมแล้วตามด้วยชุดของค่าที่จะคาดเดาวงเล็บเหลี่ยมเปิดได้รับการคาดเดาอัญประกาศปิด %1$s ได้รับการคาดเดาตัวคั่นได้รับการคาดเดาวรรค(อาจจะมากกว่าหนึ่ง) ได้รับการคาดเดาก่อนตัวคั่นคำสำคัญ "TO" ได้รับการคาดเดานิพจน์ขาดหายไม่มีข้อมูลเข้าออกได้เริ่มต้นมาก่อนยังไม่มีการดำเนินการชื่อตารางใหม่ได้รับการคาดเดาชื่อเดิมของตารางได้รับการคาดเดาตัวเลือกนี้ขัดแย้งกับ %1$sไม่อาจคาดเดาจุดเริ่มต้นของประพจน์ตัวอักษรที่คาดเดาไม่ได้จุด ไม่ได้รับการคาดเดาจุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดาคำสำคัญที่ไม่ได้รับการคาดเดาไม่รู้จักการปฏิบัติการนอกเหนือจากนี้ไม่รู้จักชนิดข้อมูลไม่รู้จักชนิดของประพจน์ชื่อตัวแปรได้รับการคาดเดาdb/login/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.mo000064400000001044151502156020021775 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:23+0200 Last-Translator: Michal Čihař Language-Team: Macedonian Language: mk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.mo000064400000001025151502156020022124 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-11-20 15:47+0000 Last-Translator: Dana Akram Language-Team: Kurdish Sorani Language: ckb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.mo000064400000011070151502156020021751 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   1 & & 1 [A )   e  #   D $80](2 '&N-e"$-H@6&! /Ii(! ))(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2018-01-15 17:44+0000 Last-Translator: Robert Antoni Buj Gelonch Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.19-dev S'esperaven %1$d valors, però s'han trobat %2$d.S'esperava una paraula clau "RETURNS".S'esperava un claudàtor de tancament.S'esperava una coma o un claudàtor de tancament.S'ha trobat una sentència nova, però no hi ha cap delimitador entre aquesta i l'anterior.S'esperava una operació de canvi de nom.S'esperava un nom de símbol!S'esperava un nom de símbol! No es pot utilitzar una paraula clau reservada com a nom de columna sense les cometes invertides.S'esperava un nom de taula.S'esperava un àlies.S'ha trobat un àlies anteriorment.S'esperava una expressió.S'esperava un desplaçament.S'esperava un claudàtor d'obertura seguit per un conjunt de valors.S'esperava un claudàtor d'obertura.S'esperava al menys la definició d'una columna.S'esperava una cometa de tancament %1$s.S'esperava un delimitador.S'esperaven espais en blanc abans del delimitador.S'esperava la paraula clau "TO".Paraula clau al final de la sentència.Expressió no trobada.No s'ha iniciat cap transacció anteriorment.Encara no implementat.S'esperava el nom de l'entitat.S'esperava el nom nou de la taula.S'esperava el nom antic de la taula.Aquesta opció està en conflicte amb "%1$s".Aquest tipus de clàusula no és vàlid en consultes de diverses taules.Aquest tipus de clàusula s'ha analitzat anteriorment.Començament no esperat de sentència.Caràcter no esperat.Punt inesperat.Final inesperat d'expressió CASEParaula clau no esperada.Ordre de condicions no esperat.Testimoni no esperat.Operació de modificació no reconeguda.Tipus de dades desconegut.Paraula clau no reconeguda.Tipus de sentència no reconegut.S'esperava un nom de variable.error #1Error estrictedb/login/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.mo000064400000010411151502156020021771 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   ,c !  & N B c ly   " 9 K ;^  / ( )"Li *! ,,8Y(  !6Rk  )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Kazakh (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2019-04-01 21:04+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Kazakh Language: kk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.6-dev %1$d mánderi kútilgen, biraq %2$d tabyldy.«RETURNS» kilt sózi kútilgen.Jabushy jaqsha kútilgen.Útir nemese jabushy jaqsha kútilgen.Jańa nusqaý tabyldy, biraq onyń men aldyńǵy bireý arasynda bólgish joq.Qaıta ataý áreketi kútilgen.Tańba aty kútilgen!Tańba aty kútilgen! Saqtalǵan kilt sózdi doǵal ekpindersiz baǵan aty retinde paıdalanýǵa bolmaıdy.Keste aty kútilgen.Búrkenshik aty kútilgen.Aldynda búrkenshik aty tabylǵan.Órnek kútilgen.Yǵysý kútilgen.Ashýshy jaqsha, sodan keıin mánder jıyntyǵy kútilgen.Ashýshy jaqsha kútilgen.Eń keminde bir baǵannyń anyqtamsy kútilgen.«%1$s» jabýshy tyrnaqshasy kútilgen.Bólgish kútilgen.Bólgishke deıin bosoryn(dar) kútilgen.«TO» kilt sózi kútilgen.Nusqaý aıaǵynda kilt sóz.Órnek joq.Eshbir tranzaksıa aldynda bastalǵan joq.Áli iske asyrylmady.Nysan aty kútilgen.Kesteniń jańa ataýy kútilgen.Kesteniń eski ataýy kútilgen.Bul opsıa «%1$s» degenmen qaıshy keledi.Birneshe keste saýaldarynda bul sóılem tyri jaramsyz.Bul sóılemdiń túri aldynda taldandy.Nusqaýdyń kútpegen bastalýy.Kútpegen tańba.Kútpegen núkte.CASE órneginiń kútpegen sońyKútpegen kilt sóz.Kútpegen sóılemder reti.Kútpegen tańbalaýysh.Tanylmaǵan ózgertý áreketi.Tanylmaǵan derekter túri.Tanylmaǵan kilt sóz.Tanylmaǵan nusqaý túri.Aınymaly aty kútilgen.qate № 1qatań qatedb/login/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.mo000064400000006266151502156020022031 0ustar00 +*!*6La !<9 v,&:$O't'""  0B`x+(8 KI      I" 'l (    % < #V *z , 0   1 A Q c s         %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Keyword "TO" was expected.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-11-12 10:41+0000 Last-Translator: Michal Čihař Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev %1$d värden var väntat, men hittade %2$d.Ett nyckelord förväntades.En avslutande hakparentes förväntades.Semikolon eller en avslutande hakparentes förväntades.En ny sats hittades, men ingen avgränsare mellan det och den föregående.Ett namnbyte förväntades.Ett alias förväntades.Ett alias hittades tidigare.Ett uttryck förväntades.En förskjutning förväntades.En inledande hakparentes följt av en uppsättning värden förväntades.En inledande hakparentes förväntades.Minst en kolumndefinition förväntades.Slut citat %1$s förväntades.Förväntade avgränsare.Sökordet "Till" förväntades.Ingen transaktion startades tidigare.Ännu inte implementerat.Namnet på entiteten förväntades.Det nya namnet på tabellen förväntades.Det gamla namnet på tabellen förväntades.Det här alternativet är i konflikt med "%1$s".Oväntad början av satsen.Oväntade tecken.Oväntad punkt.Oväntad token.Okänd operation.Okänd datatyp.Okänt nyckelord.Okänd uttryckstyp.Variabel namn förväntades.db/login/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.mo000064400000010555151502156020021771 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   -d '  ) Q %V | w  1 (J (s % <  *If$}!,+D]y'2)7M`' >X a)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Indonesian (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2019-03-11 16:03+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Indonesian Language: id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.5.1 Nilai %1$d diharapkan. Namun, ditemukan %2$d.Sebuah kata kunci "RETURNS" diharapkan.Sebuah kurung tutup diharapkan.Sebuah koma atau kurung tutup diharapkan.Suatu pernyataan baru ditemukan, tetapi tanpa pembatas antara itu dan sebelumnya.Sebuah operasi ganti nama diharapkan.Sebuah nama simbol diharapkan!Sebuah nama simbol diharapkan! Kata kunci yang telah diatur tidak dapat digunakan sebagai nama kolom tanpa tanda kutip.Sebuah nama tabel diharapkan.Sebuah alias diharapkan.Sebuah alias telah ditemukan sebelumnya.Sebuah perintah (expression) diharapkan.Suatu pergeseran (offset) diharapkan.Sebuah kurung buka yang diikuti oleh nilai-nilai diharapkan.Sebuah kurung buka diharapkan.Setidaknya satu definisi kolom diharapkan.Petik akhir %1$s diharapkan.Mengharapkan pembatas.Mengharapkan spasi sebelum pembatas.Kata kunci "TO" diharapkan.Kata kunci pada akhir pernyataan.Perintah (expression) hilang.Tidak ada transaksi yang dimulai sebelumnya.Belum diimplementasikan.Nama entitas diharapkan.Nama baru tabel diharapkan.Nama lama tabel diharapkan.Pilihan ini bertentangan dengan "%1$s".Jenis klausa ini tidak sah dalam kueri multitabel.Jenis klausa ini telah diurai sebelumnya.Awal pernyataan tak terduga.Karakter tak terduga.Titik tak terduga.Akhir operasi CASE tak terdugaKata kunci tak terduga.Pengurutan klausa tak terduga.Token tak terduga.Operasi ubah tabel (alter) tak dikenal.Tipe data tak dikenal.Kata kunci tak dikenal.Jenis pernyataan tak dikenal.Nama variabel diharapkan.galat #1galat ketatdb/login/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.mo000064400000010752151502156020022005 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   1} ) " / a, $  _ ~ !   B !3/U5 #8Ml&*(#A&-h#%>Pe|" )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-05 10:46+0000 Last-Translator: Steven WdV Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17-dev %1$d waarden werden verwacht, maar %2$d gevonden.Een "RETURNS" sleutelwoord werd verwacht.Een sluitingshaakje werd verwacht.Een komma of een sluitingshaakje werd verwacht.Een nieuwe opdracht werd gevonden, maar zonder scheidingsteken tussen deze en de vorige opdracht.Een hernoem bewerking werd verwacht.Een symbool naam werd verwacht!Een symbool naam werd verwacht! Een gereserveerd sleutelwoord kan niet als kolomnaam gebruikt worden zonder achterwaartse aanhalingstekens.Een tabel naam werd verwacht.Een alias werd verwacht.Een alias was eerder al gevonden.Een expressie werd verwacht.Een offset werd verwacht.Een openingshaakje gevolgd door een set met waardes werd verwacht.Een openingshaakje werd verwacht.Er werd minimaal één kolomdefinitie verwacht.Eindquote %1$s werd verwacht.Scheidingsteken verwacht.Spatie(s) werd(en) verwacht voor het scheidingsteken.Sleutelwoord "TO" werd verwacht.Sleutelwoord aan eind van opdracht.Expressie ontbreekt.Er is geen transactie gestart.Nog niet geïmplementeerd.De naam van de entiteit werd verwacht.De nieuwe naam van de tabel werd verwacht.De oude naam van de tabel werd verwacht.Deze optie conflicteert met "%1$s".Dit type van voorwaarde is niet bruikbaar in multi-tabel queries.Dit type van voorwaarde is eerder uitgevoerd.Onverwacht begin van opdracht.Onverwachte letter.Onverwachte punt.Onverwacht einde van CASE expressieOnverwacht sleutelwoord.Onverwachte volgorde van voorwaarden.Onverwacht token.Onbekende bewerking.Onbekend gegevenstype.Sleutelwoord niet herkend.Opdrachttype niet herkend.Naam van variabele werd verwacht.fout #1strikte foutdb/login/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.mo000064400000003244151502156020022012 0ustar00 t* <]t,''-C_MEK*8 SC6>> L9j  A comma or a closing bracket was expected.A rename operation was expected.An alias was expected.An expression was expected.At least one column definition was expected.Ending quote %1$s was expected.The new name of the table was expected.The old name of the table was expected.Unexpected character.Variable name was expected.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-12-18 18:19+0000 Last-Translator: Andrey Aleksanyants Language-Team: Armenian Language: hy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Weblate 2.5-dev Սպասվում էր ստորակետը կամ փակող փակագիծը։Սպասվում էր վերանվանման գործողությունը։Սպասվում էր այլանունը։Սպասվում էր արտահայտությունը։Սպասվում էր առնվազն մեկ սյունակի սահմանումը։Սպասվում էր %1$s փակող չակերտը։Սպասվում էր աղյուսակի նոր անունը։Սպասվում էր աղյուսակի հին անունը։Անսպասելի նշան։Սպասվում էր փոփոխականի անունը։db/login/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.mo000064400000002501151502156020021772 0ustar00 | *!L`u!'99Vt! 8   %1$d values were expected, but found %2$d.Expected delimiter.Not implemented yet.Unexpected character.Unexpected end of CASE expressionUnexpected keyword.Unexpected token.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.error #1Project-Id-Version: Czech (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2019-04-28 14:48+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; X-Generator: Weblate 3.6.1 Byly nalezeny %2$d hodnoty, namísto očekávaných %1$d.Byl očekáván oddělovač.Zatím není implementováno.Neočekávaný znak.Neočekávaný konec CASE výrazuNeočekávané klíčové slovo.Neočekávaný token.Nerozpoznaný datový typ.Nerozpoznané klíčové slovo.Nerozpoznaný typ výrazu.chyba #1db/login/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.mo000064400000001132151502156020022010 0ustar00$,8 9Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:25+0200 Last-Translator: Michal Čihař Language-Team: Serbian Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.mo000064400000001042151502156020021770 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-12-29 15:36+0000 Last-Translator: Robin van der Vliet Language-Team: Limburgish Language: li MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.mo000064400000011044151502156020023105 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r  E 0 ) E *f T (  w)   #   4 Q.r$.$*6a*u !&>>+}#3P"a"!  )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-22 09:47+0000 Last-Translator: Viktar Vauchkevich Language-Team: Belarusian (latin) Language: be@latin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.17-dev Čakalasia %1$d značenniaŭ, a znojdziena %2$d.Čakalasia kliučavoje slova «RETURNS».Čakalasia zakryvaĺnaja dužka.Čakalasia koska abo zakryvaĺnaja dužka.Znojdziena novaje scviardžennie, alie miž im i papiarednim niama razdzialiaĺnika.Čakalasia apieracyja pierajmienavannia.Čakalasia nazva simvala!Čakalasia nazva simvala! Zareziervavanyja kliučavyja slovy nieĺha vykarystoŭvać jak nazvu slupka biez dvukossiaŭ.Čakalasia nazva tablicy.Čakaŭsia psieŭdanim.Psieŭdanim byŭ znajdzieny raniej.Čakaŭsia vyraz.Čakaŭsia sostup.Čakalisia adkryvaĺnaja dužka i spis značenniaŭ.Čakalasia adkryvaĺnaja dužka.Čakalasia aznačennie prynamsi adnaho slupka.Čakalasia kancavoje dvukossie %1$s.Čakajecca razdzialiaĺnik.Čakaŭsia prahal(y) pierad razdzialiaĺnikam.Čakalacja kliučavoje slova «TO».Kliučavoje slova ŭ kancy scviardžennia.Adsutničaje vyraz.Niama papiarednie zapuščanaj tranzakcyi.Jašče nie realizavana.Čakalasia nazva sutnasci.Čakalasia novaja nazva tablicy.Čakalasia staraja nazva tablicy.Hety paramietr kanfliktuje z «%1$s».Hety typ vyrazu nie praviĺny dlia muĺtytabličnych zapytaŭ.Hety typ vyrazu byŭ papiarednie razabrany.Niečakany pačatak scviardžennia.Niečakany simval.Niečakanaja kropka.Niečakany kaniec CASE-vyrazuNiečakanaje kliučavoje slova.Niečakany paradak vyrazaŭ.Niečakany znak.Nieraspaznanaja apieracyja zmieny.Nieraspaznany typ danych.Nieraspaznanaje kliučavoje slova.Nieraspaznany typ scviardžennia.Čakalasia nazva zmiennaj.pamylka #1niedapuščaĺnaja pamylkadb/login/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.mo000064400000011147151502156020021764 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   2 & % 0 U5 ( " "b  &   F $F/k&0" $/T.i$(, 'AH6'&A$`(%$+P Y)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-11-14 22:08+0000 Last-Translator: Giovanni Sora Language-Team: Interlingua Language: ia MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.18-dev %1$d valores esseva expectate, ma il trovava %2$d.On expectava le parola clave "RETURN".On expectava un parenthesis claudite.On expectava un comma o un parentheses claudite.On trovava un nove declaration, ma il non ha alcun demarcator inter isto e le previe.On expectava un operation de renominar..On expectava un nomine de symbolo!On expectava un nomine de symbolo! Un parola clave reservate non pte esser usate como nomine de columna sin retro citationes (backquotes).On expectava un nomine de tabella.On expectava un alias.Previemente on trovava un pseudonymo.On expectava un expression.On expectava un displaciamento.On expectava un parenthesis aperite sequite per un insimul de valores.On expectava un parenthesis aperite.On expectava al minus un definition de columna.On expectava le fin de citation %1$s .On expectava demarcator.On expectava spatio(s) blanc ante le demarcator.On expectava le parola clave "TO".Parola clave al fin del instruction.Expression mancante.Necun transaction esseva initiate previemente.Ancora non actuate.On expectava le nomine del entitate.On expectava le nove nomine del tabella.On expectava le vetule nomine de le tabella.Iste option conflige con "%1$s".Iste typo de proposition non es valide in query de multi-tabella.Iste typo de proposition esseva analysate previemente.Un initio de instruction non expectate.Un character non expectate.Puncto inexpectate.Un fin inexpectate del expression CASEUn parola clave non expectate.Un ordine de clausas non expectate.Un indicio non expectate.Operation d alteration non recognoscite.Typo de datos non cognoscite.Parola clave non recognoscite.Typo de declaration non recognoscite.On expectava un nomine de variabile.error #1stricte errordb/login/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.mo000064400000001037151502156020022003 0ustar00,<HIR error #1Project-Id-Version: Uyghur (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-06-08 03:43+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Uyghur Language: ug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.0 خاتالىق #1db/login/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.mo000064400000001017151502156020021766 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2014-01-06 12:13+0200 Last-Translator: Michal Čihař Language-Team: Punjabi Language: pa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 1.9-dev db/login/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.mo000064400000012222151502156020021770 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r  " D ? -L ?z k )& )P z $#8H+  W/G9w-E7B>z12:L61jC[,2*8*c*&*"%%Hn)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2018-01-25 23:34+0000 Last-Translator: yagoub fadel Language-Team: Arabic Language: ar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5; X-Generator: Weblate 2.19-dev تم توقع قيم %1$d ، ولكن تم العثور على %2$d.كانت الكلمة الرئيسية "رجوع" متوقعة.من المتوقع وجود قوس مغلق.من المتوقع وجود فاصلة أو قوس إغلاق.تم العثور على بيان جديد، ولكن لا يوجد محدد بينه وبين سابقه .نتوقع منك اعادة تسمية .كان من المتوقع اسم رمز!كان من المتوقع وجود اسم رمز! لا يمكن استخدام كلمة رئيسية محجوزة كاسم عمود بدون علامات اقتباس.نتوقع تسمية الجدول .كان من المتوقع وجود اسم مستعار.اسم مستعار موجود مسبقا .متوقع وجود تعبير .متوقع حدوث تعويض .من المتوقع وجود قوس فتح متبوعا بمجموعة من القيم.من المتوقع وجود قوس مفتوح.نتوقع منك تعريف عمود علي الاقل .نتوقع إنهاء الاقتباس %1$s .المحدد المتوقع.المسافات البيضاء المتوقعة قبل المحدد.متوقع وجود الكلمة الرئيسية "TO".الكلمة المفتاحية في نهاية الافادةتعبير مفقود .لم يتم بدء أي معاملة من قبل.لم تنفذ بعد.نتوفع منك ادراج اسم الكيان .متوقع وجود الاسم الجديد للجدول .متوفع وجود اسم الجدول القديم .يتعارض هذا الخيار مع“%1$s“ .هذا النوع من الشرط غير صالح في الاستعلامات متعددة الجداول.تم تحليل هذا النوع من العبارات سابقا.بداية غير متوقعة للبيان.حرف غير متوقع .نقطة غير متوقعة.نهاية غير متوقعة من التعبيركلمة رئيسية غير متوقعة.ترتيب غير متوقع للبنود.رمز غير متوقع.عملية تغيير غير معروفة.نوع بيانات غير معروف.كلمة محجوزة غير معروفة.نوع بيان غير معروف.متوقع منك اسم متغير .الخطأ رقم 1خطأ صارمdb/login/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.mo000064400000001020151502156020021757 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:44+0200 Last-Translator: Michal Čihař Language-Team: Bengali Language: bn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.mo000064400000001075151502156020021775 0ustar00,<PQZ4error #1Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2016-12-21 15:58+0000 Last-Translator: Michal Čihař Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.10 eraro #1db/login/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.mo000064400000011045151502156020021777 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   / " " - W0 $ o > ^ $t   G $3?"s6"'.,Gt$(+)>./m$#  'H(e!% )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-10 09:25+0000 Last-Translator: Franco Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.17-dev Se esperaban %1$d valores, pero encontró %2$d.Se esperaba una palabra "RETURNS".Se esperaba un corchete de cierre.Se esperaba una coma o un corchete de cierre.Se encontró una nueva declaración, pero no hay delimitador entre éste y el anterior.Se esperaba un cambio de nombre.¡Se esperaba un nombre de símbolo!¡Se esperaba un nombre de símbolo! Una palabra reservada no puede usarse como nombre de columna sin comillas.Se esperaba un nombre de tabla.Se esperaba un alias.Se encontró anteriormente un alias.Se esperaba una expresión.Se espera un desplazamiento.Se esperaba un corchete de apertura seguido por un conjunto de valores.Se esperaba un corchete de apertura.Se esperaba la definición de al menos una columna.Se esperaba terminar la cita %1$s.Delimitador esperado.Espacio(s) en blanco esperado(s) antes de delimitador.Se esperaba la palabra clave "TO".Palabra clave al final de la sentencia.Expresión desaparecida.Ninguna operación se inició anteriormente.Aún no implementado.Se esperaba el nombre de la entidad.Se esperaba el nuevo nombre de la tabla.Se esperaba el nombre anterior de la tabla.Esta opción tiene conflictos con "%1$s".Este tipo de cláusula no es válida en consultas multi-tabla.Este tipo de cláusula se analizó previamente.Comienzo inesperado de declaración.Caracter inesperado.Punto inesperado.Final inesperado de expresión CASEPalabra clave inesperada.Orden inesperado de condiciones.Símbolo (token) inesperado.Operación de modificación desconocida.Tipo de dato desconocido.Palabra clave no reconocida.Tipo de declaración desconocida.Se esperaba el nombre de la variable.error #1error estrictodb/login/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.mo000064400000013166151502156020022015 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r  8 H ;& 3b D } EY < .(:&V(}V5\3=,L6H5$L!'-I7w<7c$TH&&$M7r1=&5A-w35.>%P)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-21 14:47+0000 Last-Translator: Володимир Бриняк Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.17-dev Очікувалося %1$d значення, а знайдено %2$d .Очікувалося ключове слово "RETURNS".Очікувалася закривна дужка.Очікувалося, кома або закривна дужка.Новий оператор знайдено, але між ним і попереднім немає роздільника.Очікувалася операція перейменування.Очікувалося ім'я ідентифікатора!Очікувалося ім'я ідентифікатора! Зарезервоване ключове слово не може використовуватися, як ім'я стовпця, без зворотніх лапок.Очікувалося ім'я таблиці.Очікувався псевдонім.Псевдонім був раніше знайдений.Очікувався оператор.Очікувалося зміщення.Очікувалося відкриття дужки з набором значень.Очікувалося відкриття дужки.Очікувалося, принаймні одне визначення стовпчика.Очікувалося закриваюча лапка %1$s .Очікувалося роздільник.Очікувалося пробіл(и) перед роздільником.Очікувалося ключове слово "TO".Ключове слово в кінці виразу.Відсутній оператор.Жодна транзакція не була раніше запущена.Ще не реалізовано.Очікувалося ім'я об'єкта.Очікувалося нове ім'я таблиці.Очікувалося стара назва таблиці.Цей параметр конфліктує з "%1$s".Цей тип оператора не діє для запитів групових таблиць.Цей тип оператора був раніше проаналізований.Неочікуваний початок виразу оператора.Неочікуваний символ.Неочікувана крапка.Неочікуваний кінець виразу CASEНеочікуване ключове слово.Неочікуваний порядок операторів.Неочікуваний маркер.Нерозпізнана операція зміни.Нерозпізнаний тип даних.Нерозпізнане ключове слово.Нерозпізнаний тип оператора.Очікувалося ім'я змінної.помилка #1недопустима помилкаdb/login/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.mo000064400000001035151502156020022004 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-12-24 23:02+0000 Last-Translator: Robin van der Vliet Language-Team: Frisian Language: fy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.mo000064400000013106151502156020022016 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r  # > 9 7A My AW ) )$2&"$IXn7c>c*B4?E*I#+4J6;Or7$"AB3="A1[3(/*)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-09-05 16:20+0000 Last-Translator: pitchblack Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.17-dev Ожидалось %1$d значений, найдено %2$d.Ожидалось ключевое слово "RETURNS".Ожидалась закрывающая скобка.Ожидалась запятая или закрывающая скобка.Было найдено новое утверждение, но не было разделителя между ним и предыдущим.Ожидалась операция переименования.Ожидалось имя символа!Ожидалось имя символа! Зарезервированное ключевое слово не может использоваться как имя столбца без обратных запросов.Ожидалось имя таблицы.Ожидался псевдоним.Псевдоним был найден ранее.Ожидалось выражение.Ожидалось смещение.Ожидалась открывающая скобка и список значений.Ожидалась открывающая скобка.Ожидалось объявление, по крайней мере, одного столбца.Ожидалась закрывающая кавычка %1$s.Ожидается разделитель.Ожидался пробел перед разделителем.Ожидалось ключевое слово "TO".Ключевое слово в конце инструкции.Отсутствует выражение.Ни одна транзакция не была ранее начата.Ещё не реализовано.Ожидалось имя сущности.Ожидалось новое имя таблицы.Ожидалось старое имя таблицы.Этот параметр конфликтует с "%1$s".Такого рода выражения не поддерживаются в мульти-табличных запросах.Этот тип предложения ранее анализировался.Неожиданное начало выражения.Неожиданный символ.Неожиданная точка.Неожиданное окончание CASE выраженияНеожиданное ключевое слово.Неожиданный порядок предложений.Неожиданный токен.Нераспознанная операция изменения.Нераспознанный тип данных.Неизвестное ключевое слово.Неизвестный оператор.Ожидалось имя переменной.ошибка #1строгая ошибкаdb/login/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.mo000064400000001034151502156020021775 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-07-24 13:05+0200 Last-Translator: Shameem Ahmed A Mulla Language-Team: Kannada Language: kn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.4-dev db/login/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.mo000064400000001033151502156020022151 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2014-10-02 15:09+0200 Last-Translator: Purodha Language-Team: Colognian Language: ksh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n==0 ? 0 : n==1 ? 1 : 2; X-Generator: Weblate 1.10-dev db/login/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.mo000064400000010737151502156020022012 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   ; ' $ /@ Fp "  u j     4 06g)"#6&]{#E7>v#"!5Tn )(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-12-02 21:48+0000 Last-Translator: Kozioł Marcin Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 2.18-dev Oczekiwano następującej wartości: %1$d; znaleziono %2$d.Oczekiwano słowa kluczowego "RETURNS".Brak nawiasu zamykającego.Oczekiwano przecinka lub nawiasu zamykającego.Znaleziono kolejne polecenie, ale brakuje między nimi rozgranicznika.Oczekiwano polecenia zmiany nazwy.Oczekiwano nazwy symbolu!Oczekiwano nazwy symbolu! Zarezerwowane słowo kluczowe nie może być używane jako nazwa kolumny bez cudzysłowów.Oczekiwano nazwy tabeli.Oczekiwano aliasu.Wcześniej znaleziono alias.Oczekiwano wyrażenia.Oczekiwano przesunięcia.Oczekiwano nawiasu otwierającego i listy wartości.Brak nawiasu otwierającego.Oczekiwano definicji co najmniej jednej kolumny.Oczekiwano znaku końca %1$s.Oczekiwano rozgranicznika.Oczekiwano spacji przez rozgranicznikiem.Oczekiwano słowa kluczowego "TO".Słowo kluczowe na końcu wyciągu.Brakujace wyrazenie.Żadna transakcja nie została wcześniej uruchomiona.Jeszcze nie zaimplementowane.Oczekiwano nazwy obiektu.Oczekiwano nowej nazwy tabeli.Oczekiwano starej nazwy tabeli.Ta opcja zawiera konflikt z "%1$s".Ta klauzula nie może być stosowana w poleceniach międzytabelowych.Tego typu klauzula została wcześniej przeanalizowana.Oczekiwano początku polecenia.Nieoczekiwany znak.Nieoczekiwana kropka.Nieoczekiwany koniec polecenia CASENieznane słowo kluczowe.Nieoczekiwana kolejność klauzul.Nieoczekiwany znak.Nierozpoznana zmiana operacji.Nierozpoznany typ danych.Nierozpoznane słowo kluczowe.Nierozpoznany typ polecenia.Oczekiwano nazwy zmiennej.Błąd #1ścisły błąddb/login/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.mo000064400000010657151502156020022016 0ustar00*l;*!*LA c*Ie<} ,((<e&$''"E8h*"!7Kk}  9  0 3P b    4   T" w &   7 -!D=f%*%LPH. 20S''$7)T~*('% " )# $ ! & %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Vietnamese (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2018-06-30 02:46+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.1-dev Cần giá trị %1$d, nhưng lại nhận được %2$d.Cần từ khóa "RETURNS".Cần dấu ngoặc ôm đóng.Cần dấu phẩy hoặc dấu ngoặc ôm đóng.Tìm thấy câu lệnh mới, nhưng không có dấu ngăn cách giữa nó và lệnh trước.Cần thao tác đổi tên.Cần tên biểu tượng. Một từ khoá truy ngược không thể được sử dụng như là một tên cột mà không có các ngoặc sau.Cần một bí danh.Một bí danh đã tìm thấy từ trước đây.Cần một biểu thức.Cần vị trí tương đối.Cần một dấu ngoặc ôm mở theo sau bởi một tập hợp các giá trị.Cần dấu ngoặc ôm mở.Chưa có bảng nào được chọn.Cần trích dẫn đóng %1$s.Cần dấu phân tách.Cần các khoảng trắng trước dấu phân tách.Cần từ khóa "TO".Thiếu biểu thức chính quy.Chưa có giao địch nào đã bắt đầu trước đây.Chưa được viết mã thực thi.Cần tên của thực thể.Cần tên mới của bảng.Cần tên cũ của bảng.Tùy chọn này xung đột với "%1$s".Mệnh đề loại này không hợp lệ trong các truy vấn Đa bảng.Kiểu của mệnh đề này đã được phân tích trước đây.Gặp phần đầu mệnh đề không cần.Gặp ký tự không cần.Gặp dấu chấm không cần.Kết thúc bất ngờ của biểu thức CASETừ khóa không mong muốn.Đặt mệnh đề không mong muốn.Gặp thẻ bài không cần.Không nhận ra thao tác thay đổi.Không nhận ra kiểu dữ liệu.Không nhận ra từ khóa.Không thừa nhận kiểu mệnh đề.Cần tên biến.lỗi #1lỗi nghiêm ngặtdb/login/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.mo000064400000002104151502156020021774 0ustar00<\pLq-HA new statement was found, but no delimiter between it and the previous one.Not implemented yet.Unrecognized alter operation.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-04-12 15:19+0000 Last-Translator: bhargavi sabbisetty Language-Team: Telugu Language: te MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.13 ఒక కొత్త వాక్యం కనిపించింది, కానీ దీనికి మరియు మునుపటి దానికి మధ్య ఎటువంటి డీలిమిటర్ లేదు .ఇంకా అమలు కాలేదు.గుర్తించబడని మారు ఆపరేషన్.db/login/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.mo000064400000007545151502156020022001 0ustar00)d;*!L Stc&Eay(&"I$^''"8*/"Z}! )AWt * $ # K '? g q}    5 H f  $  %  ( ? X n  ( > , < ] ky" $9Q Y)' &$ ! ("#  % %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: Norwegian Bokmål (phpMyAdmin) Report-Msgid-Bugs-To: POT-Creation-Date: 2019-04-30 16:36+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: Norwegian Bokmål Language: nb_NO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.6.1 %1$d verdier var forventet, men fant %2$d.Et "RETURNS" søkeord ble forventet.En sluttende brakett var forventet.En ny uttalelse ble funnet, men ingen skilletegn mellom det og den forrige.En navneenringsoperasjon var forventet.Symbolnavn forventet!Et symbol navn var forventet! Et forbeholdt nøkkelord kan ikke bli brukt som et kolonnenavn uten tilbakesitater.Tabellnavn forventet.Alias forventet.Et alias ble tidligere funnet.Uttrykk forventet.En forskyvning var forventet.Sluttsitat %1$s forventet.Forventet avgrensning.Forventet blanktegn før skilletegn.Søkeordet "TIL" var forventet.Nøkkelord ved slutten av uttalelsen.Manglende uttrykk.Ingen transaksjon ble tidligere startet.Ikke implementert ennå.Enhetsnavn forventet.Forventet nytt tabellnavn.Forventet gammelt tabellnavn.Denne operasjonen konflikter med "%1$s".Denne typen klausul er ikke gyldig i Multi-tabell-spørringer.Denne typen klausul ble tidligere analysert.Uventet begynnelse på uttykket.Uventet tegn.Uventet dott.Uventet slutt av CASE-uttrykketUventede karakterer på linje %sd.Uventet klausulrekkefølge.Uventet tegn.Ukjent endringsoperasjon.Ukjent datatype.Ukjent nøkkelord.Ukjent setningstype.Variabelnavn forventet.feil #1streng feildb/login/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.mo000064400000006647151502156020022016 0ustar00",/<*!$F*f c2Md<, $A&U|''""'=!Mo#) %4 Z *v 2  i Z x   9 0 !1 S r (  $ ' / )D n  /   + 3 N e ~    !"   %1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An opening bracket followed by a set of values was expected.At least one column definition was expected.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-11-25 14:44+0000 Last-Translator: Sevdimali İsa Language-Team: Azerbaijani Language: az MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.18-dev %1$d gözlənilirdi, amma %2$d tapıldı."RETURNS" açarsözü gözlənilirdi.Mötərizə gözlənilirdi.Vergül və ya mötərizə gözlənilirdi.Yenidən adlandırma əməliyyatı gözlənilirdi.Simvol adı gözlənilirdi!Bir simvol adı gözlənilirdi! Dırnaqsız reserv sözlər sütün adı olaraq istifadə edilə bilməz.Cədvəl adı gözlənilirdi.Alias gözlənilirdi.Daha öncə alias tapıldı.İfadə gözlənilməkdə.Mötərizə ardından bir qrup dəyər gözlənilməkdə.Ən az bir sütün açıqlaması gözlənilirdi."TO" açar sözü gözlənilirdi.İfadənin sonunda açar söz.Əksik ifadə.Daha öncə tranzaksiya başladılmadı.Hələki tətbiq edilməyib.Cədvəlin yeni adı gözlənilirdi.Cədvəlin köhnə adı gözlənilirdi.Bu seçim %1$s bununla zidiyyət təşkil edir.İfadənin gözlənilməz başlanğıcı.Gözlənilməyən simvol.Gözlənilməz nöqtə.Gözlənməz Böyük/Kiçik hərf ifadəsi sonuGözlənilməyən açar söz.Gözlənilməyən token.Kateqoriya olunmamış alter əməliyyatı.Tanınmayan verilən tipi.Tanınmayan açarsöz.Tanınmayan ifadə tipi.Dəyişən adı gözlənilirdi.xəta #1db/login/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.mo000064400000011073151502156020021761 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   ( 0 ) 8 _K *  | r     K&M.t4*'%Ci)}%%/ %=Dc- &F!c !+)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: phpMyAdmin-docs 4.0.0-dev Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-11-08 18:00+0000 Last-Translator: Thomas Artmann Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.18-dev %1$d Werte erwartet, aber %2$d gefunden.Ein „RETURNS“-Schlüsselwort wurde erwartet.Eine schließende Klammer wurde erwartet.Ein Komma oder eine schließende Klammer wurde erwartet.Eine neue Anweisung wurde gefunden, aber kein Trennzeichen zwischen ihm und dem vorhergehenden.Eine Umbenennungsoperation wurde erwartet.Ein Symbolname wurde erwartet!Ein Symbolname wurde erwartet! Ein reserviertes Schlüsselwort kann nicht ohne Backquotes als Tabellenname verwendet werden.Tabellenname wurde erwartet.Ein Alias wurde erwartet.Ein Alias wurde zuvor gefunden.Ein Ausdruck wurde erwartet.Ein Offset wurde erwartet.Eine öffnende Klammer, gefolgt von einer Liste von Werten, wurde erwartet.Eine öffnende Klammer wurde erwartet.Mindestens eine Felddefinition wurde erwartet.Schließendes Anführungszeichen %1$s wurde erzeugt.Erwartete Trennzeichen.Erwartete Whitespace vor dem Trennzeichen.Schlüsselwort „TO“ wurde erwartet.Schlüsselwort am Ende der Anweisung.Fehlender Ausdruck.Bisher wurde keine Transaktion gestartet.Noch nicht implementiert.Der Name der Entität wurde erwartet.Der neue Tabellenname wurde erwartet.Der ursprüngliche Tabellenname wurde erwartet.Diese Option widerspricht „%1$s“.Diese Art von Klausel ist in Mehr-Tabellen-Anfragen nicht zulässig.Diese Art von Klausel wurde zuvor analysiert.Unerwarteter Statement-Anfang.Unerwartetes Zeichen.Unerwarteter Punkt.Unerwartetes Ende eines CASE AusdrucksUnerwartetes Schlüsselwort.Unerwartete Datensatzanforderung.Unerwartetes Zeichen.Unerkannte ALTER-Operation.Unerkannter Datentyp.Unerkanntes Schlüsselwort.Unerkannte Statement-Typ.Variablenname wurde erwartet.Fehler #1strikter Fehlerdb/login/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.mo000064400000004462151502156020021773 0ustar00* 4*TL    <]}''"!+Mas/%M '[3Rm!     %1$d values were expected, but found %2$d.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!An alias was expected.An expression was expected.An opening bracket was expected.Ending quote %1$s was expected.Not implemented yet.The new name of the table was expected.The old name of the table was expected.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected token.Unrecognized alter operation.Unrecognized data type.Variable name was expected.Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-12-01 19:45+0000 Last-Translator: ekeimaja Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.18-dev Odotettiin arvoa %1$d , mutta löydettiin %2$d.Odotettiin sulkumerkkiä.Odotettiin pilkkua tai sulkumerkkiä.Löydettiin uusi lauseke, muttei erotinta sen ja sitä edeltäneen välillä.Odotettiin uudelleennimeämistoimintoa.Odotettiin symbolinimeä!Odotettiin aliasta.Odotettiin ilmaisua.Odotettiin avausmerkkiä.Odotettiin loppumerkkiä %1$s.Ei vielä toteutettu.Odotettiin uutta taulunimeä.Odotettiin vanhaa taulunimeä.Odottamaton ilmaisun alku.Odottamatton merkki.Odottamaton piste.Odottamaton loppu CASE-ilmaisulleOdottamaton avainsana.Odottamaton merkki.Tunnistamaton "alter"-toiminto.Tunnistamaton datatyyppi.Odotettiin muuttujaa.db/login/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.mo000064400000001017151502156020021770 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:03+0200 Last-Translator: Michal Čihař Language-Team: Nepali Language: ne MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.mo000064400000011151151502156020022374 0ustar00-=*! .*NLy cg< ),Jw( & G$\''"8*-"X{! ' ? U r   8 " ' 7$ Z\ % ! r r % 2  H&%o4=>'\. #'&*NGy1#,#>b%w'"6T \)(,'"%#-  $+ !  *&%1$d values were expected, but found %2$d.A "RETURNS" keyword was expected.A closing bracket was expected.A comma or a closing bracket was expected.A new statement was found, but no delimiter between it and the previous one.A rename operation was expected.A symbol name was expected!A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.A table name was expected.An alias was expected.An alias was previously found.An expression was expected.An offset was expected.An opening bracket followed by a set of values was expected.An opening bracket was expected.At least one column definition was expected.Ending quote %1$s was expected.Expected delimiter.Expected whitespace(s) before delimiter.Keyword "TO" was expected.Keyword at end of statement.Missing expression.No transaction was previously started.Not implemented yet.The name of the entity was expected.The new name of the table was expected.The old name of the table was expected.This option conflicts with "%1$s".This type of clause is not valid in Multi-table queries.This type of clause was previously parsed.Unexpected beginning of statement.Unexpected character.Unexpected dot.Unexpected end of CASE expressionUnexpected keyword.Unexpected ordering of clauses.Unexpected token.Unrecognized alter operation.Unrecognized data type.Unrecognized keyword.Unrecognized statement type.Variable name was expected.error #1strict errorProject-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2017-08-21 13:50+0000 Last-Translator: Daniel Palmeira Huanca Language-Team: Portuguese (Brazil) Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 2.17-dev Eram esperados %1$d valores, mas foram encontrados %2$d.Era esperado um comando "RETURNS".Era esperado um colchete de fechamento.Era esperado uma vírgula ou um colchete de fechamento.Uma nova declaração foi encontrada, porém não há delimitador entre esta e a anterior.Era esperado uma operação renomear.Era esperado um nome de símbolo!Era esperado um nome de símbolo! Um caracter reservado não pode ser usado como um nome de coluna sem apóstrofo.Era esperado um nome de tabela.Era esperado um nome de correlação.Um nome correlação foi encontrado anteriormente.Era esperado uma expressão.Era esperado um espaçamento.Era esperado um colchete de abertura seguido por um conjunto de valores.Era esperado um colchete de abertura.Era esperado a definição de pelo menos uma coluna.Era esperado fechar aspas %1$s.Esperado delimitador.Era(m) esperado(s) espaço(s) em branco antes do delimitador.Era esperado o caracter "TO".Palavra-chave no final da declaração.Faltando expressão.Nenhuma operação foi iniciada anteriormente.Ainda não implementado.Era esperado o nome da entidade.Era esperado o novo nome da tabela.Era esperado o nome anterior da tabela.Esta opção está em conflito com "%1$s".Este tipo de sentença não é válida em consultas à várias tabelas.Este tipo de sentença foi previamente analisado.Início de declaração inesperado.Caracter inesperado.Ponto inesperado.Final inesperado da expressão CASECaracter inesperado.Ordenamento de sentenças inesperado.Símbolo (token) inesperado.Operação de alteração desconhecida.Tipo de dado desconhecido.Comando desconhecido.Tipo de declaração desconhecido.Era perado nome de variável.erro #1Erro estritodb/login/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.mo000064400000001017151502156020021777 0ustar00$,89Project-Id-Version: SQL parser 0 Report-Msgid-Bugs-To: translators@phpmyadmin.net POT-Creation-Date: 2017-08-21 12:54+0200 PO-Revision-Date: 2015-10-15 11:26+0200 Last-Translator: Michal Čihař Language-Team: Basque Language: eu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 2.5-dev db/login/vendor/phpmyadmin/sql-parser/CODE_OF_CONDUCT.md000064400000006427151502156020016602 0ustar00# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at info@phpmyadmin.net. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq db/login/vendor/phpmyadmin/sql-parser/CHANGELOG.md000064400000026052151502156020015610 0ustar00# Change Log ## [4.7.1] - 2020-10-15 * Fix array_key_exists warning when parsing a "DEFAULT FALSE" token (#299) ## [4.7.0] - 2020-10-08 * EXISTS is also a function. (#297) * Remove some useless dev-dependencies * Fix lexer to not allow numbers with letters (#300) * Add support for INVISIBLE keyword (#292) * Fix the "$" might be a character used in a name (#301) * Fix use stream_select instead of non-blocking STDIN (#309) * Add select validation to a create view statement (#310) ## [4.6.1] - 2020-03-20 * Revert some changes with the understanding of ANSI_QUOTES mode and identifiers * Suggest motranslator 4.0 in README ## [4.6.0] - 2020-03-20 * Stop instanciating an object to check its class name. (#290) * Replace sscanf by equivalent native PHP functions because sscanf can be disabled for security reasons. (#270) * Allow phpunit 7 * Fix for php error when "INSERT INTO x SET a = 1" is "INSERT INTO x SET = 1" (#295) * Fixed lexer fails to detect "*" as a wildcard (#288) * Fixed ANSI_QUOTES support (#284) * Fixed parser mistakes with comments (#156) ## [4.5.0] - 2020-01-07 * Fix ALTER TABLE ... PRIMARY/UNIQUE KEY results in error (#267) * Prevent overwrite of offset in Limit clause by parenthesis (#275) * Allow SCHEMA to be used in CREATE Database statement (#231) * Add missing options in SET statement (#255) * Add support for DROP USER statement (#259) * Fix php error "undefined index" when replacing a non existing clause (#249) ## [4.4.0] - 2019-11-12 * Fix for PHP deprecations messages about implode for php 7.4+ (#258) * Parse CHECK keyword on table definition (#264) * Parse truncate statement (#221) * Fix wrong parsing of partitions (#265) ## [4.3.2] - 2019-06-03 * Fix redundant whitespaces in build() outputs (#228) * Fix incorrect error on DEFAULT keyword in ALTER operation (#229) * Fix incorrect outputs from Query::getClause (#233) * Add support for reading an SQL file from stdin * Fix for missing tokenize-query in Composer's vendor/bin/ directory * Fix for PHP warnings with an incomplete CASE expression (#241) * Fix for error message with multiple CALL statements (#223) * Recognize the question mark character as a parameter (#242) ## [4.3.1] - 2019-01-05 * Fixed incorrect error thrown on DEFAULT keyword in ALTER statement (#218) ## [4.3.0] - 2018-12-25 * Add support for aliases on CASE expressions (#162 and #192) * Add support for INDEX hints in SELECT statement (#199) * Add support for LOCK and UNLOCK TABLES statement (#180) * Add detection of extraneous comma in UPDATE statement (#160) * Add detection of a missing comma between two ALTER operations (#189) * Add missing support for STRAIGHT_JOIN (#196) * Add support for end options in SET statement (#190) * Fix building of RENAME statements (#201) * Add support for PURGE statements (#207) * Add support for COLLATE keyword (#190) ## [4.2.5] - 2018-10-31 * Fix issue with CREATE OR REPLACE VIEW. ## [4.2.4] - 2017-12-06 * Fix parsing of CREATE TABLE with per field COLLATE. * Improved Context::loadClosest to better deal with corner cases. * Localization updates. ## [4.2.3] - 2017-10-10 * Make mbstring extension optional (though Symfony polyfill). * Fixed build CREATE TABLE query with PARTITIONS having ENGINE but not VALUES. ## [4.2.2] - 2017-09-28 * Added support for binding parameters. ## [4.2.1] - 2017-09-08 * Fixed minor bug in Query::getFlags. * Localization updates. ## [4.2.0] - 2017-08-30 * Initial support for MariaDB SQL contexts. * Add support for MariaDB 10.3 INTERSECT and EXCEPT. ## [4.1.10] - 2017-08-21 * Use custom LoaderException for context loading errors. ## [4.1.9] - 2017-07-12 * Various code cleanups. * Improved error handling of several invalid statements. ## [4.1.8] - 2017-07-09 * Fixed parsing SQL comment at the end of query. * Improved handing of non utf-8 strings. * Added query flag for SET queries. ## [4.1.7] - 2017-06-06 * Fixed setting combination SQL Modes. ## [4.1.6] - 2017-06-01 * Fixed building query with GROUP BY clause. ## [4.1.5] - 2017-05-15 * Fixed invalid lexing of queries with : in strings. * Properly handle maximal length of delimiter. ## [4.1.4] - 2017-05-05 * Fixed wrong extract of string tokens with escaped characters. * Properly handle lowercase begin statement. ## [4.1.3] - 2017-04-06 * Added support for DELETE ... JOIN clauses. * Changed BufferedQuery to include comments in output. * Fixed parsing of inline comments. ## [4.1.2] - 2017-02-20 * Coding style improvements. * Chinese localization. * Improved order validatin for JOIN clauses. * Improved pretty printing of JOIN clauses. * Added support for LOAD DATA statements. ## [4.1.1] - 2017-02-07 * Localization using phpmyadmin/motranslator is now optional. * Improved testsuite. * Better handling of non upper cased not reserved keywords. * Minor performance and coding style improvements. ## [4.1.0] - 2017-01-23 * Use phpmyadmin/motranslator to localize messages. ## [4.0.1] - 2017-01-23 * Fixed CLI wrappers for new API. * Fixed README for new API. ## [4.0.0] - 2017-01-23 * Added PhpMyAdmin namespace prefix to follow PSR-4. ## [3.4.17] - 2017-01-20 * Coding style fixes. * Fixed indentation in HTML formatting. * Fixed parsing of unterminated variables. * Improved comments lexing. ## [3.4.16] - 2017-01-06 * Coding style fixes. * Properly handle operators AND, NOT, OR, XOR, DIV, MOD ## [3.4.15] - 2017-01-02 * Fix return value of Formatter.toString() when type is text * Fix parsing of FIELDS and LINES options in SELECT..INTO * PHP 7.2 compatibility. * Better parameter passing to query formatter. ## [3.4.14] - 2016-11-30 * Improved parsing of UNION queries. * Recognize BINARY function. ## [3.4.13] - 2016-11-15 * Fix broken incorrect clause order detection for Joins. * Add parsing of end options in Select statements. ## [3.4.12] - 2016-11-09 * Added verification order of SELECT statement clauses. ## [3.4.11] - 2016-10-25 * Fixed parsing of ON UPDATE option in field definition of TIMESTAMP type with precision * Fixed parsing of NATURAL JOIN, CROSS JOIN and related joins. * Fixed parsing of BEGIN/END labels. ## [3.4.10] - 2016-10-03 * Fixed API regression on DELETE statement ## [3.4.9] - 2016-10-03 * Added support for CASE expressions * Support for parsing and building DELETE statement * Support for parsing subqueries in FROM clause ## [3.4.8] - 2016-09-22 * No change release to sync GitHub releases with Packagist ## [3.4.7] - 2016-09-20 * Fix parsing of DEFINER without backquotes * Fixed escaping HTML entities in HTML formatter * Fixed escaping of control chars in CLI formatter ## [3.4.6] - 2016-09-13 * Fix parsing of REPLACE INTO ... * Fix parsing of INSERT ... ON DUPLICATE KEY UPDATE ... * Extended testsuite * Re-enabled PHP 5.3 support ## [3.4.5] - 2016-09-13 * Fix parsing of INSERT...SELECT and INSERT...SET syntax * Fix parsing of CREATE TABLE ... PARTITION * Fix parsing of SET CHARACTER SET, CHARSET, NAMES * Add Support for 'CREATE TABLE `table_copy` LIKE `table` ## [3.4.4] - 2016-04-26 * Add support for FULL OUTER JOIN ## [3.4.3] - 2016-04-19 * Fix parsing of query with \ ## [3.4.2] - 2016-04-07 * Recognize UNION DISTINCT * Recognize REGEXP and RLIKE operators ## [3.4.1] - 2016-04-06 * Add FULLTEXT and SPATIAL keywords * Properly parse CREATE TABLE [AS] SELECT * Fix parsing of table with DEFAULT and COMMENT ## [3.4.0] - 2016-02-23 * Fix parsing DEFAULT value on CREATE * Fix parsing of ALTER VIEW ## [3.3.1] - 2016-02-12 * Condition: Allow keyword `INTERVAL`. ## [3.3.0] - 2016-02-12 * Expression: Refactored parsing options. ## [3.2.0] - 2016-02-11 * Context: Added custom mode that avoids escaping when possible. ## [3.1.0] - 2016-02-10 * ArrayObj: Handle more complex expressions in arrays. * BufferedQuery: Backslashes in comments escaped characters in comments. * Condition: Allow `IF` in conditions. * Context: Add `;` as operator. * Context: Updated contexts to contain `BIT` data type. * CreateStatement: The `DEFAULT` option may be an expression. * DescribeStatement: Added `DESC` as alias for `DESCRIBE`. * Expression: Rewrote expression parsing. * Misc: Added PHPUnit's Code Coverage 3.0 as a dependency. * Misc: Added support for PHP 5.4 back. * Misc: Removed dependency to Ctype. * Misc: Repository transferred from @udan11 to @phpMyAdmin. * Misc: Updated `.gitignore` to ignore `composer.lock`. * Misc: Updated Composer and Travis configuration for PHP 7 and PHPUnit 5. * Tools: Documented tags in `ContextGenerator`. ## [3.0.8] - 2015-12-18 * Allow `NULL` in expressions. * Downgraded PHPUnit to 4.8. Removed old PHP versions. * Updated PHPUnit to 5.1 and fixed some of the tests. * Added `UNION ALL` as a type of `UNION`. * Expressions are permitted in `SET` operations. * Added `STRAIGHT_JOIN` as a known type of join. * Added missing definitions for `MATCH` and `AGAINST`. * Added missing statement (`FLUSH` and `DEALLOCATE`). ## [3.0.7] - 2015-11-12 * Expressions may begin with a function that is also a reserved keyword (e.g. `IF`). ## [3.0.6] - 2015-11-12 * Fixed a bug where formatter split the function name and the parameters list. ## [3.0.5] - 2015-11-08 * Add GRANT as known statement. * Use JOIN expressions for flag detection. * Fix the order of clauses in SELECT statements involving UNIONs. * Added dummy parsers for CREATE USER and SET PASSWORD statements. * Accept NOT operator in conditions. * Fixed DELIMITER statements in BufferedQuery. * Added INSERT statement builder. ## [3.0.4] - 2015-10-21 * Fix error message in `SqlParser\Components\OptionsArray`. ## [3.0.3] - 2015-10-10 * Avoid building a field multiple times if clause has synonyms. ## [3.0.2] - 2015-10-10 * Add EXISTS as an acceptable keyword in conditions. ## [3.0.1] - 2015-10-06 * Handle backslashes separately for `SqlParser\Utils\BufferedQuery`. Fixes a bug where backslashes in combination with strings weren't handled properly. ## [3.0.0] - 2015-10-02 __Breaking changes:__ * `SqlParser\Components\Reference::$table` is now an instance of `SqlParser\Components\Expression` to support references from other tables. ## [2.1.3] - 2015-10-02 * Add definitions for all JOIN clauses. ## [2.1.2] - 2015-10-02 * Properly parse options when the value of the option is '='. ## [2.1.1] - 2015-09-30 * Only RANGE and LIST type partitions support VALUES. ## [2.1.0] - 2015-09-30 * Added utilities for handling tokens and tokens list. ## [2.0.3] - 2015-09-30 * Added missing NOT IN operator. This caused troubles when parsing conditions that contained the `NOT IN` operator. ## [2.0.2] - 2015-09-30 * Added support for `OUTER` as an optional keyword in joins. ## [2.0.1] - 2015-09-30 * Fixed a bug related to (sub)partitions options not being included in the built component. Also, the option `ENGINE` was unrecognized. ## [2.0.0] - 2015-09-25 * Better parsing for CREATE TABLE statements (related to breaking change 1). * Added support for JSON data type. * Refactoring and minor documentation improvements. __Breaking changes:__ * `SqlParser\Components\Key::$columns` is now an array of arrays. Each array must contain a `name` key which represents the name of the column and an optional `length` key which represents the length of the column. ## [1.0.0] - 2015-08-20 * First release of this library. db/login/vendor/phpmyadmin/sql-parser/CONTRIBUTING.md000064400000002203151502156020016220 0ustar00# Contributing to SQL Parser ## Reporting issues Our issue tracker is hosted at GitHub: https://github.com/phpmyadmin/sql-parser/issues Please search for existing issues before reporting new ones. ## Working with Git checkout The dependencies are managed by Composer, to get them all installed (or update on consequent runs) do: ``` composer update ``` ## Submitting patches Please submit your patches using GitHub pull requests, this allows us to review them and to run automated tests on the code. ## Coding standards We do follow PSR-1 and PSR-2 coding standards. You can use phpcbf to fix the code to match our expectations: ``` ./vendor/bin/phpcbf ``` ## Testsuite Our code comes with quite comprehensive testsuite, it is automatically executed on every commit and pull request, you can also run it locally: ``` ./vendor/bin/phpunit ``` The testsuite relies on fixtures of parser states, in case you need to regenerate some of these there are helper scripts in tools directory: ``` # Remove file you want to regenerate rm tests/data/parser/parse.out # Run the generator located in the tools directory ./tools/run_generators.sh ``` db/login/vendor/phpmyadmin/sql-parser/phpunit.xml.dist000064400000003155151502156020017151 0ustar00 ./tests/Builder ./tests/Components ./tests/Lexer ./tests/Misc ./tests/Parser ./tests/Utils src/ db/login/vendor/phpmyadmin/sql-parser/LICENSE.txt000064400000043254151502156020015625 0ustar00 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. db/login/vendor/phpmyadmin/shapefile/README.md000064400000003663151502156020015130 0ustar00# shapefile ShapeFile library for PHP [![Build Status](https://travis-ci.org/phpmyadmin/shapefile.svg?branch=master)](https://travis-ci.org/phpmyadmin/shapefile) [![codecov.io](https://codecov.io/github/phpmyadmin/shapefile/coverage.svg?branch=master)](https://codecov.io/github/phpmyadmin/shapefile?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpmyadmin/shapefile/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/shapefile/?branch=master) [![Packagist](https://img.shields.io/packagist/dt/phpmyadmin/shapefile.svg)](https://packagist.org/packages/phpmyadmin/shapefile) ## Features Currently the 2D and 3D variants except MultiPatch of the ShapeFile format as defined in https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf. The library currently supports reading and editing of ShapeFiles and the Associated information (DBF file). There are a lot of things that can be improved in the code, if you are interested in developing, helping with the documentation, making translations or offering new ideas please contact us. ## Installation Please use [Composer][1] to install: ``` composer require phpmyadmin/shapefile ``` To be able to read and write the associated DBF file, you need ``dbase`` extension: ``` pecl install dbase echo "extension=dbase.so" > /etc/php5/conf.d/dbase.ini ``` ## Documentation The API documentation is available at . ## Usage To read shape file: ```php $shp = new \PhpMyAdmin\ShapeFile\ShapeFile(0); $shp->loadFromFile('path/file.*'); ``` ## History This library is based on BytesFall ShapeFiles library written by Ovidio (ovidio AT users.sourceforge.net). The library has been embedded in phpMyAdmin for years and slowly developed there. At one point people started to use our version rather than the original library and that was the point we decided to make it separate package. [1]:https://getcomposer.org/ db/login/vendor/phpmyadmin/shapefile/codecov.yml000064400000000066151502156020016010 0ustar00comment: layout: header, changes, diff coverage: {} db/login/vendor/phpmyadmin/shapefile/composer.json000064400000001652151502156020016367 0ustar00{ "name": "phpmyadmin/shapefile", "description": "ESRI ShapeFile library for PHP", "license": "GPL-2.0+", "keywords": ["shapefile", "shp", "geo", "geospatial", "dbf", "ESRI", "shape"], "homepage": "https://github.com/phpmyadmin/shapefile", "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "support": { "issues": "https://github.com/phpmyadmin/shapefile/issues", "source": "https://github.com/phpmyadmin/shapefile" }, "require": { "php": ">=5.4.0" }, "suggest": { "ext-dbase": "For dbf files parsing" }, "require-dev": { "phpunit/php-code-coverage": "*", "phpunit/phpunit": "~4.8 || ~5.7" }, "autoload": { "psr-4": { "PhpMyAdmin\\ShapeFile\\": "src" } } } db/login/vendor/phpmyadmin/shapefile/src/Util.php000064400000005441151502156020016062 0ustar00. * * Copyright 2006-2007 Ovidio * Copyright 2016 - 2017 Michal Čihař * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, you can download one from * https://www.gnu.org/copyleft/gpl.html. */ namespace PhpMyAdmin\ShapeFile; class Util { private static $little_endian = null; private static $shape_names = array( 0 => 'Null Shape', 1 => 'Point', 3 => 'PolyLine', 5 => 'Polygon', 8 => 'MultiPoint', 11 => 'PointZ', 13 => 'PolyLineZ', 15 => 'PolygonZ', 18 => 'MultiPointZ', 21 => 'PointM', 23 => 'PolyLineM', 25 => 'PolygonM', 28 => 'MultiPointM', 31 => 'MultiPatch', ); /** * Reads data. * * @param string $type type for unpack() * @param string $data Data to process * * @return mixed */ public static function loadData($type, $data) { if ($data === false || strlen($data) == 0) { return false; } $tmp = unpack($type, $data); return current($tmp); } /** * Changes endianity. * * @param string $binValue Binary value * * @return string */ public static function swap($binValue) { $result = $binValue[strlen($binValue) - 1]; for ($i = strlen($binValue) - 2; $i >= 0; --$i) { $result .= $binValue[$i]; } return $result; } /** * Encodes double value to correct endianity. * * @param float $value Value to pack * * @return string */ public static function packDouble($value) { $bin = pack('d', (float) $value); if (is_null(self::$little_endian)) { self::$little_endian = (pack('L', 1) == pack('V', 1)); } if (self::$little_endian) { return $bin; } return self::swap($bin); } /** * Returns shape name. * * @param int $type * * @return string */ public static function nameShape($type) { if (isset(self::$shape_names[$type])) { return self::$shape_names[$type]; } return sprintf('Shape %d', $type); } } db/login/vendor/phpmyadmin/shapefile/src/ShapeFile.php000064400000042743151502156020017013 0ustar00. * * Copyright 2006-2007 Ovidio * Copyright 2016 - 2017 Michal Čihař * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, you can download one from * https://www.gnu.org/copyleft/gpl.html. */ namespace PhpMyAdmin\ShapeFile; /** * ShapeFile class. */ class ShapeFile { const MAGIC = 0x270a; public $FileName; private $SHPFile = null; private $SHXFile = null; private $DBFFile = null; private $DBFHeader; public $lastError = ''; public $boundingBox = array('xmin' => 0.0, 'ymin' => 0.0, 'xmax' => 0.0, 'ymax' => 0.0); private $fileLength = 0; public $shapeType = 0; public $records = array(); /** * Checks whether dbase manipuations are supported. * * @return bool */ public static function supports_dbase() { return extension_loaded('dbase'); } /** * @param int $shapeType File shape type, should be same as all records * @param array $boundingBox File bounding box * @param null|mixed $FileName File name */ public function __construct($shapeType, $boundingBox = array('xmin' => 0.0, 'ymin' => 0.0, 'xmax' => 0.0, 'ymax' => 0.0), $FileName = null) { $this->shapeType = $shapeType; $this->boundingBox = $boundingBox; $this->FileName = $FileName; $this->fileLength = 50; // The value for file length is the total length of the file in 16-bit words (including the fifty 16-bit words that make up the header). } /** * Loads shapefile and dbase (if supported). * * @param string $FileName File mask to load (eg. example.*) */ public function loadFromFile($FileName) { if (!empty($FileName)) { $this->FileName = $FileName; $result = $this->_openSHPFile(); } else { /* We operate on buffer emulated by readSHP / eofSHP */ $result = true; } if ($result && ($this->_openDBFFile())) { if (!$this->_loadHeaders()) { $this->_closeSHPFile(); $this->_closeDBFFile(); return false; } if (!$this->_loadRecords()) { $this->_closeSHPFile(); $this->_closeDBFFile(); return false; } $this->_closeSHPFile(); $this->_closeDBFFile(); return true; } return false; } /** * Saves shapefile. * * @param string|null $FileName Name of file, otherwise existing is used */ public function saveToFile($FileName = null) { if (!is_null($FileName)) { $this->FileName = $FileName; } if (($this->_openSHPFile(true)) && ($this->_openSHXFile(true)) && ($this->_createDBFFile())) { $this->_saveHeaders(); $this->_saveRecords(); $this->_closeSHPFile(); $this->_closeSHXFile(); $this->_closeDBFFile(); } else { return false; } } /** * Generates filename with given extension. * * @param string $extension Extension to use (including dot) * * @return string */ private function _getFilename($extension) { return str_replace('.*', $extension, $this->FileName); } /** * Updates bounding box based on SHPData. * * @param string $type Type of box * @param array $data ShapeRecord SHPData */ private function updateBBox($type, $data) { $min = $type . 'min'; $max = $type . 'max'; if (!isset($this->boundingBox[$min]) || $this->boundingBox[$min] == 0.0 || ($this->boundingBox[$min] > $data[$min])) { $this->boundingBox[$min] = $data[$min]; } if (!isset($this->boundingBox[$max]) || $this->boundingBox[$max] == 0.0 || ($this->boundingBox[$max] < $data[$max])) { $this->boundingBox[$max] = $data[$max]; } } /** * Adds record to shape file. * * @param ShapeRecord $record * * @return int Number of added record */ public function addRecord($record) { if ((isset($this->DBFHeader)) && (is_array($this->DBFHeader))) { $record->updateDBFInfo($this->DBFHeader); } $this->fileLength += ($record->getContentLength() + 4); $this->records[] = $record; $this->records[count($this->records) - 1]->recordNumber = count($this->records); $this->updateBBox('x', $record->SHPData); $this->updateBBox('y', $record->SHPData); if (in_array($this->shapeType, array(11, 13, 15, 18, 21, 23, 25, 28))) { $this->updateBBox('m', $record->SHPData); } if (in_array($this->shapeType, array(11, 13, 15, 18))) { $this->updateBBox('z', $record->SHPData); } return count($this->records) - 1; } /** * Deletes record from shapefile. * * @param int $index */ public function deleteRecord($index) { if (isset($this->records[$index])) { $this->fileLength -= ($this->records[$index]->getContentLength() + 4); $count = count($this->records) - 1; for ($i = $index; $i < $count; ++$i) { $this->records[$i] = $this->records[$i + 1]; } unset($this->records[count($this->records) - 1]); $this->_deleteRecordFromDBF($index); } } /** * Returns array defining fields in DBF file. * * @return array see setDBFHeader for more information */ public function getDBFHeader() { return $this->DBFHeader; } /** * Changes array defining fields in DBF file, used in dbase_create call. * * @param array $header An array of arrays, each array describing the * format of one field of the database. Each * field consists of a name, a character indicating * the field type, and optionally, a length, * a precision and a nullable flag. */ public function setDBFHeader($header) { $this->DBFHeader = $header; $count = count($this->records); for ($i = 0; $i < $count; ++$i) { $this->records[$i]->updateDBFInfo($header); } } /** * Lookups value in the DBF file and returs index. * * @param string $field Field to match * @param mixed $value Value to match * * @return int */ public function getIndexFromDBFData($field, $value) { foreach ($this->records as $index => $record) { if (isset($record->DBFData[$field]) && (trim(strtoupper($record->DBFData[$field])) == strtoupper($value)) ) { return $index; } } return -1; } /** * Loads DBF metadata. */ private function _loadDBFHeader() { $DBFFile = fopen($this->_getFilename('.dbf'), 'r'); $result = array(); $i = 1; $inHeader = true; while ($inHeader) { if (!feof($DBFFile)) { $buff32 = fread($DBFFile, 32); if ($i > 1) { if (substr($buff32, 0, 1) == chr(13)) { $inHeader = false; } else { $pos = strpos(substr($buff32, 0, 10), chr(0)); $pos = ($pos == 0 ? 10 : $pos); $fieldName = substr($buff32, 0, $pos); $fieldType = substr($buff32, 11, 1); $fieldLen = ord(substr($buff32, 16, 1)); $fieldDec = ord(substr($buff32, 17, 1)); array_push($result, array($fieldName, $fieldType, $fieldLen, $fieldDec)); } } ++$i; } else { $inHeader = false; } } fclose($DBFFile); return $result; } /** * Deletes record from the DBF file. * * @param int $index */ private function _deleteRecordFromDBF($index) { if (@dbase_delete_record($this->DBFFile, $index)) { dbase_pack($this->DBFFile); } } /** * Loads SHP file metadata. * * @return bool */ private function _loadHeaders() { if (Util::loadData('N', $this->readSHP(4)) != self::MAGIC) { $this->setError('Not a SHP file (file code mismatch)'); return false; } /* Skip 20 unused bytes */ $this->readSHP(20); $this->fileLength = Util::loadData('N', $this->readSHP(4)); /* We currently ignore version */ $this->readSHP(4); $this->shapeType = Util::loadData('V', $this->readSHP(4)); $this->boundingBox = array(); $this->boundingBox['xmin'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['ymin'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['xmax'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['ymax'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['zmin'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['zmax'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['mmin'] = Util::loadData('d', $this->readSHP(8)); $this->boundingBox['mmax'] = Util::loadData('d', $this->readSHP(8)); if (self::supports_dbase()) { $this->DBFHeader = $this->_loadDBFHeader(); } return true; } /** * Saves bounding box record, possibly using 0 instead of not set values. * * @param file $file File object * @param string $type Bounding box dimension (eg. xmax, mmin...) */ private function _saveBBoxRecord($file, $type) { fwrite($file, Util::packDouble( isset($this->boundingBox[$type]) ? $this->boundingBox[$type] : 0) ); } /** * Saves bounding box to a file. * * @param file $file File object */ private function _saveBBox($file) { $this->_saveBBoxRecord($file, 'xmin'); $this->_saveBBoxRecord($file, 'ymin'); $this->_saveBBoxRecord($file, 'xmax'); $this->_saveBBoxRecord($file, 'ymax'); $this->_saveBBoxRecord($file, 'zmin'); $this->_saveBBoxRecord($file, 'zmax'); $this->_saveBBoxRecord($file, 'mmin'); $this->_saveBBoxRecord($file, 'mmax'); } /** * Saves SHP and SHX file metadata. */ private function _saveHeaders() { fwrite($this->SHPFile, pack('NNNNNN', self::MAGIC, 0, 0, 0, 0, 0)); fwrite($this->SHPFile, pack('N', $this->fileLength)); fwrite($this->SHPFile, pack('V', 1000)); fwrite($this->SHPFile, pack('V', $this->shapeType)); $this->_saveBBox($this->SHPFile); fwrite($this->SHXFile, pack('NNNNNN', self::MAGIC, 0, 0, 0, 0, 0)); fwrite($this->SHXFile, pack('N', 50 + 4 * count($this->records))); fwrite($this->SHXFile, pack('V', 1000)); fwrite($this->SHXFile, pack('V', $this->shapeType)); $this->_saveBBox($this->SHXFile); } /** * Loads records from SHP file (and DBF). * * @return bool */ private function _loadRecords() { /* Need to start at offset 100 */ while (!$this->eofSHP()) { $record = new ShapeRecord(-1); $record->loadFromFile($this, $this->SHPFile, $this->DBFFile); if ($record->lastError != '') { $this->setError($record->lastError); return false; } if (($record->shapeType === false || $record->shapeType === '') && $this->eofSHP()) { break; } $this->records[] = $record; } return true; } /** * Saves records to SHP and SHX files. */ private function _saveRecords() { $offset = 50; if (is_array($this->records) && (count($this->records) > 0)) { foreach ($this->records as $index => $record) { //Save the record to the .shp file $record->saveToFile($this->SHPFile, $this->DBFFile, $index + 1); //Save the record to the .shx file fwrite($this->SHXFile, pack('N', $offset)); fwrite($this->SHXFile, pack('N', $record->getContentLength())); $offset += (4 + $record->getContentLength()); } } } /** * Generic interface to open files. * * @param bool $toWrite Whether file should be opened for writing * @param string $extension File extension * @param string $name Verbose file name to report errors * * @return file|false File handle */ private function _openFile($toWrite, $extension, $name) { $shp_name = $this->_getFilename($extension); $result = @fopen($shp_name, ($toWrite ? 'wb+' : 'rb')); if (!$result) { $this->setError(sprintf('It wasn\'t possible to open the %s file "%s"', $name, $shp_name)); return false; } return $result; } /** * Opens SHP file. * * @param bool $toWrite Whether file should be opened for writing * * @return bool */ private function _openSHPFile($toWrite = false) { $this->SHPFile = $this->_openFile($toWrite, '.shp', 'Shape'); if (!$this->SHPFile) { return false; } return true; } /** * Closes SHP file. */ private function _closeSHPFile() { if ($this->SHPFile) { fclose($this->SHPFile); $this->SHPFile = null; } } /** * Opens SHX file. * * @param bool $toWrite Whether file should be opened for writing * * @return bool */ private function _openSHXFile($toWrite = false) { $this->SHXFile = $this->_openFile($toWrite, '.shx', 'Index'); if (!$this->SHXFile) { return false; } return true; } /** * Closes SHX file. */ private function _closeSHXFile() { if ($this->SHXFile) { fclose($this->SHXFile); $this->SHXFile = null; } } /** * Creates DBF file. * * @return bool */ private function _createDBFFile() { if (!self::supports_dbase() || !is_array($this->DBFHeader) || count($this->DBFHeader) == 0) { $this->DBFFile = null; return true; } $dbf_name = $this->_getFilename('.dbf'); /* Unlink existing file */ if (file_exists($dbf_name)) { unlink($dbf_name); } /* Create new file */ $this->DBFFile = @dbase_create($dbf_name, $this->DBFHeader); if ($this->DBFFile === false) { $this->setError(sprintf('It wasn\'t possible to create the DBase file "%s"', $dbf_name)); return false; } return true; } /** * Loads DBF file if supported. * * @return bool */ private function _openDBFFile() { if (!self::supports_dbase()) { $this->DBFFile = null; return true; } $dbf_name = $this->_getFilename('.dbf'); if (is_readable($dbf_name)) { $this->DBFFile = @dbase_open($dbf_name, 0); if (!$this->DBFFile) { $this->setError(sprintf('It wasn\'t possible to open the DBase file "%s"', $dbf_name)); return false; } } else { $this->setError(sprintf('It wasn\'t possible to find the DBase file "%s"', $dbf_name)); return false; } return true; } /** * Closes DBF file. */ private function _closeDBFFile() { if ($this->DBFFile) { dbase_close($this->DBFFile); $this->DBFFile = null; } } /** * Sets error message. * * @param string $error */ public function setError($error) { $this->lastError = $error; } /** * Reads given number of bytes from SHP file. * * @param int $bytes * * @return string */ public function readSHP($bytes) { return fread($this->SHPFile, $bytes); } /** * Checks whether file is at EOF. * * @return bool */ public function eofSHP() { return feof($this->SHPFile); } /** * Returns shape name. * * @return string */ public function getShapeName() { return Util::nameShape($this->shapeType); } /** * Check whether file contains measure data. * * For some reason this is distinguished by zero bounding box in the * specification. * * @return bool */ public function hasMeasure() { return $this->boundingBox['mmin'] != 0 || $this->boundingBox['mmax'] != 0; } } db/login/vendor/phpmyadmin/shapefile/src/ShapeRecord.php000064400000060466151502156020017354 0ustar00. * * Copyright 2006-2007 Ovidio * Copyright 2016 - 2017 Michal Čihař * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, you can download one from * https://www.gnu.org/copyleft/gpl.html. */ namespace PhpMyAdmin\ShapeFile; /** * ShapeFile record class. */ class ShapeRecord { private $SHPFile = null; private $DBFFile = null; private $ShapeFile = null; private $size = 0; private $read = 0; public $recordNumber = null; public $shapeType = null; public $lastError = ''; public $SHPData = array(); public $DBFData = array(); /** * @param int $shapeType */ public function __construct($shapeType) { $this->shapeType = $shapeType; } /** * Loads record from files. * * @param ShapeFile $ShapeFile * @param file &$SHPFile Opened SHP file * @param file &$DBFFile Opened DBF file */ public function loadFromFile(&$ShapeFile, &$SHPFile, &$DBFFile) { $this->ShapeFile = $ShapeFile; $this->SHPFile = $SHPFile; $this->DBFFile = $DBFFile; $this->_loadHeaders(); /* No header read */ if ($this->read == 0) { return; } switch ($this->shapeType) { case 0: $this->_loadNullRecord(); break; case 1: $this->_loadPointRecord(); break; case 21: $this->_loadPointMRecord(); break; case 11: $this->_loadPointZRecord(); break; case 3: $this->_loadPolyLineRecord(); break; case 23: $this->_loadPolyLineMRecord(); break; case 13: $this->_loadPolyLineZRecord(); break; case 5: $this->_loadPolygonRecord(); break; case 25: $this->_loadPolygonMRecord(); break; case 15: $this->_loadPolygonZRecord(); break; case 8: $this->_loadMultiPointRecord(); break; case 28: $this->_loadMultiPointMRecord(); break; case 18: $this->_loadMultiPointZRecord(); break; default: $this->setError(sprintf('The Shape Type "%s" is not supported.', $this->shapeType)); break; } /* We need to skip rest of the record */ while ($this->read < $this->size) { $this->_loadData('V', 4); } /* Check if we didn't read too much */ if ($this->read != $this->size) { $this->setError(sprintf('Failed to parse record, read=%d, size=%d', $this->read, $this->size)); } if (ShapeFile::supports_dbase() && isset($this->DBFFile)) { $this->_loadDBFData(); } } /** * Saves record to files. * * @param file &$SHPFile Opened SHP file * @param file &$DBFFile Opened DBF file * @param int $recordNumber Record number */ public function saveToFile(&$SHPFile, &$DBFFile, $recordNumber) { $this->SHPFile = $SHPFile; $this->DBFFile = $DBFFile; $this->recordNumber = $recordNumber; $this->_saveHeaders(); switch ($this->shapeType) { case 0: // Nothing to save break; case 1: $this->_savePointRecord(); break; case 21: $this->_savePointMRecord(); break; case 11: $this->_savePointZRecord(); break; case 3: $this->_savePolyLineRecord(); break; case 23: $this->_savePolyLineMRecord(); break; case 13: $this->_savePolyLineZRecord(); break; case 5: $this->_savePolygonRecord(); break; case 25: $this->_savePolygonMRecord(); break; case 15: $this->_savePolygonZRecord(); break; case 8: $this->_saveMultiPointRecord(); break; case 28: $this->_saveMultiPointMRecord(); break; case 18: $this->_saveMultiPointZRecord(); break; default: $this->setError(sprintf('The Shape Type "%s" is not supported.', $this->shapeType)); break; } if (ShapeFile::supports_dbase() && !is_null($this->DBFFile)) { $this->_saveDBFData(); } } /** * Updates DBF data to match header. * * @param array $header DBF structure header */ public function updateDBFInfo($header) { $tmp = $this->DBFData; unset($this->DBFData); $this->DBFData = array(); foreach ($header as $value) { $this->DBFData[$value[0]] = (isset($tmp[$value[0]])) ? $tmp[$value[0]] : ''; } } /** * Reads data. * * @param string $type type for unpack() * @param int $count number of bytes * * @return mixed */ private function _loadData($type, $count) { $data = $this->ShapeFile->readSHP($count); if ($data === false) { return false; } $this->read += strlen($data); return Util::loadData($type, $data); } /** * Loads metadata header from a file. */ private function _loadHeaders() { $this->shapeType = false; $this->recordNumber = $this->_loadData('N', 4); if ($this->recordNumber === false) { return; } // We read the length of the record $this->size = $this->_loadData('N', 4); if ($this->size === false) { return; } $this->size = $this->size * 2 + 8; $this->shapeType = $this->_loadData('V', 4); } /** * Saves metadata header to a file. */ private function _saveHeaders() { fwrite($this->SHPFile, pack('N', $this->recordNumber)); fwrite($this->SHPFile, pack('N', $this->getContentLength())); fwrite($this->SHPFile, pack('V', $this->shapeType)); } private function _loadPoint() { $data = array(); $data['x'] = $this->_loadData('d', 8); $data['y'] = $this->_loadData('d', 8); return $data; } private function _loadPointM() { $data = $this->_loadPoint(); $data['m'] = $this->_loadData('d', 8); return $data; } private function _loadPointZ() { $data = $this->_loadPoint(); $data['z'] = $this->_loadData('d', 8); $data['m'] = $this->_loadData('d', 8); return $data; } private function _savePoint($data) { fwrite($this->SHPFile, Util::packDouble($data['x'])); fwrite($this->SHPFile, Util::packDouble($data['y'])); } private function _savePointM($data) { fwrite($this->SHPFile, Util::packDouble($data['x'])); fwrite($this->SHPFile, Util::packDouble($data['y'])); fwrite($this->SHPFile, Util::packDouble($data['m'])); } private function _savePointZ($data) { fwrite($this->SHPFile, Util::packDouble($data['x'])); fwrite($this->SHPFile, Util::packDouble($data['y'])); fwrite($this->SHPFile, Util::packDouble($data['z'])); fwrite($this->SHPFile, Util::packDouble($data['m'])); } private function _loadNullRecord() { $this->SHPData = array(); } private function _loadPointRecord() { $this->SHPData = $this->_loadPoint(); } private function _loadPointMRecord() { $this->SHPData = $this->_loadPointM(); } private function _loadPointZRecord() { $this->SHPData = $this->_loadPointZ(); } private function _savePointRecord() { $this->_savePoint($this->SHPData); } private function _savePointMRecord() { $this->_savePointM($this->SHPData); } private function _savePointZRecord() { $this->_savePointZ($this->SHPData); } private function _loadBBox() { $this->SHPData['xmin'] = $this->_loadData('d', 8); $this->SHPData['ymin'] = $this->_loadData('d', 8); $this->SHPData['xmax'] = $this->_loadData('d', 8); $this->SHPData['ymax'] = $this->_loadData('d', 8); } private function _loadMultiPointRecord() { $this->SHPData = array(); $this->_loadBBox(); $this->SHPData['numpoints'] = $this->_loadData('V', 4); for ($i = 0; $i < $this->SHPData['numpoints']; ++$i) { $this->SHPData['points'][] = $this->_loadPoint(); } } /** * @param string $type */ private function _loadMultiPointMZRecord($type) { /* The m dimension is optional, depends on bounding box data */ if ($type == 'm' && !$this->ShapeFile->hasMeasure()) { return; } $this->SHPData[$type . 'min'] = $this->_loadData('d', 8); $this->SHPData[$type . 'max'] = $this->_loadData('d', 8); for ($i = 0; $i < $this->SHPData['numpoints']; ++$i) { $this->SHPData['points'][$i][$type] = $this->_loadData('d', 8); } } private function _loadMultiPointMRecord() { $this->_loadMultiPointRecord(); $this->_loadMultiPointMZRecord('m'); } private function _loadMultiPointZRecord() { $this->_loadMultiPointRecord(); $this->_loadMultiPointMZRecord('z'); $this->_loadMultiPointMZRecord('m'); } private function _saveMultiPointRecord() { fwrite($this->SHPFile, pack('dddd', $this->SHPData['xmin'], $this->SHPData['ymin'], $this->SHPData['xmax'], $this->SHPData['ymax'])); fwrite($this->SHPFile, pack('V', $this->SHPData['numpoints'])); for ($i = 0; $i < $this->SHPData['numpoints']; ++$i) { $this->_savePoint($this->SHPData['points'][$i]); } } /** * @param string $type */ private function _saveMultiPointMZRecord($type) { fwrite($this->SHPFile, pack('dd', $this->SHPData[$type . 'min'], $this->SHPData[$type . 'max'])); for ($i = 0; $i < $this->SHPData['numpoints']; ++$i) { fwrite($this->SHPFile, Util::packDouble($this->SHPData['points'][$i][$type])); } } private function _saveMultiPointMRecord() { $this->_saveMultiPointRecord(); $this->_saveMultiPointMZRecord('m'); } private function _saveMultiPointZRecord() { $this->_saveMultiPointRecord(); $this->_saveMultiPointMZRecord('z'); $this->_saveMultiPointMZRecord('m'); } private function _loadPolyLineRecord() { $this->SHPData = array(); $this->_loadBBox(); $this->SHPData['numparts'] = $this->_loadData('V', 4); $this->SHPData['numpoints'] = $this->_loadData('V', 4); $numparts = $this->SHPData['numparts']; $numpoints = $this->SHPData['numpoints']; for ($i = 0; $i < $numparts; ++$i) { $this->SHPData['parts'][$i] = $this->_loadData('V', 4); } $part = 0; for ($i = 0; $i < $numpoints; ++$i) { if ($part + 1 < $numparts && $this->SHPData['parts'][$part + 1] == $i) { ++$part; } if (!isset($this->SHPData['parts'][$part]['points']) || !is_array($this->SHPData['parts'][$part]['points'])) { $this->SHPData['parts'][$part] = array('points' => array()); } $this->SHPData['parts'][$part]['points'][] = $this->_loadPoint(); } } /** * @param string $type */ private function _loadPolyLineMZRecord($type) { /* The m dimension is optional, depends on bounding box data */ if ($type == 'm' && !$this->ShapeFile->hasMeasure()) { return; } $this->SHPData[$type . 'min'] = $this->_loadData('d', 8); $this->SHPData[$type . 'max'] = $this->_loadData('d', 8); $numparts = $this->SHPData['numparts']; $numpoints = $this->SHPData['numpoints']; $part = 0; for ($i = 0; $i < $numpoints; ++$i) { if ($part + 1 < $numparts && $this->SHPData['parts'][$part + 1] == $i) { ++$part; } $this->SHPData['parts'][$part]['points'][$i][$type] = $this->_loadData('d', 8); } } private function _loadPolyLineMRecord() { $this->_loadPolyLineRecord(); $this->_loadPolyLineMZRecord('m'); } private function _loadPolyLineZRecord() { $this->_loadPolyLineRecord(); $this->_loadPolyLineMZRecord('z'); $this->_loadPolyLineMZRecord('m'); } private function _savePolyLineRecord() { fwrite($this->SHPFile, pack('dddd', $this->SHPData['xmin'], $this->SHPData['ymin'], $this->SHPData['xmax'], $this->SHPData['ymax'])); fwrite($this->SHPFile, pack('VV', $this->SHPData['numparts'], $this->SHPData['numpoints'])); $part_index = 0; for ($i = 0; $i < $this->SHPData['numparts']; ++$i) { fwrite($this->SHPFile, pack('V', $part_index)); $part_index += count($this->SHPData['parts'][$i]['points']); } foreach ($this->SHPData['parts'] as $partData) { foreach ($partData['points'] as $pointData) { $this->_savePoint($pointData); } } } /** * @param string $type */ private function _savePolyLineMZRecord($type) { fwrite($this->SHPFile, pack('dd', $this->SHPData[$type . 'min'], $this->SHPData[$type . 'max'])); foreach ($this->SHPData['parts'] as $partData) { foreach ($partData['points'] as $pointData) { fwrite($this->SHPFile, Util::packDouble($pointData[$type])); } } } private function _savePolyLineMRecord() { $this->_savePolyLineRecord(); $this->_savePolyLineMZRecord('m'); } private function _savePolyLineZRecord() { $this->_savePolyLineRecord(); $this->_savePolyLineMZRecord('z'); $this->_savePolyLineMZRecord('m'); } private function _loadPolygonRecord() { $this->_loadPolyLineRecord(); } private function _loadPolygonMRecord() { $this->_loadPolyLineMRecord(); } private function _loadPolygonZRecord() { $this->_loadPolyLineZRecord(); } private function _savePolygonRecord() { $this->_savePolyLineRecord(); } private function _savePolygonMRecord() { $this->_savePolyLineMRecord(); } private function _savePolygonZRecord() { $this->_savePolyLineZRecord(); } private function _adjustBBox($point) { // Adjusts bounding box based on point $directions = array('x', 'y', 'z', 'm'); foreach ($directions as $direction) { if (!isset($point[$direction])) { continue; } $min = $direction . 'min'; $max = $direction . 'max'; if (!isset($this->SHPData[$min]) || ($this->SHPData[$min] > $point[$direction])) { $this->SHPData[$min] = $point[$direction]; } if (!isset($this->SHPData[$max]) || ($this->SHPData[$max] < $point[$direction])) { $this->SHPData[$max] = $point[$direction]; } } } /** * Sets dimension to 0 if not set. * * @param array $point Point to check * @param string $dimension Dimension to check * * @return array */ private function _fixPoint($point, $dimension) { if (!isset($point[$dimension])) { $point[$dimension] = 0.0; // no_value } return $point; } /** * Adjust point and bounding box when adding point. * * @param array $point Point data * * @return array Fixed point data */ private function _adjustPoint($point) { $type = $this->shapeType / 10; if ($type >= 2) { $point = $this->_fixPoint($point, 'm'); } elseif ($type >= 1) { $point = $this->_fixPoint($point, 'z'); $point = $this->_fixPoint($point, 'm'); } return $point; } /** * Adds point to a record. * * @param array $point Point data * @param int $partIndex Part index */ public function addPoint($point, $partIndex = 0) { $point = $this->_adjustPoint($point); switch ($this->shapeType) { case 0: //Don't add anything return; case 1: case 11: case 21: //Substitutes the value of the current point $this->SHPData = $point; break; case 3: case 5: case 13: case 15: case 23: case 25: //Adds a new point to the selected part $this->SHPData['parts'][$partIndex]['points'][] = $point; $this->SHPData['numparts'] = count($this->SHPData['parts']); $this->SHPData['numpoints'] = 1 + (isset($this->SHPData['numpoints']) ? $this->SHPData['numpoints'] : 0); break; case 8: case 18: case 28: //Adds a new point $this->SHPData['points'][] = $point; $this->SHPData['numpoints'] = 1 + (isset($this->SHPData['numpoints']) ? $this->SHPData['numpoints'] : 0); break; default: $this->setError(sprintf('The Shape Type "%s" is not supported.', $this->shapeType)); return; } $this->_adjustBBox($point); } /** * Deletes point from a record. * * @param int $pointIndex Point index * @param int $partIndex Part index */ public function deletePoint($pointIndex = 0, $partIndex = 0) { switch ($this->shapeType) { case 0: //Don't delete anything break; case 1: case 11: case 21: //Sets the value of the point to zero $this->SHPData['x'] = 0.0; $this->SHPData['y'] = 0.0; if (in_array($this->shapeType, array(11, 21))) { $this->SHPData['m'] = 0.0; } if (in_array($this->shapeType, array(11))) { $this->SHPData['z'] = 0.0; } break; case 3: case 5: case 13: case 15: case 23: case 25: //Deletes the point from the selected part, if exists if (isset($this->SHPData['parts'][$partIndex]) && isset($this->SHPData['parts'][$partIndex]['points'][$pointIndex])) { $count = count($this->SHPData['parts'][$partIndex]['points']) - 1; for ($i = $pointIndex; $i < $count; ++$i) { $this->SHPData['parts'][$partIndex]['points'][$i] = $this->SHPData['parts'][$partIndex]['points'][$i + 1]; } unset($this->SHPData['parts'][$partIndex]['points'][count($this->SHPData['parts'][$partIndex]['points']) - 1]); $this->SHPData['numparts'] = count($this->SHPData['parts']); --$this->SHPData['numpoints']; } break; case 8: case 18: case 28: //Deletes the point, if exists if (isset($this->SHPData['points'][$pointIndex])) { $count = count($this->SHPData['points']) - 1; for ($i = $pointIndex; $i < $count; ++$i) { $this->SHPData['points'][$i] = $this->SHPData['points'][$i + 1]; } unset($this->SHPData['points'][count($this->SHPData['points']) - 1]); --$this->SHPData['numpoints']; } break; default: $this->setError(sprintf('The Shape Type "%s" is not supported.', $this->shapeType)); break; } } /** * Returns length of content. * * @return int */ public function getContentLength() { // The content length for a record is the length of the record contents section measured in 16-bit words. // one coordinate makes 4 16-bit words (64 bit double) switch ($this->shapeType) { case 0: $result = 0; break; case 1: $result = 10; break; case 21: $result = 10 + 4; break; case 11: $result = 10 + 8; break; case 3: case 5: $count = count($this->SHPData['parts']); $result = 22 + 2 * $count; for ($i = 0; $i < $count; ++$i) { $result += 8 * count($this->SHPData['parts'][$i]['points']); } break; case 23: case 25: $count = count($this->SHPData['parts']); $result = 22 + (2 * 4) + 2 * $count; for ($i = 0; $i < $count; ++$i) { $result += (8 + 4) * count($this->SHPData['parts'][$i]['points']); } break; case 13: case 15: $count = count($this->SHPData['parts']); $result = 22 + (4 * 4) + 2 * $count; for ($i = 0; $i < $count; ++$i) { $result += (8 + 8) * count($this->SHPData['parts'][$i]['points']); } break; case 8: $result = 20 + 8 * count($this->SHPData['points']); break; case 28: $result = 20 + (2 * 4) + (8 + 4) * count($this->SHPData['points']); break; case 18: $result = 20 + (4 * 4) + (8 + 8) * count($this->SHPData['points']); break; default: $result = false; $this->setError(sprintf('The Shape Type "%s" is not supported.', $this->shapeType)); break; } return $result; } private function _loadDBFData() { $this->DBFData = @dbase_get_record_with_names($this->DBFFile, $this->recordNumber); unset($this->DBFData['deleted']); } private function _saveDBFData() { if (count($this->DBFData) == 0) { return; } unset($this->DBFData['deleted']); if ($this->recordNumber <= dbase_numrecords($this->DBFFile)) { if (!dbase_replace_record($this->DBFFile, array_values($this->DBFData), $this->recordNumber)) { $this->setError('I wasn\'t possible to update the information in the DBF file.'); } } else { if (!dbase_add_record($this->DBFFile, array_values($this->DBFData))) { $this->setError('I wasn\'t possible to add the information to the DBF file.'); } } } /** * Sets error message. * * @param string $error */ public function setError($error) { $this->lastError = $error; } /** * Returns shape name. * * @return string */ public function getShapeName() { return Util::nameShape($this->shapeType); } } db/login/vendor/phpmyadmin/shapefile/CHANGELOG.md000064400000002462151502156020015456 0ustar00# Change Log ## [2.1] - 2017-05-15 * Documentation improvements. ## [2.0] - 2017-01-23 * Switched to PhpMyAdmin vendor namespace to follow PSR-4. ## [1.2] - 2017-01-07 * Coding style cleanup. * PHP 7.2 support. * Avoid installing tests and test data using composer. ## [1.1] - 2016-11-21 * Fixed adjusting of record bouding box ## [1.0] - 2016-11-21 * Documentation improvements * Code cleanups ## [0.12] - 2016-11-17 * Fixed DBF search * Improved test coverage ## [0.11] - 2016-11-16 * Code cleanups * Fixed behavior without configured DBF header ## [0.11] - 2016-11-16 * Fixed saving Polygon/Polyline creation with multiple parts * Fixed saving Multipont records ## [0.10] - 2016-09-05 * Improved error handling on loading ## [0.9] - 2016-08-04 * Code cleanups ## [0.8] - 2016-06-24 * Code cleanups * Fixed loading of records with optional data ## [0.7] - 2016-06-24 * Properly fail on loading corrupted files ## [0.6] - 2016-06-24 * Fixed detection of end of file when loading ## [0.5] - 2016-06-24 * Added getShapeName method to ShapeFile ## [0.4] - 2016-06-24 * Make API work even without real file open ## [0.3] - 2016-06-24 * Better support for subclassing ## [0.2] - 2016-06-24 * Make the dbase extension optional dependency ## [0.1] - 2016-06-14 * Inital release based on bfShapeFiles db/login/vendor/phpmyadmin/shapefile/phpunit.xml000064400000001450151502156020016052 0ustar00 ./tests src/ db/login/vendor/phpmyadmin/shapefile/LICENSE000064400000043176151502156020014661 0ustar00 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {description} Copyright (C) {year} {fullname} This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. {signature of Ty Coon}, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. db/login/vendor/phpmyadmin/shapefile/CONTRIBUTING.md000064400000001555151502156020016100 0ustar00# Contributing to shapefile ## Reporting issues Our issue tracker is hosted at GitHub: https://github.com/phpmyadmin/shapefile/issues Please search for existing issues before reporting new ones. ## Working with Git checkout The dependencies are managed by Composer, to get them all installed (or update on consequent runs) do: ``` composer update ``` ## Submitting patches Please submit your patches using GitHub pull requests, this allows us to review them and to run automated tests on the code. ## Coding standards We do follow PSR-1 and PSR-2 coding standards. You can use php-cs-fixer to fix the code to match our expectations: ``` php-cs-fixer fix . ``` ## Testsuite Our code comes with quite comprehensive testsuite, it is automatically executed on every commit and pull request, you can also run it locally: ``` ./vendor/bin/phpunit -c phpunit.xml ``` db/login/vendor/phpmyadmin/motranslator/README.md000064400000010700151502156020015703 0ustar00# motranslator Translation API for PHP using Gettext MO files. [![Build Status](https://travis-ci.org/phpmyadmin/motranslator.svg?branch=master)](https://travis-ci.org/phpmyadmin/motranslator) [![codecov.io](https://codecov.io/github/phpmyadmin/motranslator/coverage.svg?branch=master)](https://codecov.io/github/phpmyadmin/motranslator?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpmyadmin/motranslator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/motranslator/?branch=master) [![Packagist](https://img.shields.io/packagist/dt/phpmyadmin/motranslator.svg)](https://packagist.org/packages/phpmyadmin/motranslator) ## Features * All strings are stored in memory for fast lookup * Fast loading of MO files * Low level API for reading MO files * Emulation of Gettext API * No use of `eval()` for plural equation ## Limitations * Not suitable for huge MO files which you don't want to store in memory * Input and output encoding has to match (preferably UTF-8) ## Installation Please use [Composer][1] to install: ``` composer require phpmyadmin/motranslator ``` ## Documentation The API documentation is available at . ## Object API usage ```php // Create loader object $loader = new PhpMyAdmin\MoTranslator\Loader(); // Set locale $loader->setlocale('cs'); // Set default text domain $loader->textdomain('domain'); // Set path where to look for a domain $loader->bindtextdomain('domain', __DIR__ . '/data/locale/'); // Get translator $translator = $loader->getTranslator(); // Now you can use Translator API (see below) ``` ## Low level API usage ```php // Directly load the mo file $translator = new PhpMyAdmin\MoTranslator\Translator('./path/to/file.mo'); // Now you can use Translator API (see below) ``` ## Translator API usage ```php // Translate string echo $translator->gettext('String'); // Translate plural string echo $translator->ngettext('String', 'Plural string', $count); // Translate string with context echo $translator->pgettext('Context', 'String'); // Translate plural string with context echo $translator->npgettext('Context', 'String', 'Plural string', $count); ``` ## Gettext compatibility usage ```php // Load compatibility layer PhpMyAdmin\MoTranslator\Loader::loadFunctions(); // Configure _setlocale(LC_MESSAGES, 'cs'); _textdomain('phpmyadmin'); _bindtextdomain('phpmyadmin', __DIR__ . '/data/locale/'); _bind_textdomain_codeset('phpmyadmin', 'UTF-8'); // Use functions echo _gettext('Type'); echo __('Type'); // It also support other Gettext functions _dnpgettext($domain, $msgctxt, $msgid, $msgidPlural, $number); _dngettext($domain, $msgid, $msgidPlural, $number); _npgettext($msgctxt, $msgid, $msgidPlural, $number); _ngettext($msgid, $msgidPlural, $number); _dpgettext($domain, $msgctxt, $msgid); _dgettext($domain, $msgid); _pgettext($msgctxt, $msgid); ``` ## History This library is based on [php-gettext][2]. It adds some performance improvements and ability to install using [Composer][1]. ## Motivation Motivation for this library includes: * The [php-gettext][2] library is not maintained anymore * It doesn't work with recent PHP version (phpMyAdmin has patched version) * It relies on `eval()` function for plural equations what can have severe security implications, see CVE-2016-6175 * It's not possible to install it using [Composer][1] * There was place for performance improvements in the library ### Why not to use native gettext in PHP? We've tried that, but it's not a viable solution: * You can not use locales not known to system, what is something you can not control from web application. This gets even more tricky with minimalist virtualisation containers. * Changing the MO file usually leads to PHP segmentation fault. It (or rather Gettext library) caches headers of MO file and if it's content is changed (for example new version is uploaded to server) it tries to access new data with old references. This is bug known for ages: https://bugs.php.net/bug.php?id=45943 ### Why use Gettext and not JSON, YAML or whatever? We want translators to be able to use their favorite tools and we want us to be able to use wide range of tools available with Gettext as well such as [web based translation using Weblate][3]. Using custom format usually adds another barrier for translators and we want to make it easy for them to contribute. [1]:https://getcomposer.org/ [2]:https://launchpad.net/php-gettext [3]:https://weblate.org/ db/login/vendor/phpmyadmin/motranslator/codecov.yml000064400000000066151502156020016575 0ustar00comment: layout: header, changes, diff coverage: {} db/login/vendor/phpmyadmin/motranslator/composer.json000064400000002115151502156020017147 0ustar00{ "name": "phpmyadmin/motranslator", "description": "Translation API for PHP using Gettext MO files", "license": "GPL-2.0-or-later", "keywords": ["gettext", "mo", "translator", "i18n"], "homepage": "https://github.com/phpmyadmin/motranslator", "authors": [ { "name": "The phpMyAdmin Team", "email": "developers@phpmyadmin.net", "homepage": "https://www.phpmyadmin.net/team/" } ], "support": { "issues": "https://github.com/phpmyadmin/motranslator/issues", "source": "https://github.com/phpmyadmin/motranslator" }, "require": { "php": ">=5.3.0", "symfony/expression-language": "^4.0 || ^3.2 || ^2.8" }, "require-dev": { "apigen/apigen": "^4.1", "phpunit/php-code-coverage": "*", "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5" }, "autoload": { "psr-4": { "PhpMyAdmin\\MoTranslator\\": "src" } }, "autoload-dev": { "psr-4": { "PhpMyAdmin\\MoTranslator\\Tests\\": "tests" } } } db/login/vendor/phpmyadmin/motranslator/src/functions.php000064400000012265151502156020017744 0ustar00 Copyright (c) 2009 Danilo Segan Copyright (c) 2016 Michal Čihař This file is part of MoTranslator. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ use PhpMyAdmin\MoTranslator\Loader; /** * Sets a requested locale. * * @param int $category Locale category, ignored * @param string $locale Locale name * * @return string Set or current locale */ function _setlocale($category, $locale) { return Loader::getInstance()->setlocale($locale); } /** * Sets the path for a domain. * * @param string $domain Domain name * @param string $path Path where to find locales */ function _bindtextdomain($domain, $path) { Loader::getInstance()->bindtextdomain($domain, $path); } /** * Dummy compatibility function, MoTranslator assumes * everything is using same character set on input and * output. * * Generally it is wise to output in UTF-8 and have * mo files in UTF-8. * * @param mixed $domain Domain where to set character set * @param mixed $codeset Character set to set */ function _bind_textdomain_codeset($domain, $codeset) { } /** * Sets the default domain. * * @param string $domain Domain name */ function _textdomain($domain) { Loader::getInstance()->textdomain($domain); } /** * Translates a string. * * @param string $msgid String to be translated * * @return string translated string (or original, if not found) */ function _gettext($msgid) { return Loader::getInstance()->getTranslator()->gettext( $msgid ); } /** * Translates a string, alias for _gettext. * * @param string $msgid String to be translated * * @return string translated string (or original, if not found) */ function __($msgid) { return Loader::getInstance()->getTranslator()->gettext( $msgid ); } /** * Plural version of gettext. * * @param string $msgid Single form * @param string $msgidPlural Plural form * @param int $number Number of objects * * @return string translated plural form */ function _ngettext($msgid, $msgidPlural, $number) { return Loader::getInstance()->getTranslator()->ngettext( $msgid, $msgidPlural, $number ); } /** * Translate with context. * * @param string $msgctxt Context * @param string $msgid String to be translated * * @return string translated plural form */ function _pgettext($msgctxt, $msgid) { return Loader::getInstance()->getTranslator()->pgettext( $msgctxt, $msgid ); } /** * Plural version of pgettext. * * @param string $msgctxt Context * @param string $msgid Single form * @param string $msgidPlural Plural form * @param int $number Number of objects * * @return string translated plural form */ function _npgettext($msgctxt, $msgid, $msgidPlural, $number) { return Loader::getInstance()->getTranslator()->npgettext( $msgctxt, $msgid, $msgidPlural, $number ); } /** * Translates a string. * * @param string $domain Domain to use * @param string $msgid String to be translated * * @return string translated string (or original, if not found) */ function _dgettext($domain, $msgid) { return Loader::getInstance()->getTranslator($domain)->gettext( $msgid ); } /** * Plural version of gettext. * * @param string $domain Domain to use * @param string $msgid Single form * @param string $msgidPlural Plural form * @param int $number Number of objects * * @return string translated plural form */ function _dngettext($domain, $msgid, $msgidPlural, $number) { return Loader::getInstance()->getTranslator($domain)->ngettext( $msgid, $msgidPlural, $number ); } /** * Translate with context. * * @param string $domain Domain to use * @param string $msgctxt Context * @param string $msgid String to be translated * * @return string translated plural form */ function _dpgettext($domain, $msgctxt, $msgid) { return Loader::getInstance()->getTranslator($domain)->pgettext( $msgctxt, $msgid ); } /** * Plural version of pgettext. * * @param string $domain Domain to use * @param string $msgctxt Context * @param string $msgid Single form * @param string $msgidPlural Plural form * @param int $number Number of objects * * @return string translated plural form */ function _dnpgettext($domain, $msgctxt, $msgid, $msgidPlural, $number) { return Loader::getInstance()->getTranslator($domain)->npgettext( $msgctxt, $msgid, $msgidPlural, $number ); } db/login/vendor/phpmyadmin/motranslator/src/StringReader.php000064400000005361151502156020020324 0ustar00. Copyright (c) 2016 Michal Čihař This file is part of MoTranslator. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ namespace PhpMyAdmin\MoTranslator; /** * Simple wrapper around string buffer for * random access and values parsing. */ class StringReader { private $_str; private $_len; /** * Constructor. * * @param string $filename Name of file to load */ public function __construct($filename) { $this->_str = file_get_contents($filename); $this->_len = strlen($this->_str); } /** * Read number of bytes from given offset. * * @param int $pos Offset * @param int $bytes Number of bytes to read * * @return string */ public function read($pos, $bytes) { if ($pos + $bytes > $this->_len) { throw new ReaderException('Not enough bytes!'); } return substr($this->_str, $pos, $bytes); } /** * Reads a 32bit integer from the stream. * * @param string $unpack Unpack string * @param int $pos Position * * @return int Ingerer from the stream */ public function readint($unpack, $pos) { $data = unpack($unpack, $this->read($pos, 4)); $result = $data[1]; /* We're reading unsigned int, but PHP will happily * give us negative number on 32-bit platforms. * * See also documentation: * https://secure.php.net/manual/en/function.unpack.php#refsect1-function.unpack-notes */ return $result < 0 ? PHP_INT_MAX : $result; } /** * Reads an array of integers from the stream. * * @param string $unpack Unpack string * @param int $pos Position * @param int $count How many elements should be read * * @return array Array of Integers */ public function readintarray($unpack, $pos, $count) { return unpack($unpack . $count, $this->read($pos, 4 * $count)); } } db/login/vendor/phpmyadmin/motranslator/src/Translator.php000064400000024140151502156020020060 0ustar00. Copyright (c) 2005 Nico Kaiser Copyright (c) 2016 Michal Čihař This file is part of MoTranslator. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ namespace PhpMyAdmin\MoTranslator; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; /** * Provides a simple gettext replacement that works independently from * the system's gettext abilities. * It can read MO files and use them for translating strings. * * It caches ll strings and translations to speed up the string lookup. */ class Translator { /** * None error. */ const ERROR_NONE = 0; /** * File does not exist. */ const ERROR_DOES_NOT_EXIST = 1; /** * File has bad magic number. */ const ERROR_BAD_MAGIC = 2; /** * Error while reading file, probably too short. */ const ERROR_READING = 3; /** * Big endian mo file magic bytes. */ const MAGIC_BE = "\x95\x04\x12\xde"; /** * Little endian mo file magic bytes. */ const MAGIC_LE = "\xde\x12\x04\x95"; /** * Parse error code (0 if no error). * * @var int */ public $error = self::ERROR_NONE; /** * Cache header field for plural forms. * * @var string|null */ private $pluralequation = null; /** * @var ExpressionLanguage|null Evaluator for plurals */ private $pluralexpression = null; /** * @var int|null number of plurals */ private $pluralcount = null; /** * Array with original -> translation mapping. * * @var array */ private $cache_translations = array(); /** * Constructor. * * @param string $filename Name of mo file to load */ public function __construct($filename) { if (!is_readable($filename)) { $this->error = self::ERROR_DOES_NOT_EXIST; return; } $stream = new StringReader($filename); try { $magic = $stream->read(0, 4); if (strcmp($magic, self::MAGIC_LE) == 0) { $unpack = 'V'; } elseif (strcmp($magic, self::MAGIC_BE) == 0) { $unpack = 'N'; } else { $this->error = self::ERROR_BAD_MAGIC; return; } /* Parse header */ $total = $stream->readint($unpack, 8); $originals = $stream->readint($unpack, 12); $translations = $stream->readint($unpack, 16); /* get original and translations tables */ $table_originals = $stream->readintarray($unpack, $originals, $total * 2); $table_translations = $stream->readintarray($unpack, $translations, $total * 2); /* read all strings to the cache */ for ($i = 0; $i < $total; ++$i) { $original = $stream->read($table_originals[$i * 2 + 2], $table_originals[$i * 2 + 1]); $translation = $stream->read($table_translations[$i * 2 + 2], $table_translations[$i * 2 + 1]); $this->cache_translations[$original] = $translation; } } catch (ReaderException $e) { $this->error = self::ERROR_READING; return; } } /** * Translates a string. * * @param string $msgid String to be translated * * @return string translated string (or original, if not found) */ public function gettext($msgid) { if (array_key_exists($msgid, $this->cache_translations)) { return $this->cache_translations[$msgid]; } return $msgid; } /** * Check if a string is translated. * * @param string $msgid String to be checked * * @return bool */ public function exists($msgid) { return array_key_exists($msgid, $this->cache_translations); } /** * Sanitize plural form expression for use in ExpressionLanguage. * * @param string $expr Expression to sanitize * * @return string sanitized plural form expression */ public static function sanitizePluralExpression($expr) { // Parse equation $expr = explode(';', $expr); if (count($expr) >= 2) { $expr = $expr[1]; } else { $expr = $expr[0]; } $expr = trim(strtolower($expr)); // Strip plural prefix if (substr($expr, 0, 6) === 'plural') { $expr = ltrim(substr($expr, 6)); } // Strip equals if (substr($expr, 0, 1) === '=') { $expr = ltrim(substr($expr, 1)); } // Cleanup from unwanted chars $expr = preg_replace('@[^n0-9:\(\)\?=!<>/%&| ]@', '', $expr); return $expr; } /** * Extracts number of plurals from plurals form expression. * * @param string $expr Expression to process * * @return int Total number of plurals */ public static function extractPluralCount($expr) { $parts = explode(';', $expr, 2); $nplurals = explode('=', trim($parts[0]), 2); if (strtolower(rtrim($nplurals[0])) != 'nplurals') { return 1; } if (count($nplurals) == 1) { return 1; } return intval($nplurals[1]); } /** * Parse full PO header and extract only plural forms line. * * @param string $header Gettext header * * @return string verbatim plural form header field */ public static function extractPluralsForms($header) { $headers = explode("\n", $header); $expr = 'nplurals=2; plural=n == 1 ? 0 : 1;'; foreach ($headers as $header) { if (stripos($header, 'Plural-Forms:') === 0) { $expr = substr($header, 13); } } return $expr; } /** * Get possible plural forms from MO header. * * @return string plural form header */ private function getPluralForms() { // lets assume message number 0 is header // this is true, right? // cache header field for plural forms if (is_null($this->pluralequation)) { if (isset($this->cache_translations[''])) { $header = $this->cache_translations['']; } else { $header = ''; } $expr = $this->extractPluralsForms($header); $this->pluralequation = $this->sanitizePluralExpression($expr); $this->pluralcount = $this->extractPluralCount($expr); } return $this->pluralequation; } /** * Detects which plural form to take. * * @param int $n count of objects * * @return int array index of the right plural form */ private function selectString($n) { if (is_null($this->pluralexpression)) { $this->pluralexpression = new ExpressionLanguage(); } try { $plural = $this->pluralexpression->evaluate( $this->getPluralForms(), array('n' => $n) ); } catch (\Exception $e) { $plural = 0; } if ($plural >= $this->pluralcount) { $plural = $this->pluralcount - 1; } return $plural; } /** * Plural version of gettext. * * @param string $msgid Single form * @param string $msgidPlural Plural form * @param int $number Number of objects * * @return string translated plural form */ public function ngettext($msgid, $msgidPlural, $number) { // this should contains all strings separated by NULLs $key = implode(chr(0), array($msgid, $msgidPlural)); if (!array_key_exists($key, $this->cache_translations)) { return ($number != 1) ? $msgidPlural : $msgid; } // find out the appropriate form $select = $this->selectString($number); $result = $this->cache_translations[$key]; $list = explode(chr(0), $result); if (!isset($list[$select])) { return $list[0]; } return $list[$select]; } /** * Translate with context. * * @param string $msgctxt Context * @param string $msgid String to be translated * * @return string translated plural form */ public function pgettext($msgctxt, $msgid) { $key = implode(chr(4), array($msgctxt, $msgid)); $ret = $this->gettext($key); if (strpos($ret, chr(4)) !== false) { return $msgid; } return $ret; } /** * Plural version of pgettext. * * @param string $msgctxt Context * @param string $msgid Single form * @param string $msgidPlural Plural form * @param int $number Number of objects * * @return string translated plural form */ public function npgettext($msgctxt, $msgid, $msgidPlural, $number) { $key = implode(chr(4), array($msgctxt, $msgid)); $ret = $this->ngettext($key, $msgidPlural, $number); if (strpos($ret, chr(4)) !== false) { return $msgid; } return $ret; } /** * Set translation in place * * @param string $msgid String to be set * @param string $msgstr Translation * * @return void */ public function setTranslation($msgid, $msgstr) { $this->cache_translations[$msgid] = $msgstr; } } db/login/vendor/phpmyadmin/motranslator/src/Loader.php000064400000015106151502156020017137 0ustar00 Copyright (c) 2009 Danilo Segan Copyright (c) 2016 Michal Čihař This file is part of MoTranslator. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ namespace PhpMyAdmin\MoTranslator; class Loader { /** * Loader instance. * * @static * * @var Loader */ private static $_instance; /** * Default gettext domain to use. * * @var string */ private $default_domain = ''; /** * Configured locale. * * @var string */ private $locale = ''; /** * Loaded domains. * * @var array */ private $domains = array(); /** * Bound paths for domains. * * @var array */ private $paths = array('' => './'); /** * Returns the singleton Loader object. * * @return Loader object */ public static function getInstance() { if (empty(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; } /** * Loads global localizaton functions. */ public static function loadFunctions() { require_once __DIR__ . '/functions.php'; } /** * Figure out all possible locale names and start with the most * specific ones. I.e. for sr_CS.UTF-8@latin, look through all of * sr_CS.UTF-8@latin, sr_CS@latin, sr@latin, sr_CS.UTF-8, sr_CS, sr. * * @param string $locale Locale code * * @return array list of locales to try for any POSIX-style locale specification */ public static function listLocales($locale) { $locale_names = array(); $lang = null; $country = null; $charset = null; $modifier = null; if ($locale) { if (preg_match('/^(?P[a-z]{2,3})' // language code . '(?:_(?P[A-Z]{2}))?' // country code . '(?:\\.(?P[-A-Za-z0-9_]+))?' // charset . '(?:@(?P[-A-Za-z0-9_]+))?$/', // @ modifier $locale, $matches)) { extract($matches); if ($modifier) { if ($country) { if ($charset) { array_push($locale_names, "${lang}_$country.$charset@$modifier"); } array_push($locale_names, "${lang}_$country@$modifier"); } elseif ($charset) { array_push($locale_names, "${lang}.$charset@$modifier"); } array_push($locale_names, "$lang@$modifier"); } if ($country) { if ($charset) { array_push($locale_names, "${lang}_$country.$charset"); } array_push($locale_names, "${lang}_$country"); } elseif ($charset) { array_push($locale_names, "${lang}.$charset"); } array_push($locale_names, $lang); } // If the locale name doesn't match POSIX style, just include it as-is. if (!in_array($locale, $locale_names)) { array_push($locale_names, $locale); } } return $locale_names; } /** * Returns Translator object for domain or for default domain. * * @param string $domain Translation domain * * @return Translator */ public function getTranslator($domain = '') { if (empty($domain)) { $domain = $this->default_domain; } if (!isset($this->domains[$this->locale])) { $this->domains[$this->locale] = array(); } if (!isset($this->domains[$this->locale][$domain])) { if (isset($this->paths[$domain])) { $base = $this->paths[$domain]; } else { $base = './'; } $locale_names = $this->listLocales($this->locale); $filename = ''; foreach ($locale_names as $locale) { $filename = "$base/$locale/LC_MESSAGES/$domain.mo"; if (file_exists($filename)) { break; } } // We don't care about invalid path, we will get fallback // translator here $this->domains[$this->locale][$domain] = new Translator($filename); } return $this->domains[$this->locale][$domain]; } /** * Sets the path for a domain. * * @param string $domain Domain name * @param string $path Path where to find locales */ public function bindtextdomain($domain, $path) { $this->paths[$domain] = $path; } /** * Sets the default domain. * * @param string $domain Domain name */ public function textdomain($domain) { $this->default_domain = $domain; } /** * Sets a requested locale. * * @param string $locale Locale name * * @return string Set or current locale */ public function setlocale($locale) { if (!empty($locale)) { $this->locale = $locale; } return $this->locale; } /** * Detects currently configured locale. * * It checks: * * - global lang variable * - environment for LC_ALL, LC_MESSAGES and LANG * * @return string with locale name */ public function detectlocale() { if (isset($GLOBALS['lang'])) { return $GLOBALS['lang']; } elseif (getenv('LC_ALL')) { return getenv('LC_ALL'); } elseif (getenv('LC_MESSAGES')) { return getenv('LC_MESSAGES'); } elseif (getenv('LANG')) { return getenv('LANG'); } return 'en'; } } db/login/vendor/phpmyadmin/motranslator/src/ReaderException.php000064400000002025151502156020021006 0ustar00. Copyright (c) 2016 Michal Čihař This file is part of MoTranslator. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ namespace PhpMyAdmin\MoTranslator; /** * Exception thrown when file can not be read. */ class ReaderException extends \Exception { } db/login/vendor/phpmyadmin/motranslator/.github/stale.yml000064400000001707151502156020017626 0ustar00# Configuration for probot-stale - https://github.com/probot/stale # Number of days of inactivity before an Issue or Pull Request becomes stale daysUntilStale: 60 # Number of days of inactivity before a stale Issue or Pull Request is closed daysUntilClose: 7 # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable exemptLabels: - pinned - security # Label to use when marking as stale staleLabel: wontfix # Comment to post when marking as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Comment to post when removing the stale label. Set to `false` to disable unmarkComment: false # Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable closeComment: false # Limit to only `issues` or `pulls` only: pulls db/login/vendor/phpmyadmin/motranslator/phpunit.xml000064400000002043151502156020016636 0ustar00 ./tests src/ db/login/vendor/phpmyadmin/motranslator/PERFORMANCE.md000064400000001642151502156020016514 0ustar00# Performance This library was tweaked for best performance for single use - translating application with many strings using mo file. Current benchmarks show it's about four times faster than original php-gettext. There are two benchmark scripts in the code: * ``benchmark-context.php`` - benchmarks context usage * ``benchmark-plural.php`` - benchmarks plural evaluation * ``benchmark.php`` - benchmarks file parsing ## Performance measurements The performance improvements based on individual changes in the code: | Stage | Seconds | | -------------- | --------------- | | Original code | 4.7929680347443 | | Remove nocache | 4.6308250427246 | | Direct endian | 4.5883052349091 | | Remove attribs | 4.5297479629517 | | String reader | 1.8148958683014 | | No offset | 1.2436759471893 | | Less attribs | 1.1722540855408 | | Remove shift | 1.0970499515533 | | Magic order | 1.0868430137634 | db/login/vendor/phpmyadmin/motranslator/LICENSE000064400000043176151502156020015446 0ustar00 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {description} Copyright (C) {year} {fullname} This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. {signature of Ty Coon}, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. db/login/vendor/phpmyadmin/motranslator/CONTRIBUTING.md000064400000001563151502156020016664 0ustar00# Contributing to motranslator ## Reporting issues Our issue tracker is hosted at GitHub: https://github.com/phpmyadmin/motranslator/issues Please search for existing issues before reporting new ones. ## Working with Git checkout The dependencies are managed by Composer, to get them all installed (or update on consequent runs) do: ``` composer update ``` ## Submitting patches Please submit your patches using GitHub pull requests, this allows us to review them and to run automated tests on the code. ## Coding standards We do follow PSR-1 and PSR-2 coding standards. You can use php-cs-fixer to fix the code to match our expectations: ``` php-cs-fixer fix . ``` ## Testsuite Our code comes with quite comprehensive testsuite, it is automatically executed on every commit and pull request, you can also run it locally: ``` ./vendor/bin/phpunit -c phpunit.xml ``` db/login/vendor/phpmyadmin/motranslator/CHANGES.md000064400000003037151502156020016023 0ustar00# Version 4.0 * Released on 2018-02-12. * The library no longer changes system locales. # Version 3.4 * Released on 2017-12-15. * Added Translator::setTranslation method. # Version 3.3 * Released on 2017-06-01. * Add support for switching locales for Loader instance. # Version 3.2 * Released on 2017-05-23. * Various fixes when handling corrupted mo files. # Version 3.1 * Released on 2017-05-15. * Documentation improvements. # Version 3.0 * Released on 2017-01-23. * All classes moved to the PhpMyAdmin namespace. # Version 2.2 * Released on 2017-01-07. * Coding style cleanup. * Avoid installing tests using composer. # Version 2.1 * Released on 2016-12-21. * Various code cleanups. * Added support for PHP 5.3. # Version 2.0 * Released on 2016-10-13. * Consistently use camelCase in API. * No more relies on using eval(). * Depends on symfony/expression-language for calculations. # Version 1.2 * Released on 2016-09-22. * Stricter validation of plural expression. # Version 1.1 * Released on 2016-08-29. * Improved handling of corrupted mo files. * Minor performance improvements. * Stricter validation of plural expression. # Version 1.0 * Released on 2016-04-27. * Documentation improvements. * Testsuite improvements. # Version 0.4 * Released on 2016-03-02. * Fixed test failures with hhvm due to broken putenv. # Version 0.3 * Released on 2016-03-01. * Added Loader::detectlocale method. # Version 0.2 * Released on 2016-02-24. * Marked PHP 5.4 and 5.5 as supported. # Version 0.1 * Released on 2016-02-23. * Initial release. db/login/vendor/tecnickcom/tcpdf/README.md000064400000011237151502156020014235 0ustar00# TCPDF *PHP PDF Library* [![Donate via PayPal](https://img.shields.io/badge/donate-paypal-87ceeb.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations¤cy_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20TCPDF%20project) *Please consider supporting this project by making a donation via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations¤cy_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20TCPDF%20project)* * **category** Library * **author** Nicola Asuni * **copyright** 2002-2020 Nicola Asuni - Tecnick.com LTD * **license** http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT) * **link** http://www.tcpdf.org * **source** https://github.com/tecnickcom/TCPDF ## IMPORTANT A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this version will not receive any additional development or support. This version should be considered obsolete, new projects should use the new version as soon it will become stable. ## Description PHP library for generating PDF documents on-the-fly. ### Main Features: * no external libraries are required for the basic functions; * all standard page formats, custom page formats, custom margins and units of measure; * UTF-8 Unicode and Right-To-Left languages; * TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 and CID-0 fonts; * font subsetting; * methods to publish some XHTML + CSS code, Javascript and Forms; * images, graphic (geometric figures) and transformation methods; * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/script/formats.php) * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417; * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies; * automatic page header and footer management; * document encryption up to 256 bit and digital signature certifications; * transactions to UNDO commands; * PDF annotations, including links, text and file attachments; * text rendering modes (fill, stroke and clipping); * multiple columns mode; * no-write page regions; * bookmarks, named destinations and table of content; * text hyphenation; * text stretching and spacing (tracking); * automatic page break, line break and text alignments including justification; * automatic page numbering and page groups; * move and delete pages; * page compression (requires php-zlib extension); * XOBject Templates; * Layers and object visibility. * PDF/A-1b support. ### Third party fonts: This library may include third party font files released with different licenses. All the PHP files on the fonts directory are subject to the general TCPDF license (GNU-LGPLv3), they do not contain any binary data but just a description of the general properties of a particular font. These files can be also generated on the fly using the font utilities and TCPDF methods. All the original binary TTF font files have been renamed for compatibility with TCPDF and compressed using the gzcompress PHP function that uses the ZLIB data format (.z files). The binary files (.z) that begins with the prefix "free" have been extracted from the GNU FreeFont collection (GNU-GPLv3). The binary files (.z) that begins with the prefix "pdfa" have been derived from the GNU FreeFont, so they are subject to the same license. For the details of Copyright, License and other information, please check the files inside the directory fonts/freefont-20120503 Link : http://www.gnu.org/software/freefont/ The binary files (.z) that begins with the prefix "dejavu" have been extracted from the DejaVu fonts 2.33 (Bitstream) collection. For the details of Copyright, License and other information, please check the files inside the directory fonts/dejavu-fonts-ttf-2.33 Link : http://dejavu-fonts.org The binary files (.z) that begins with the prefix "ae" have been extracted from the Arabeyes.org collection (GNU-GPLv2). Link : http://projects.arabeyes.org/ ### ICC profile: TCPDF includes the sRGB.icc profile from the icc-profiles-free Debian package: https://packages.debian.org/source/stable/icc-profiles-free ## Developer(s) Contact * Nicola Asuni db/login/vendor/tecnickcom/tcpdf/config/tcpdf_config.php000064400000012373151502156020017363 0ustar00. // // See LICENSE.TXT file for more information. //============================================================+ /** * Configuration file for TCPDF. * @author Nicola Asuni * @package com.tecnick.tcpdf * @version 4.9.005 * @since 2004-10-27 */ // IMPORTANT: // If you define the constant K_TCPDF_EXTERNAL_CONFIG, all the following settings will be ignored. // If you use the tcpdf_autoconfig.php, then you can overwrite some values here. /** * Installation path (/var/www/tcpdf/). * By default it is automatically calculated but you can also set it as a fixed string to improve performances. */ //define ('K_PATH_MAIN', ''); /** * URL path to tcpdf installation folder (http://localhost/tcpdf/). * By default it is automatically set but you can also set it as a fixed string to improve performances. */ //define ('K_PATH_URL', ''); /** * Path for PDF fonts. * By default it is automatically set but you can also set it as a fixed string to improve performances. */ //define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/'); /** * Default images directory. * By default it is automatically set but you can also set it as a fixed string to improve performances. */ //define ('K_PATH_IMAGES', ''); /** * Deafult image logo used be the default Header() method. * Please set here your own logo or an empty string to disable it. */ //define ('PDF_HEADER_LOGO', ''); /** * Header logo image width in user units. */ //define ('PDF_HEADER_LOGO_WIDTH', 0); /** * Cache directory for temporary files (full path). */ //define ('K_PATH_CACHE', '/tmp/'); /** * Generic name for a blank image. */ define ('K_BLANK_IMAGE', '_blank.png'); /** * Page format. */ define ('PDF_PAGE_FORMAT', 'A4'); /** * Page orientation (P=portrait, L=landscape). */ define ('PDF_PAGE_ORIENTATION', 'P'); /** * Document creator. */ define ('PDF_CREATOR', 'TCPDF'); /** * Document author. */ define ('PDF_AUTHOR', 'TCPDF'); /** * Header title. */ define ('PDF_HEADER_TITLE', 'TCPDF Example'); /** * Header description string. */ define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); /** * Document unit of measure [pt=point, mm=millimeter, cm=centimeter, in=inch]. */ define ('PDF_UNIT', 'mm'); /** * Header margin. */ define ('PDF_MARGIN_HEADER', 5); /** * Footer margin. */ define ('PDF_MARGIN_FOOTER', 10); /** * Top margin. */ define ('PDF_MARGIN_TOP', 27); /** * Bottom margin. */ define ('PDF_MARGIN_BOTTOM', 25); /** * Left margin. */ define ('PDF_MARGIN_LEFT', 15); /** * Right margin. */ define ('PDF_MARGIN_RIGHT', 15); /** * Default main font name. */ define ('PDF_FONT_NAME_MAIN', 'helvetica'); /** * Default main font size. */ define ('PDF_FONT_SIZE_MAIN', 10); /** * Default data font name. */ define ('PDF_FONT_NAME_DATA', 'helvetica'); /** * Default data font size. */ define ('PDF_FONT_SIZE_DATA', 8); /** * Default monospaced font name. */ define ('PDF_FONT_MONOSPACED', 'courier'); /** * Ratio used to adjust the conversion of pixels to user units. */ define ('PDF_IMAGE_SCALE_RATIO', 1.25); /** * Magnification factor for titles. */ define('HEAD_MAGNIFICATION', 1.1); /** * Height of cell respect font height. */ define('K_CELL_HEIGHT_RATIO', 1.25); /** * Title magnification respect main font size. */ define('K_TITLE_MAGNIFICATION', 1.3); /** * Reduction factor for small font. */ define('K_SMALL_RATIO', 2/3); /** * Set to true to enable the special procedure used to avoid the overlappind of symbols on Thai language. */ define('K_THAI_TOPCHARS', true); /** * If true allows to call TCPDF methods using HTML syntax * IMPORTANT: For security reason, disable this feature if you are printing user HTML content. */ define('K_TCPDF_CALLS_IN_HTML', false); /** * If true and PHP version is greater than 5, then the Error() method throw new exception instead of terminating the execution. */ define('K_TCPDF_THROW_EXCEPTION_ERROR', false); /** * Default timezone for datetime functions */ define('K_TIMEZONE', 'UTC'); //============================================================+ // END OF FILE //============================================================+ db/login/vendor/tecnickcom/tcpdf/fonts/dejavusans.php000064400000612537151502156020016775 0ustar0032,'FontBBox'=>'[-1021 -415 1681 1167]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>34,'StemH'=>15,'AvgWidth'=>507,'MaxWidth'=>1735,'MissingWidth'=>600); $cbbox=array(0=>array(50,-177,550,705),33=>array(151,0,250,729),34=>array(96,458,364,729),35=>array(77,0,761,718),36=>array(83,-147,553,760),37=>array(55,-14,895,742),38=>array(63,-14,749,742),39=>array(96,458,179,729),40=>array(86,-132,310,759),41=>array(80,-132,304,759),42=>array(30,286,470,742),43=>array(106,0,732,627),44=>array(77,-116,220,124),45=>array(49,234,312,314),46=>array(107,0,210,124),47=>array(0,-93,337,729),48=>array(66,-14,570,742),49=>array(110,0,544,729),50=>array(73,0,536,742),51=>array(76,-14,556,742),52=>array(49,0,580,729),53=>array(77,-14,549,729),54=>array(70,-14,573,742),55=>array(82,0,551,729),56=>array(68,-14,568,742),57=>array(63,-14,566,742),58=>array(117,0,220,517),59=>array(77,-116,220,517),60=>array(106,46,732,581),61=>array(106,172,732,454),62=>array(106,46,732,581),63=>array(72,0,461,742),64=>array(66,-174,930,704),65=>array(8,0,676,729),66=>array(98,0,615,729),67=>array(56,-14,644,742),68=>array(98,0,711,729),69=>array(98,0,568,729),70=>array(98,0,517,729),71=>array(56,-14,693,742),72=>array(98,0,654,729),73=>array(98,0,197,729),74=>array(-52,-200,197,729),75=>array(98,0,677,729),76=>array(98,0,552,729),77=>array(98,0,765,729),78=>array(98,0,650,729),79=>array(56,-14,731,742),80=>array(98,0,569,729),81=>array(56,-129,731,742),82=>array(98,0,666,729),83=>array(66,-14,579,742),84=>array(-3,0,614,729),85=>array(87,-14,645,729),86=>array(8,0,676,729),87=>array(33,0,956,729),88=>array(30,0,654,729),89=>array(-2,0,613,729),90=>array(45,0,640,729),91=>array(86,-132,293,760),92=>array(0,-93,337,729),93=>array(97,-132,304,760),94=>array(106,457,732,729),95=>array(-10,-236,510,-166),96=>array(83,617,317,800),97=>array(60,-14,522,560),98=>array(91,-14,580,760),99=>array(55,-14,488,560),100=>array(55,-14,544,760),101=>array(55,-14,562,560),102=>array(23,0,371,760),103=>array(55,-208,544,560),104=>array(91,0,549,760),105=>array(94,0,184,760),106=>array(-18,-208,184,760),107=>array(91,0,576,760),108=>array(94,0,184,760),109=>array(91,0,889,560),110=>array(91,0,549,560),111=>array(55,-14,557,560),112=>array(91,-208,580,560),113=>array(55,-208,544,560),114=>array(91,0,411,560),115=>array(54,-14,472,560),116=>array(27,0,368,702),117=>array(85,-14,543,560),118=>array(30,0,562,547),119=>array(42,0,776,547),120=>array(29,0,559,547),121=>array(30,-208,562,547),122=>array(43,0,482,547),123=>array(125,-163,511,760),124=>array(127,-236,210,764),125=>array(125,-163,511,760),126=>array(106,228,732,399),161=>array(151,0,250,729),162=>array(84,-153,517,699),163=>array(63,0,548,742),164=>array(46,40,592,587),165=>array(40,0,595,729),166=>array(127,-171,210,699),167=>array(45,-95,454,742),168=>array(105,659,395,758),169=>array(138,0,862,725),170=>array(56,229,404,742),171=>array(77,69,518,517),172=>array(106,140,732,421),173=>array(49,234,312,314),174=>array(138,0,862,725),175=>array(104,673,396,745),176=>array(95,432,405,742),177=>array(106,0,732,627),178=>array(46,326,338,742),179=>array(48,319,350,742),180=>array(181,616,415,800),181=>array(85,-208,612,547),182=>array(77,-96,528,729),183=>array(107,285,210,409),184=>array(142,-193,344,0),185=>array(67,326,346,734),186=>array(47,229,424,742),187=>array(94,69,535,517),188=>array(67,-14,937,742),189=>array(67,-14,906,742),190=>array(48,-14,937,742),191=>array(70,-14,459,729),192=>array(8,0,676,927),193=>array(8,0,676,927),194=>array(8,0,676,928),195=>array(8,0,676,921),196=>array(8,0,676,913),197=>array(8,0,676,928),198=>array(4,0,910,729),199=>array(56,-193,644,742),200=>array(98,0,568,927),201=>array(98,0,568,927),202=>array(98,0,568,928),203=>array(98,0,568,913),204=>array(29,0,216,927),205=>array(79,0,265,927),206=>array(-1,0,297,928),207=>array(3,0,293,913),208=>array(5,0,716,729),209=>array(98,0,650,921),210=>array(56,-14,731,927),211=>array(56,-14,731,927),212=>array(56,-14,731,928),213=>array(56,-14,731,921),214=>array(56,-14,731,913),215=>array(137,31,701,596),216=>array(50,-34,737,761),217=>array(87,-14,645,927),218=>array(87,-14,645,927),219=>array(87,-14,645,928),220=>array(87,-14,645,913),221=>array(-2,0,613,927),222=>array(98,0,569,729),223=>array(91,-14,584,760),224=>array(60,-14,522,800),225=>array(60,-14,522,800),226=>array(60,-14,522,800),227=>array(60,-14,522,777),228=>array(60,-14,522,758),229=>array(60,-14,522,878),230=>array(60,-14,929,560),231=>array(55,-193,488,560),232=>array(55,-14,562,800),233=>array(55,-14,562,800),234=>array(55,-14,562,800),235=>array(55,-14,562,758),236=>array(-28,0,206,800),237=>array(70,0,304,800),238=>array(-17,0,295,800),239=>array(-6,0,284,758),240=>array(55,-14,557,760),241=>array(91,0,549,777),242=>array(55,-14,557,800),243=>array(55,-14,557,800),244=>array(55,-14,557,800),245=>array(55,-14,557,777),246=>array(55,-14,557,758),247=>array(106,73,732,554),248=>array(35,-46,576,592),249=>array(85,-14,543,800),250=>array(85,-14,543,800),251=>array(85,-14,543,800),252=>array(85,-14,543,758),253=>array(30,-208,562,800),254=>array(91,-208,580,760),255=>array(30,-208,562,758),256=>array(8,0,676,899),257=>array(60,-14,522,745),258=>array(8,0,676,946),259=>array(60,-14,522,765),260=>array(8,-193,706,729),261=>array(60,-193,563,560),262=>array(56,-14,644,927),263=>array(55,-14,488,800),264=>array(56,-14,644,928),265=>array(55,-14,488,800),266=>array(56,-14,644,914),267=>array(55,-14,488,760),268=>array(56,-14,644,928),269=>array(55,-14,488,800),270=>array(98,0,711,928),271=>array(55,-14,732,760),272=>array(5,0,716,729),273=>array(55,-14,619,760),274=>array(98,0,568,900),275=>array(55,-14,562,745),276=>array(98,0,568,928),277=>array(55,-14,562,785),278=>array(98,0,568,914),279=>array(55,-14,562,760),280=>array(98,-193,569,729),281=>array(55,-193,562,560),282=>array(98,0,568,925),283=>array(55,-14,562,797),284=>array(56,-14,693,928),285=>array(55,-208,544,800),286=>array(56,-14,693,928),287=>array(55,-208,544,785),288=>array(56,-14,693,914),289=>array(55,-208,544,760),290=>array(56,-250,693,742),291=>array(55,-208,544,775),292=>array(98,0,654,928),293=>array(-13,0,549,928),294=>array(98,0,818,729),295=>array(59,0,578,760),296=>array(-14,0,309,921),297=>array(-22,0,300,777),298=>array(1,0,293,899),299=>array(-7,0,285,745),300=>array(-5,0,300,928),301=>array(-14,0,292,785),302=>array(86,-193,268,729),303=>array(73,-193,255,760),304=>array(98,0,198,914),305=>array(94,0,184,560),306=>array(98,-200,492,729),307=>array(94,-208,461,760),308=>array(-52,-200,296,928),309=>array(-18,-208,295,800),310=>array(98,-235,677,729),311=>array(91,-235,576,760),312=>array(91,0,576,547),313=>array(98,0,552,928),314=>array(94,0,286,928),315=>array(98,-235,552,729),316=>array(66,-235,209,760),317=>array(98,0,552,729),318=>array(94,0,375,760),319=>array(98,0,552,729),320=>array(94,0,314,760),321=>array(-7,0,557,729),322=>array(1,0,285,760),323=>array(98,0,650,928),324=>array(91,0,549,803),325=>array(98,-235,650,729),326=>array(91,-235,549,560),327=>array(98,0,650,921),328=>array(91,0,549,800),329=>array(100,0,715,729),330=>array(98,-208,637,742),331=>array(91,-208,549,560),332=>array(56,-14,731,899),333=>array(55,-14,557,745),334=>array(56,-14,731,928),335=>array(55,-14,557,785),336=>array(56,-14,731,927),337=>array(55,-14,557,800),338=>array(56,0,1006,729),339=>array(55,-14,970,560),340=>array(98,0,666,928),341=>array(91,0,447,803),342=>array(98,-235,666,729),343=>array(63,-235,411,560),344=>array(98,0,666,921),345=>array(91,0,419,800),346=>array(66,-14,579,928),347=>array(54,-14,472,803),348=>array(66,-14,579,928),349=>array(54,-14,472,800),350=>array(66,-193,579,742),351=>array(54,-193,472,560),352=>array(66,-14,579,928),353=>array(54,-14,472,800),354=>array(-3,-193,614,729),355=>array(27,-193,368,702),356=>array(-3,0,614,921),357=>array(27,0,374,813),358=>array(-3,0,614,729),359=>array(27,0,368,702),360=>array(87,-14,645,921),361=>array(85,-14,543,777),362=>array(87,-14,645,899),363=>array(85,-14,543,745),364=>array(87,-14,645,928),365=>array(85,-14,543,785),366=>array(87,-14,645,929),367=>array(85,-14,543,849),368=>array(87,-14,645,927),369=>array(85,-14,546,800),370=>array(87,-193,645,729),371=>array(85,-193,613,560),372=>array(33,0,956,932),373=>array(42,0,776,803),374=>array(-2,0,613,932),375=>array(30,-208,562,803),376=>array(-2,0,613,913),377=>array(45,0,640,928),378=>array(43,0,482,803),379=>array(45,0,640,914),380=>array(43,0,482,760),381=>array(45,0,640,928),382=>array(43,0,482,800),383=>array(23,0,371,760),384=>array(16,-14,580,760),385=>array(-51,0,664,729),386=>array(98,0,615,729),387=>array(91,-14,580,760),388=>array(0,0,615,729),389=>array(0,-14,580,760),390=>array(56,-14,644,742),391=>array(56,-14,794,924),392=>array(55,-14,600,760),393=>array(5,0,716,729),394=>array(-51,0,760,729),395=>array(98,0,615,729),396=>array(55,-14,544,760),397=>array(55,-208,557,548),398=>array(64,0,534,729),399=>array(57,-14,731,742),400=>array(80,-14,560,742),401=>array(-52,-200,517,729),402=>array(-63,-208,371,760),403=>array(56,-14,824,924),404=>array(4,-210,683,729),405=>array(91,0,910,760),406=>array(98,0,347,729),407=>array(5,0,290,729),408=>array(98,0,746,742),409=>array(90,0,576,760),410=>array(5,0,271,760),411=>array(30,0,562,760),412=>array(87,-14,894,729),413=>array(-52,-200,650,729),414=>array(91,-208,549,560),415=>array(56,-14,731,742),416=>array(50,-14,764,760),417=>array(58,-14,603,615),418=>array(56,-14,851,742),419=>array(55,-208,668,560),420=>array(-51,0,618,729),421=>array(90,-208,580,760),422=>array(98,-129,666,729),423=>array(56,-14,569,742),424=>array(49,-14,467,560),425=>array(98,0,568,729),426=>array(-132,-208,355,760),427=>array(27,-208,368,702),428=>array(12,0,614,729),429=>array(27,0,368,760),430=>array(-3,-200,614,729),431=>array(84,-4,796,760),432=>array(86,-14,676,615),433=>array(38,-14,726,724),434=>array(98,-15,683,729),435=>array(-2,0,742,742),436=>array(30,-208,730,560),437=>array(45,0,640,729),438=>array(43,0,482,547),439=>array(78,-31,621,729),440=>array(45,-31,588,729),441=>array(51,-213,531,547),442=>array(55,-208,488,547),443=>array(73,0,536,742),444=>array(45,-31,622,729),445=>array(51,-213,531,547),446=>array(43,-14,456,702),447=>array(91,-208,580,560),448=>array(98,-208,197,729),449=>array(98,-208,394,729),450=>array(10,-208,451,729),451=>array(98,0,197,729),452=>array(98,0,1352,928),453=>array(98,0,1211,800),454=>array(55,-14,1071,800),455=>array(98,-200,768,729),456=>array(98,-208,733,760),457=>array(94,-208,367,760),458=>array(98,-200,868,729),459=>array(98,-208,839,760),460=>array(91,-208,733,760),461=>array(8,0,676,928),462=>array(60,-14,522,800),463=>array(-1,0,297,928),464=>array(-16,0,296,800),465=>array(56,-14,731,928),466=>array(55,-14,557,800),467=>array(87,-14,645,928),468=>array(85,-14,543,800),469=>array(87,-14,645,1025),470=>array(85,-14,543,899),471=>array(87,-14,645,1044),472=>array(85,-14,543,892),473=>array(87,-14,645,1044),474=>array(85,-14,543,892),475=>array(87,-14,645,1047),476=>array(85,-14,543,892),477=>array(55,-14,562,560),478=>array(8,0,676,1025),479=>array(60,-14,522,899),480=>array(8,0,676,1025),481=>array(60,-14,522,869),482=>array(4,0,910,900),483=>array(60,-14,929,743),484=>array(56,-14,752,742),485=>array(55,-208,622,560),486=>array(56,-14,693,928),487=>array(55,-208,544,798),488=>array(98,0,677,928),489=>array(-11,0,576,928),490=>array(56,-193,731,742),491=>array(55,-193,557,560),492=>array(56,-193,731,899),493=>array(55,-193,557,745),494=>array(78,-31,621,928),495=>array(43,-213,523,800),496=>array(-18,-208,299,800),497=>array(98,0,1352,729),498=>array(98,0,1211,729),499=>array(55,-14,1071,760),500=>array(56,-14,693,928),501=>array(55,-208,544,798),502=>array(98,-14,1022,729),503=>array(98,-208,626,742),504=>array(98,0,650,927),505=>array(91,0,549,799),506=>array(8,0,676,931),507=>array(60,-14,607,931),508=>array(4,0,910,928),509=>array(60,-14,929,798),510=>array(50,-34,737,928),511=>array(35,-46,576,798),512=>array(8,0,676,930),513=>array(60,-14,522,799),514=>array(8,0,676,901),515=>array(60,-14,522,785),516=>array(98,0,568,930),517=>array(55,-14,562,798),518=>array(98,0,568,901),519=>array(55,-14,562,785),520=>array(-43,0,306,930),521=>array(-30,0,313,798),522=>array(2,0,308,901),523=>array(-14,0,292,785),524=>array(56,-14,731,930),525=>array(55,-14,557,799),526=>array(56,-14,731,901),527=>array(55,-14,557,785),528=>array(97,0,666,930),529=>array(63,0,411,798),530=>array(98,0,666,901),531=>array(91,0,421,785),532=>array(87,-14,645,930),533=>array(85,-14,543,799),534=>array(87,-14,645,901),535=>array(85,-14,543,785),536=>array(66,-240,579,742),537=>array(54,-240,472,560),538=>array(-3,-240,614,729),539=>array(27,-240,368,702),540=>array(76,-210,556,742),541=>array(35,-211,467,560),542=>array(98,0,654,928),543=>array(-8,0,549,928),544=>array(98,-208,637,742),545=>array(55,-70,783,760),546=>array(55,-14,643,742),547=>array(55,-14,555,632),548=>array(45,-208,640,729),549=>array(43,-208,482,547),550=>array(8,0,676,914),551=>array(60,-14,522,760),552=>array(98,-193,568,729),553=>array(55,-193,562,560),554=>array(56,-14,731,1025),555=>array(55,-14,557,899),556=>array(56,-14,731,1025),557=>array(55,-14,557,864),558=>array(56,-14,731,914),559=>array(55,-14,557,760),560=>array(56,-14,731,1025),561=>array(55,-14,557,899),562=>array(-2,0,613,899),563=>array(30,-208,562,745),564=>array(67,-70,420,757),565=>array(91,-70,788,560),566=>array(27,-70,422,702),567=>array(-18,-208,184,547),568=>array(55,-14,943,760),569=>array(55,-208,943,560),570=>array(-1,-34,686,761),571=>array(6,-34,692,761),572=>array(4,-46,545,592),573=>array(5,0,552,729),574=>array(-38,-34,649,761),575=>array(54,-242,512,560),576=>array(43,-242,525,547),577=>array(39,0,569,729),578=>array(39,0,445,560),579=>array(5,0,615,729),580=>array(6,-14,726,729),581=>array(8,0,676,729),582=>array(98,-93,568,822),583=>array(55,-93,562,640),584=>array(-52,-200,290,729),585=>array(-18,-208,264,760),586=>array(56,-200,836,743),587=>array(55,-208,656,560),588=>array(5,0,666,729),589=>array(7,0,411,560),590=>array(-5,0,615,729),591=>array(5,-208,588,547),592=>array(85,-14,547,560),593=>array(55,-14,544,560),594=>array(91,-14,580,560),595=>array(91,-14,580,760),596=>array(62,-14,495,560),597=>array(55,-69,488,560),598=>array(55,-208,656,760),599=>array(55,-14,715,760),600=>array(55,-14,562,560),601=>array(55,-14,562,560),602=>array(61,-14,814,560),603=>array(65,-14,473,561),604=>array(65,-14,473,561),605=>array(65,-14,771,561),606=>array(55,-14,596,561),607=>array(-18,-208,264,547),608=>array(55,-208,715,760),609=>array(55,-208,544,547),610=>array(55,-14,539,560),611=>array(47,-210,549,547),612=>array(47,-14,549,547),613=>array(85,-208,543,547),614=>array(91,0,549,760),615=>array(91,-208,549,760),616=>array(7,0,265,760),617=>array(81,0,304,547),618=>array(57,0,314,547),619=>array(37,0,359,760),620=>array(38,0,416,760),621=>array(94,-208,296,760),622=>array(94,-213,651,760),623=>array(91,-13,889,548),624=>array(91,-208,889,548),625=>array(91,-208,889,560),626=>array(-18,-208,552,560),627=>array(91,-208,661,560),628=>array(87,0,549,547),629=>array(55,-14,557,560),630=>array(55,0,768,547),631=>array(72,-18,655,561),632=>array(55,-208,602,760),633=>array(0,-13,320,547),634=>array(0,-13,320,755),635=>array(0,-208,433,547),636=>array(91,-207,411,560),637=>array(91,-208,411,560),638=>array(64,0,437,560),639=>array(57,0,437,560),640=>array(91,0,574,547),641=>array(91,0,574,547),642=>array(54,-208,472,560),643=>array(-19,-208,355,760),644=>array(-19,-208,355,760),645=>array(27,-208,401,549),646=>array(-132,-208,355,760),647=>array(27,-156,368,546),648=>array(27,-208,370,702),649=>array(0,-14,634,547),650=>array(55,-15,564,547),651=>array(94,0,545,548),652=>array(30,0,562,547),653=>array(42,0,776,547),654=>array(30,0,562,760),655=>array(50,0,552,547),656=>array(43,-208,593,547),657=>array(43,-54,482,547),658=>array(43,-213,523,547),659=>array(53,-213,553,547),660=>array(43,0,456,759),661=>array(43,0,456,759),662=>array(43,0,456,759),663=>array(43,-213,456,760),664=>array(56,-14,731,742),665=>array(91,0,530,547),666=>array(55,-14,596,561),667=>array(55,-14,724,760),668=>array(91,0,563,547),669=>array(-132,-208,272,760),670=>array(91,-213,576,547),671=>array(91,0,493,547),672=>array(55,-208,746,759),673=>array(43,0,456,759),674=>array(43,0,456,759),675=>array(55,-14,970,760),676=>array(55,-213,1014,760),677=>array(55,-54,970,760),678=>array(27,0,781,702),679=>array(27,-208,629,760),680=>array(27,-70,723,702),681=>array(23,-208,804,760),682=>array(94,0,657,760),683=>array(94,0,610,760),684=>array(26,-15,489,640),685=>array(26,84,489,640),686=>array(0,-214,570,760),687=>array(0,-208,683,760),688=>array(57,326,346,751),689=>array(57,326,346,751),690=>array(-11,209,116,751),691=>array(57,326,259,640),692=>array(35,319,236,632),693=>array(35,209,307,632),694=>array(16,326,320,632),695=>array(26,326,489,632),696=>array(19,209,354,632),697=>array(78,557,203,800),698=>array(78,557,384,800),699=>array(85,489,228,729),700=>array(87,499,230,729),701=>array(96,616,239,856),702=>array(57,492,191,760),703=>array(57,492,191,760),704=>array(57,326,317,751),705=>array(57,326,317,751),706=>array(130,524,370,836),707=>array(130,524,370,836),708=>array(94,561,406,800),709=>array(94,561,406,800),710=>array(94,616,406,800),711=>array(94,616,406,800),712=>array(104,488,171,759),713=>array(104,673,396,745),714=>array(181,616,415,800),715=>array(83,617,317,800),716=>array(104,-148,171,123),717=>array(104,-156,396,-84),718=>array(83,-236,317,-54),719=>array(181,-236,415,-53),720=>array(54,0,229,517),721=>array(54,356,229,517),722=>array(57,249,191,517),723=>array(57,249,191,517),724=>array(140,229,360,448),725=>array(140,229,360,448),726=>array(49,125,341,417),727=>array(49,234,269,307),728=>array(97,645,403,785),729=>array(200,658,300,758),730=>array(116,610,384,878),731=>array(162,-193,344,0),732=>array(89,639,411,777),733=>array(117,616,460,800),734=>array(-0,233,334,504),735=>array(117,616,383,800),736=>array(57,208,374,632),737=>array(60,326,116,751),738=>array(57,326,320,648),739=>array(57,326,391,632),740=>array(57,326,317,751),741=>array(104,0,389,668),742=>array(104,0,389,668),743=>array(104,0,389,668),744=>array(104,0,389,668),745=>array(104,0,389,668),748=>array(94,-260,406,-21),749=>array(104,610,396,808),750=>array(85,489,428,729),755=>array(116,-240,384,28),759=>array(89,-192,411,-55),768=>array(-418,560,-184,800),769=>array(-320,560,-86,800),770=>array(-406,560,-94,800),771=>array(-412,639,-90,777),772=>array(-394,673,-102,745),773=>array(-510,686,10,755),774=>array(-407,645,-101,785),775=>array(-296,560,-206,760),776=>array(-395,560,-105,758),777=>array(-348,618,-129,810),778=>array(-385,610,-117,878),779=>array(-381,616,-38,800),780=>array(-404,560,-92,800),781=>array(-283,615,-217,832),782=>array(-383,615,-117,832),783=>array(-455,616,-112,800),784=>array(-407,645,-101,917),785=>array(-407,645,-101,785),786=>array(-235,489,-92,645),787=>array(-305,595,-187,844),788=>array(-305,595,-187,844),789=>array(-66,575,66,759),790=>array(-418,-266,-184,-83),791=>array(-320,-267,-86,-83),792=>array(-357,-240,-221,-24),793=>array(-279,-240,-143,-24),794=>array(-208,690,31,930),795=>array(-133,427,60,609),796=>array(-313,-241,-208,-32),797=>array(-370,-240,-130,-87),798=>array(-370,-240,-130,-87),799=>array(-357,-240,-143,-24),800=>array(-370,-184,-130,-117),801=>array(-315,-208,-23,63),802=>array(-317,-208,-25,63),803=>array(-296,-183,-206,-69),804=>array(-396,-183,-106,-84),805=>array(-355,-241,-146,-32),806=>array(-323,-240,-180,-84),807=>array(-358,-193,-156,0),808=>array(-338,-193,-156,0),809=>array(-283,-240,-217,-47),810=>array(-383,-211,-114,-50),811=>array(-452,-222,-51,-82),812=>array(-404,-240,-92,-57),813=>array(-407,-240,-95,-57),814=>array(-407,-222,-101,-82),815=>array(-407,-224,-101,-83),816=>array(-412,-222,-90,-84),817=>array(-394,-156,-102,-84),818=>array(-510,-236,10,-166),819=>array(-510,-236,10,-9),820=>array(-557,240,-41,381),821=>array(-316,221,-59,301),822=>array(-634,221,-0,301),823=>array(-574,-46,-33,592),824=>array(-741,-34,-54,761),825=>array(-291,-241,-187,-32),826=>array(-382,-206,-113,-44),827=>array(-359,-240,-139,-21),828=>array(-452,-222,-51,-82),829=>array(-354,619,-138,834),830=>array(-247,595,-109,853),831=>array(-510,528,10,755),832=>array(-418,617,-184,800),833=>array(-320,616,-86,800),834=>array(-412,639,-90,777),835=>array(-305,595,-187,844),836=>array(-387,659,-77,978),837=>array(-278,-208,-171,-45),838=>array(-396,639,-104,786),839=>array(-360,-226,-140,-35),840=>array(-365,-240,-135,-47),841=>array(-360,-240,-140,-21),842=>array(-411,616,-89,800),843=>array(-411,567,-89,850),844=>array(-411,596,-89,820),845=>array(-452,-230,-48,-30),846=>array(-350,-240,-150,-45),849=>array(-316,610,-184,878),850=>array(-407,547,-101,855),851=>array(-354,-240,-138,-24),855=>array(-316,610,-184,878),856=>array(-103,658,-3,758),858=>array(-430,-241,-71,-32),860=>array(-445,-237,445,-60),861=>array(-445,802,445,979),862=>array(-445,855,445,927),863=>array(-445,-156,445,-84),864=>array(-354,756,354,894),865=>array(-445,752,445,929),866=>array(-442,-230,447,-30),880=>array(98,0,555,729),881=>array(94,0,477,547),882=>array(98,0,764,729),883=>array(98,0,549,729),884=>array(78,557,203,800),885=>array(78,-208,203,35),886=>array(98,0,650,729),887=>array(91,0,559,547),890=>array(214,-208,321,-45),891=>array(62,-14,495,560),892=>array(55,-14,488,560),893=>array(62,-14,495,560),894=>array(77,-116,220,517),900=>array(181,616,415,800),901=>array(105,659,415,978),902=>array(8,0,676,800),903=>array(107,285,210,409),904=>array(-12,0,682,800),905=>array(-6,0,765,800),906=>array(-9,0,311,800),908=>array(-7,-14,750,800),910=>array(-15,0,821,800),911=>array(-18,0,752,800),912=>array(2,0,313,978),913=>array(8,0,676,729),914=>array(98,0,615,729),915=>array(98,0,552,729),916=>array(8,0,676,729),917=>array(98,0,568,729),918=>array(45,0,640,729),919=>array(98,0,654,729),920=>array(56,-14,731,742),921=>array(98,0,197,729),922=>array(98,0,677,729),923=>array(8,0,676,729),924=>array(98,0,765,729),925=>array(98,0,650,729),926=>array(98,0,548,729),927=>array(56,-14,731,742),928=>array(98,0,654,729),929=>array(98,0,569,729),931=>array(98,0,568,729),932=>array(-3,0,614,729),933=>array(-2,0,613,729),934=>array(56,0,731,729),935=>array(30,0,654,729),936=>array(56,0,732,729),937=>array(38,0,726,738),938=>array(3,0,293,913),939=>array(-2,0,613,913),940=>array(55,-12,611,800),941=>array(65,-14,473,800),942=>array(91,-208,549,800),943=>array(81,0,324,800),944=>array(73,-14,521,978),945=>array(55,-12,611,559),946=>array(94,-208,566,766),947=>array(16,-208,562,547),948=>array(55,-14,557,742),949=>array(65,-14,473,561),950=>array(52,-210,496,760),951=>array(91,-208,549,560),952=>array(55,-11,557,768),953=>array(81,0,304,547),954=>array(93,0,565,547),955=>array(30,0,562,760),956=>array(85,-208,612,547),957=>array(36,0,512,547),958=>array(52,-210,500,760),959=>array(55,-14,557,560),960=>array(36,-19,574,547),961=>array(91,-208,580,560),962=>array(55,-210,488,560),963=>array(55,-14,604,547),964=>array(49,0,553,547),965=>array(73,-14,521,547),966=>array(55,-208,602,551),967=>array(29,-208,549,547),968=>array(55,-208,602,547),969=>array(66,-14,769,547),970=>array(2,0,311,758),971=>array(73,-14,521,758),972=>array(55,-14,557,800),973=>array(73,-14,521,800),974=>array(66,-14,769,800),975=>array(98,-208,677,729),976=>array(82,-11,538,768),977=>array(55,-11,557,768),978=>array(42,0,665,734),979=>array(-15,0,829,800),980=>array(42,0,665,913),981=>array(55,-208,602,760),982=>array(32,-14,803,547),983=>array(55,-206,600,550),984=>array(56,-207,731,742),985=>array(55,-208,557,560),986=>array(68,-210,583,729),987=>array(55,-210,540,547),988=>array(98,0,517,729),989=>array(-94,-208,409,760),990=>array(87,-2,604,729),991=>array(93,0,566,759),992=>array(56,-208,797,742),993=>array(58,-180,573,559),994=>array(56,-213,877,729),995=>array(66,-208,769,547),996=>array(56,-208,660,742),997=>array(55,-208,568,560),998=>array(98,-213,735,729),999=>array(22,-14,571,575),1000=>array(39,-208,630,745),1001=>array(49,-208,552,560),1002=>array(56,0,714,742),1003=>array(26,0,599,560),1004=>array(56,-14,643,758),1005=>array(55,-14,544,758),1006=>array(21,-208,589,729),1007=>array(27,-208,510,726),1008=>array(55,-7,600,550),1009=>array(91,-208,580,560),1010=>array(55,-14,488,560),1011=>array(-18,-208,184,760),1012=>array(56,-14,731,742),1013=>array(55,-14,480,560),1014=>array(96,-14,521,560),1015=>array(98,0,569,729),1016=>array(91,-208,580,760),1017=>array(56,-14,644,742),1018=>array(98,0,765,729),1019=>array(62,-208,587,547),1020=>array(42,-208,580,560),1021=>array(56,-14,644,742),1022=>array(56,-14,644,742),1023=>array(56,-14,644,742),1024=>array(98,0,568,927),1025=>array(98,0,568,913),1026=>array(-3,-200,709,729),1027=>array(98,0,552,927),1028=>array(56,-14,644,742),1029=>array(66,-14,579,742),1030=>array(98,0,197,729),1031=>array(3,0,293,913),1032=>array(-52,-200,197,729),1033=>array(41,0,1023,729),1034=>array(98,0,975,729),1035=>array(-3,0,709,729),1036=>array(98,0,690,927),1037=>array(98,0,650,927),1038=>array(17,0,592,928),1039=>array(98,-157,654,729),1040=>array(8,0,676,729),1041=>array(98,0,615,729),1042=>array(98,0,615,729),1043=>array(98,0,552,729),1044=>array(49,-157,732,729),1045=>array(98,0,568,729),1046=>array(20,0,1058,729),1047=>array(66,-14,575,742),1048=>array(98,0,650,729),1049=>array(98,0,650,928),1050=>array(98,0,690,729),1051=>array(41,0,653,729),1052=>array(98,0,765,729),1053=>array(98,0,654,729),1054=>array(56,-14,731,742),1055=>array(98,0,654,729),1056=>array(98,0,569,729),1057=>array(56,-14,644,742),1058=>array(-3,0,614,729),1059=>array(17,0,592,729),1060=>array(59,0,802,729),1061=>array(30,0,654,729),1062=>array(98,-157,737,729),1063=>array(85,0,587,729),1064=>array(98,0,971,729),1065=>array(98,-157,1054,729),1066=>array(29,0,762,729),1067=>array(98,0,784,729),1068=>array(98,0,615,729),1069=>array(54,-14,642,742),1070=>array(103,-14,1023,742),1071=>array(66,0,597,729),1072=>array(60,-14,522,560),1073=>array(55,-14,562,777),1074=>array(91,0,530,547),1075=>array(91,0,477,547),1076=>array(52,-138,639,547),1077=>array(55,-14,562,560),1078=>array(34,0,867,547),1079=>array(65,-14,473,561),1080=>array(91,0,559,547),1081=>array(91,0,559,760),1082=>array(91,0,571,547),1083=>array(37,0,556,547),1084=>array(91,0,664,547),1085=>array(91,0,563,547),1086=>array(55,-14,557,560),1087=>array(91,0,563,547),1088=>array(91,-208,580,560),1089=>array(55,-14,488,560),1090=>array(29,0,553,547),1091=>array(30,-208,562,547),1092=>array(55,-208,800,729),1093=>array(29,0,559,547),1094=>array(91,-138,635,547),1095=>array(73,0,500,547),1096=>array(91,0,824,547),1097=>array(91,-138,896,547),1098=>array(30,0,647,547),1099=>array(91,0,701,560),1100=>array(91,0,530,547),1101=>array(55,-14,488,560),1102=>array(94,-14,787,560),1103=>array(57,0,517,547),1104=>array(55,-14,562,802),1105=>array(55,-14,562,758),1106=>array(23,-208,570,760),1107=>array(91,0,480,803),1108=>array(55,-14,488,560),1109=>array(54,-14,472,560),1110=>array(94,0,184,760),1111=>array(-6,0,284,758),1112=>array(-18,-208,184,760),1113=>array(37,0,843,547),1114=>array(91,0,839,547),1115=>array(23,0,567,760),1116=>array(91,0,571,803),1117=>array(91,0,559,802),1118=>array(30,-208,562,760),1119=>array(91,-138,563,547),1120=>array(56,-14,877,729),1121=>array(66,-14,769,547),1122=>array(15,0,711,729),1123=>array(15,0,613,760),1124=>array(103,-14,888,742),1125=>array(94,-14,688,560),1126=>array(8,0,871,729),1127=>array(25,0,758,547),1128=>array(98,0,1135,729),1129=>array(94,0,977,547),1130=>array(56,0,731,729),1131=>array(52,0,560,547),1132=>array(98,0,971,729),1133=>array(94,0,772,547),1134=>array(56,-208,556,935),1135=>array(44,-193,473,753),1136=>array(8,0,844,729),1137=>array(24,-208,852,765),1138=>array(56,-14,731,742),1139=>array(55,-14,557,560),1140=>array(8,0,769,742),1141=>array(24,0,640,560),1142=>array(8,0,769,930),1143=>array(24,0,640,800),1144=>array(56,-208,962,742),1145=>array(55,-208,875,560),1146=>array(56,-14,897,742),1147=>array(55,-14,704,560),1148=>array(58,-14,1122,932),1149=>array(74,-14,954,758),1150=>array(56,-14,877,900),1151=>array(66,-14,769,734),1152=>array(56,-208,644,742),1153=>array(55,-208,488,560),1154=>array(29,-44,474,457),1155=>array(-519,608,-93,810),1156=>array(-372,645,4,788),1157=>array(-288,595,-169,797),1158=>array(-288,595,-169,797),1159=>array(-776,606,4,788),1160=>array(-1021,-180,409,922),1161=>array(-957,-280,345,1022),1162=>array(98,-208,748,928),1163=>array(94,-208,652,760),1164=>array(16,0,615,729),1165=>array(19,0,534,702),1166=>array(98,0,610,729),1167=>array(91,-208,580,560),1168=>array(98,0,552,878),1169=>array(91,0,477,700),1170=>array(35,0,617,729),1171=>array(27,0,542,547),1172=>array(98,-200,600,729),1173=>array(91,-208,505,547),1174=>array(20,-157,1071,729),1175=>array(34,-138,876,547),1176=>array(66,-193,575,742),1177=>array(65,-193,473,561),1178=>array(98,-157,713,729),1179=>array(91,-138,587,547),1180=>array(98,0,690,729),1181=>array(91,0,571,547),1182=>array(16,0,690,729),1183=>array(30,0,571,760),1184=>array(24,0,837,729),1185=>array(21,0,688,547),1186=>array(98,-157,752,729),1187=>array(94,-138,656,547),1188=>array(98,0,1009,729),1189=>array(94,0,862,547),1190=>array(98,-200,1057,729),1191=>array(94,-208,891,547),1192=>array(56,-14,871,743),1193=>array(55,-14,684,560),1194=>array(56,-193,644,742),1195=>array(55,-193,488,560),1196=>array(-3,-157,614,729),1197=>array(29,-138,553,547),1198=>array(-2,0,613,729),1199=>array(30,-208,562,547),1200=>array(-2,0,613,729),1201=>array(30,-208,562,547),1202=>array(30,-157,654,729),1203=>array(29,-138,559,547),1204=>array(-3,-157,910,729),1205=>array(2,-138,782,547),1206=>array(85,-157,686,729),1207=>array(73,-138,590,547),1208=>array(85,0,587,729),1209=>array(73,0,500,547),1210=>array(85,0,587,729),1211=>array(91,0,549,760),1212=>array(10,-14,885,742),1213=>array(7,-14,675,560),1214=>array(10,-184,885,742),1215=>array(7,-161,675,560),1216=>array(98,0,197,729),1217=>array(20,0,1058,928),1218=>array(34,0,867,785),1219=>array(98,-200,651,729),1220=>array(93,-208,566,547),1221=>array(26,-208,751,729),1222=>array(22,-208,646,547),1223=>array(98,-200,654,729),1224=>array(94,-208,566,547),1225=>array(98,-208,752,729),1226=>array(94,-208,656,547),1227=>array(85,-157,587,729),1228=>array(73,-138,500,547),1229=>array(98,-208,863,729),1230=>array(94,-208,750,547),1231=>array(94,0,184,760),1232=>array(8,0,676,946),1233=>array(60,-14,522,765),1234=>array(8,0,676,913),1235=>array(60,-14,522,758),1236=>array(4,0,910,729),1237=>array(60,-14,929,560),1238=>array(98,0,568,928),1239=>array(55,-14,562,785),1240=>array(57,-14,731,742),1241=>array(55,-14,562,560),1242=>array(57,-14,731,913),1243=>array(55,-14,562,758),1244=>array(20,0,1058,913),1245=>array(34,0,867,758),1246=>array(66,-14,575,913),1247=>array(65,-14,473,758),1248=>array(78,-31,621,729),1249=>array(43,-213,523,547),1250=>array(98,0,650,899),1251=>array(91,0,559,745),1252=>array(98,0,650,913),1253=>array(91,0,559,758),1254=>array(56,-14,731,913),1255=>array(55,-14,557,758),1256=>array(56,-14,731,742),1257=>array(55,-14,557,560),1258=>array(56,-14,731,913),1259=>array(55,-14,557,758),1260=>array(54,-14,642,913),1261=>array(55,-14,488,758),1262=>array(17,0,592,899),1263=>array(30,-208,562,745),1264=>array(17,0,592,913),1265=>array(30,-208,562,758),1266=>array(17,0,592,927),1267=>array(30,-208,562,800),1268=>array(85,0,587,913),1269=>array(73,0,500,758),1270=>array(98,-157,552,729),1271=>array(91,-138,477,547),1272=>array(98,0,784,913),1273=>array(91,0,701,758),1274=>array(35,-208,617,729),1275=>array(27,-208,542,547),1276=>array(30,-200,646,729),1277=>array(29,-208,549,547),1278=>array(30,0,654,729),1279=>array(29,0,559,547),1280=>array(71,0,588,729),1281=>array(55,0,495,547),1282=>array(71,-14,908,729),1283=>array(55,-14,806,547),1284=>array(98,-14,876,742),1285=>array(83,-14,784,561),1286=>array(98,-208,654,742),1287=>array(83,-208,564,561),1288=>array(26,-14,974,729),1289=>array(22,-14,866,547),1290=>array(98,-14,1022,729),1291=>array(94,-14,876,547),1292=>array(56,-14,692,742),1293=>array(55,-14,534,560),1294=>array(-3,-14,675,729),1295=>array(2,-14,620,547),1296=>array(80,-14,560,742),1297=>array(65,-14,473,561),1298=>array(41,-200,653,729),1299=>array(37,-208,556,547),1300=>array(41,0,1139,729),1301=>array(37,0,962,547),1302=>array(98,0,863,729),1303=>array(91,-208,832,560),1304=>array(66,0,967,729),1305=>array(57,-14,933,560),1306=>array(56,-129,731,742),1307=>array(55,-208,544,560),1308=>array(33,0,956,729),1309=>array(42,0,776,547),1310=>array(98,0,690,729),1311=>array(91,0,571,547),1312=>array(41,-200,1056,729),1313=>array(37,-208,881,547),1314=>array(98,-200,1057,729),1315=>array(91,-208,888,547),1316=>array(98,-157,752,729),1317=>array(91,-138,653,547),1329=>array(87,-29,680,729),1330=>array(87,0,650,743),1331=>array(45,0,729,743),1332=>array(44,0,724,743),1333=>array(87,-14,650,729),1334=>array(87,0,692,744),1335=>array(92,0,616,729),1336=>array(87,0,650,743),1337=>array(87,-14,835,743),1338=>array(45,-14,729,729),1339=>array(92,0,650,729),1340=>array(92,0,533,729),1341=>array(92,-14,849,729),1342=>array(129,-13,763,742),1343=>array(87,0,645,729),1344=>array(34,-26,638,729),1345=>array(82,-23,688,744),1346=>array(49,0,729,743),1347=>array(51,0,715,735),1348=>array(87,-14,767,729),1349=>array(71,-14,668,743),1350=>array(0,-14,680,729),1351=>array(78,-15,684,729),1352=>array(87,0,645,743),1353=>array(59,-28,664,744),1354=>array(44,0,713,743),1355=>array(82,0,686,744),1356=>array(87,0,767,743),1357=>array(87,-14,645,729),1358=>array(49,0,729,729),1359=>array(73,-14,632,741),1360=>array(87,0,645,743),1361=>array(78,-14,675,743),1362=>array(92,0,538,729),1363=>array(59,0,752,729),1364=>array(24,0,679,743),1365=>array(56,-14,731,742),1366=>array(54,-13,746,729),1369=>array(57,492,191,760),1370=>array(87,499,230,729),1371=>array(0,620,234,803),1372=>array(2,618,356,893),1373=>array(-0,617,233,800),1374=>array(4,613,401,866),1375=>array(44,618,462,760),1377=>array(85,-14,883,547),1378=>array(91,-208,549,560),1379=>array(55,-208,648,560),1380=>array(91,-208,653,560),1381=>array(85,-14,548,760),1382=>array(55,-208,648,560),1383=>array(91,0,490,760),1384=>array(91,-208,549,560),1385=>array(91,-208,738,560),1386=>array(55,-14,648,760),1387=>array(91,-208,549,760),1388=>array(91,-208,303,547),1389=>array(91,-208,889,760),1390=>array(55,-14,557,760),1391=>array(85,-208,543,760),1392=>array(91,0,549,760),1393=>array(52,-15,523,760),1394=>array(91,-208,653,560),1395=>array(68,-14,544,768),1396=>array(85,-14,647,760),1397=>array(-21,-208,181,547),1398=>array(-19,-14,543,760),1399=>array(0,-208,435,560),1400=>array(91,0,549,560),1401=>array(5,-208,370,547),1402=>array(85,-208,883,547),1403=>array(54,-208,494,561),1404=>array(91,0,609,560),1405=>array(85,-14,543,560),1406=>array(85,-208,647,760),1407=>array(85,-14,889,560),1408=>array(91,-208,549,560),1409=>array(54,-208,543,560),1410=>array(91,0,449,547),1411=>array(85,-208,889,760),1412=>array(20,-208,580,560),1413=>array(54,-14,556,560),1414=>array(34,-208,766,760),1415=>array(85,-14,812,760),1417=>array(117,0,220,415),1418=>array(49,212,312,314),1456=>array(283,-217,356,-22),1457=>array(83,-217,438,-22),1458=>array(125,-217,454,-22),1459=>array(125,-217,454,-22),1460=>array(283,-159,356,-85),1461=>array(222,-159,417,-85),1462=>array(222,-217,417,-22),1463=>array(173,-159,466,-85),1464=>array(173,-193,466,-46),1465=>array(0,625,73,698),1466=>array(0,625,73,698),1467=>array(148,-237,465,-17),1468=>array(288,237,361,310),1469=>array(283,-217,356,-22),1470=>array(49,472,312,552),1471=>array(173,625,466,698),1472=>array(102,-98,193,645),1473=>array(637,625,710,698),1474=>array(96,625,169,698),1475=>array(102,0,193,547),1478=>array(50,0,357,547),1479=>array(173,-217,466,-22),1488=>array(91,0,578,547),1489=>array(43,0,535,547),1490=>array(43,-5,383,547),1491=>array(43,0,511,547),1492=>array(91,0,563,547),1493=>array(91,0,182,547),1494=>array(43,0,303,547),1495=>array(91,0,563,547),1496=>array(90,-14,593,552),1497=>array(66,204,157,547),1498=>array(43,-208,446,547),1499=>array(43,0,474,547),1500=>array(43,0,492,729),1501=>array(91,0,573,547),1502=>array(43,0,588,555),1503=>array(91,-208,182,547),1504=>array(43,0,309,547),1505=>array(90,-14,593,547),1506=>array(43,-93,535,547),1507=>array(91,-208,549,547),1508=>array(91,0,569,547),1509=>array(43,-208,497,548),1510=>array(43,0,502,547),1511=>array(91,-208,633,546),1512=>array(43,0,474,547),1513=>array(43,0,666,547),1514=>array(10,-4,566,547),1520=>array(91,0,380,547),1521=>array(66,0,332,547),1522=>array(66,204,312,547),1523=>array(91,361,325,547),1524=>array(91,361,554,547),1542=>array(0,-20,607,892),1543=>array(0,-20,607,895),1545=>array(65,0,685,635),1546=>array(65,0,904,635),1548=>array(107,0,250,240),1557=>array(123,624,377,868),1563=>array(107,0,250,633),1567=>array(72,0,461,742),1569=>array(80,42,390,483),1570=>array(-37,0,315,939),1571=>array(53,0,220,999),1572=>array(-42,-244,406,588),1573=>array(53,-244,220,760),1574=>array(63,-131,719,588),1575=>array(94,0,184,760),1576=>array(63,-171,865,327),1577=>array(68,-28,453,513),1578=>array(63,-10,865,391),1579=>array(63,-10,865,513),1580=>array(77,-244,645,425),1581=>array(77,-244,645,425),1582=>array(77,-244,645,586),1583=>array(61,-19,388,415),1584=>array(61,-19,388,586),1585=>array(-42,-244,423,269),1586=>array(-42,-244,423,464),1587=>array(63,-244,1138,366),1588=>array(63,-244,1138,586),1589=>array(63,-244,1134,362),1590=>array(63,-244,1134,464),1591=>array(70,0,857,760),1592=>array(70,0,857,760),1593=>array(57,-244,587,521),1594=>array(57,-244,587,659),1600=>array(-10,0,303,90),1601=>array(63,-45,952,635),1602=>array(52,-215,701,635),1603=>array(70,-27,722,760),1604=>array(70,-152,637,760),1605=>array(68,-240,546,369),1606=>array(72,-162,660,464),1607=>array(68,-28,453,358),1608=>array(-42,-244,406,315),1609=>array(63,-131,719,411),1610=>array(63,-244,719,411),1611=>array(107,591,393,825),1612=>array(107,591,393,874),1613=>array(107,-239,393,-5),1614=>array(107,591,393,708),1615=>array(107,590,393,874),1616=>array(107,-137,393,-20),1617=>array(98,599,402,869),1618=>array(115,610,383,878),1619=>array(74,590,426,719),1620=>array(164,593,331,808),1621=>array(164,-244,331,-29),1623=>array(107,615,393,898),1626=>array(119,616,381,775),1632=>array(215,220,322,342),1633=>array(136,0,342,635),1634=>array(40,0,492,635),1635=>array(37,0,509,635),1636=>array(85,-10,457,641),1637=>array(66,-10,471,643),1638=>array(42,0,493,635),1639=>array(29,0,508,635),1640=>array(29,0,508,635),1641=>array(49,0,493,640),1642=>array(65,0,472,635),1643=>array(0,-110,300,318),1644=>array(87,499,230,729),1645=>array(42,101,502,537),1646=>array(63,-10,865,327),1647=>array(52,-215,701,481),1648=>array(223,602,277,887),1652=>array(60,649,227,864),1657=>array(63,-10,865,575),1658=>array(63,-10,865,513),1659=>array(63,-244,865,327),1660=>array(63,-180,865,391),1661=>array(63,-10,865,464),1662=>array(63,-244,865,327),1663=>array(63,-10,865,513),1664=>array(63,-244,865,327),1665=>array(77,-244,645,710),1666=>array(77,-244,645,708),1667=>array(77,-244,645,425),1668=>array(77,-244,645,425),1669=>array(77,-244,645,708),1670=>array(77,-244,645,425),1671=>array(77,-244,645,425),1672=>array(61,-19,388,746),1673=>array(61,-180,388,415),1674=>array(61,-171,388,415),1675=>array(61,-171,388,746),1676=>array(61,-19,388,586),1677=>array(61,-146,388,415),1678=>array(61,-19,388,708),1679=>array(61,-19,388,684),1680=>array(61,-19,388,708),1681=>array(-42,-244,469,648),1682=>array(-42,-244,473,556),1683=>array(-42,-244,507,269),1684=>array(-42,-244,474,269),1685=>array(-42,-244,634,269),1686=>array(-42,-244,474,269),1687=>array(-42,-244,439,464),1688=>array(-42,-244,439,586),1689=>array(-42,-244,439,586),1690=>array(63,-244,1138,464),1691=>array(63,-244,1138,366),1692=>array(63,-244,1138,586),1693=>array(63,-244,1134,362),1694=>array(63,-244,1134,586),1695=>array(70,0,857,760),1696=>array(57,-244,587,781),1697=>array(63,-45,952,481),1698=>array(63,-171,952,481),1699=>array(63,-171,952,635),1700=>array(63,-45,952,757),1701=>array(63,-293,952,481),1702=>array(63,-45,952,757),1703=>array(52,-215,701,635),1704=>array(52,-215,701,757),1705=>array(63,-43,895,760),1706=>array(63,-43,1000,760),1707=>array(63,-43,895,760),1708=>array(70,-27,722,760),1709=>array(70,-27,722,854),1710=>array(70,-293,722,760),1711=>array(63,-43,895,896),1712=>array(63,-43,895,896),1713=>array(63,-43,895,903),1714=>array(63,-171,895,896),1715=>array(63,-293,895,896),1716=>array(63,-43,895,1025),1717=>array(70,-152,723,971),1718=>array(70,-152,637,952),1719=>array(70,-152,684,1025),1720=>array(70,-391,637,760),1721=>array(72,-317,660,464),1722=>array(72,-162,660,366),1723=>array(72,-162,660,636),1724=>array(72,-330,660,464),1725=>array(72,-162,660,586),1726=>array(70,-33,638,487),1727=>array(77,-244,645,586),1734=>array(-42,-244,406,556),1740=>array(63,-131,719,411),1742=>array(63,-131,719,556),1749=>array(68,-28,453,358),1776=>array(215,220,322,342),1777=>array(136,0,342,635),1778=>array(40,0,492,635),1779=>array(37,0,509,635),1780=>array(40,0,471,643),1781=>array(52,-5,485,643),1782=>array(102,0,445,640),1783=>array(29,0,508,635),1784=>array(29,0,508,635),1785=>array(49,0,493,640),1984=>array(66,-14,570,742),1985=>array(110,0,544,729),1986=>array(110,0,530,729),1987=>array(110,0,530,729),1988=>array(110,0,530,729),1989=>array(110,0,530,729),1990=>array(110,0,530,729),1991=>array(104,0,532,729),1992=>array(104,0,532,729),1993=>array(77,0,560,741),1994=>array(94,0,184,729),1995=>array(55,-14,516,447),1996=>array(30,0,394,731),1997=>array(30,0,562,430),1998=>array(91,0,563,430),1999=>array(91,0,563,430),2000=>array(55,0,539,735),2001=>array(91,0,563,581),2002=>array(55,0,738,741),2003=>array(94,0,408,729),2004=>array(30,0,344,729),2005=>array(91,0,504,729),2006=>array(94,0,518,729),2007=>array(30,0,256,729),2008=>array(94,0,865,513),2009=>array(30,0,443,729),2010=>array(30,0,754,729),2011=>array(91,0,563,430),2012=>array(30,0,595,729),2013=>array(94,0,679,729),2014=>array(94,0,436,729),2015=>array(55,0,630,729),2016=>array(30,0,443,729),2017=>array(30,0,595,729),2018=>array(55,0,539,729),2019=>array(94,0,436,729),2020=>array(94,0,436,612),2021=>array(94,0,428,729),2022=>array(55,0,539,729),2023=>array(55,0,539,729),2027=>array(106,673,398,745),2028=>array(32,609,468,800),2029=>array(205,658,305,758),2030=>array(93,616,405,800),2031=>array(44,616,456,800),2032=>array(32,609,468,800),2033=>array(44,616,456,800),2034=>array(200,-184,300,-84),2035=>array(104,659,394,758),2036=>array(98,557,216,760),2037=>array(98,557,216,760),2040=>array(49,0,511,498),2041=>array(49,0,511,483),2042=>array(-10,0,371,72),3647=>array(86,-138,571,769),3713=>array(63,-10,607,560),3714=>array(68,-17,691,568),3716=>array(67,-10,619,568),3719=>array(53,-238,415,568),3720=>array(62,-0,574,575),3722=>array(68,-234,690,568),3725=>array(56,-8,619,573),3732=>array(91,-14,592,560),3733=>array(63,-15,564,579),3734=>array(0,-240,587,560),3735=>array(42,-8,599,571),3737=>array(46,-14,593,568),3738=>array(36,-8,556,561),3739=>array(36,-8,556,760),3740=>array(43,-8,725,614),3741=>array(91,-14,676,760),3742=>array(51,-8,636,561),3743=>array(51,-8,636,760),3745=>array(31,-14,636,547),3746=>array(56,-8,619,760),3747=>array(68,-8,634,568),3749=>array(39,-8,583,568),3751=>array(56,-13,558,560),3754=>array(39,-8,688,679),3755=>array(62,-12,762,575),3757=>array(56,-14,558,560),3758=>array(68,-8,684,605),3759=>array(99,-166,742,579),3760=>array(54,-13,589,563),3761=>array(-578,639,-43,880),3762=>array(60,0,473,560),3763=>array(-425,0,473,806),3764=>array(-594,615,-73,926),3765=>array(-594,615,0,926),3766=>array(-594,615,-73,926),3767=>array(-594,615,0,926),3768=>array(-376,-350,-161,-38),3769=>array(-418,-306,-152,-40),3771=>array(-578,639,-43,880),3772=>array(-611,-278,6,-39),3773=>array(63,-240,619,715),3776=>array(60,-14,324,560),3777=>array(60,-14,598,560),3778=>array(-22,-5,398,896),3779=>array(45,-14,490,892),3780=>array(92,-11,445,886),3782=>array(72,-232,574,557),3784=>array(-366,618,-278,792),3785=>array(-563,609,-45,891),3786=>array(-595,598,22,869),3787=>array(-462,609,-182,890),3788=>array(-611,636,6,875),3789=>array(-425,620,-220,806),3792=>array(66,-14,570,547),3793=>array(48,-75,582,576),3794=>array(48,-66,545,711),3795=>array(11,-9,692,830),3796=>array(48,-83,601,711),3797=>array(48,-83,601,711),3798=>array(43,-8,744,812),3799=>array(63,-240,607,560),3800=>array(73,-210,680,557),3801=>array(51,-4,621,571),3804=>array(62,-12,947,575),3805=>array(62,-12,973,575),4256=>array(59,-15,815,828),4257=>array(54,-0,704,828),4258=>array(54,-148,649,837),4259=>array(54,-15,781,828),4260=>array(49,0,552,837),4261=>array(39,0,714,837),4262=>array(29,-15,695,828),4263=>array(59,-15,885,837),4264=>array(29,0,390,874),4265=>array(59,0,561,828),4266=>array(29,-15,784,828),4267=>array(59,-15,824,828),4268=>array(63,0,566,828),4269=>array(49,-167,806,837),4270=>array(24,-15,717,837),4271=>array(39,0,566,828),4272=>array(54,-15,853,828),4273=>array(63,-15,567,828),4274=>array(63,-0,566,837),4275=>array(49,-182,806,837),4276=>array(49,0,817,834),4277=>array(44,0,680,828),4278=>array(64,-15,566,837),4279=>array(54,0,557,828),4280=>array(59,-15,562,828),4281=>array(63,0,566,828),4282=>array(59,-15,764,837),4283=>array(59,-15,810,828),4284=>array(63,-0,566,828),4285=>array(49,-15,574,837),4286=>array(63,-0,566,828),4287=>array(29,0,695,828),4288=>array(29,-15,785,828),4289=>array(63,0,566,828),4290=>array(54,-15,635,837),4291=>array(29,0,532,828),4292=>array(54,0,540,828),4293=>array(39,-15,699,837),4304=>array(49,-15,459,592),4305=>array(49,-14,469,837),4306=>array(44,-235,537,551),4307=>array(49,-230,759,547),4308=>array(49,-236,449,547),4309=>array(49,-236,459,547),4310=>array(20,-14,452,838),4311=>array(49,-14,752,547),4312=>array(49,0,469,547),4313=>array(44,-236,456,542),4314=>array(49,-230,1016,552),4315=>array(49,-15,459,837),4316=>array(63,-15,474,833),4317=>array(49,-0,737,547),4318=>array(49,-15,459,833),4319=>array(49,-236,458,551),4320=>array(49,0,747,833),4321=>array(63,-15,474,827),4322=>array(44,-236,610,680),4323=>array(5,-236,464,571),4324=>array(49,-236,766,547),4325=>array(49,-236,449,828),4326=>array(49,-230,737,546),4327=>array(49,-236,459,538),4328=>array(29,-15,454,837),4329=>array(63,0,474,837),4330=>array(44,-236,527,532),4331=>array(49,-14,458,828),4332=>array(64,-15,488,837),4333=>array(49,-236,471,827),4334=>array(63,-15,474,827),4335=>array(10,-235,444,572),4336=>array(49,-15,459,837),4337=>array(59,-15,469,837),4338=>array(49,-141,458,547),4339=>array(49,-236,459,546),4340=>array(49,-236,458,837),4341=>array(49,-15,515,837),4342=>array(49,-236,778,547),4343=>array(44,-236,508,547),4344=>array(49,-236,459,538),4345=>array(39,-236,532,551),4346=>array(49,-77,459,547),4347=>array(54,-10,394,484),4348=>array(49,420,270,837),5121=>array(8,1,676,730),5122=>array(8,0,676,1037),5123=>array(8,0,676,729),5124=>array(8,0,676,914),5125=>array(98,0,711,729),5126=>array(98,0,711,914),5127=>array(98,0,711,913),5129=>array(98,0,711,729),5130=>array(58,0,671,729),5131=>array(58,0,671,914),5132=>array(98,1,827,730),5133=>array(8,1,776,730),5134=>array(98,0,827,729),5135=>array(8,0,776,729),5136=>array(98,0,827,914),5137=>array(8,0,776,914),5138=>array(98,0,909,729),5139=>array(98,0,909,729),5140=>array(98,0,909,914),5141=>array(98,0,909,914),5142=>array(98,0,711,914),5143=>array(98,0,869,729),5144=>array(58,0,909,729),5145=>array(98,0,869,914),5146=>array(58,0,909,914),5147=>array(58,0,671,914),5149=>array(98,629,198,729),5150=>array(67,326,488,734),5151=>array(46,356,362,714),5152=>array(46,356,362,714),5153=>array(67,398,334,674),5154=>array(67,391,334,667),5155=>array(67,398,338,667),5156=>array(67,398,334,667),5157=>array(35,327,405,733),5158=>array(67,326,331,734),5159=>array(98,312,198,412),5160=>array(67,503,334,563),5161=>array(67,399,334,667),5162=>array(67,399,334,691),5163=>array(8,1,1028,730),5164=>array(8,0,847,729),5165=>array(98,0,892,729),5166=>array(58,0,1055,729),5167=>array(8,0,676,729),5168=>array(8,0,676,1037),5169=>array(8,0,676,729),5170=>array(8,0,676,914),5171=>array(58,0,671,729),5172=>array(58,0,671,914),5173=>array(58,0,671,913),5175=>array(58,0,671,729),5176=>array(58,0,671,729),5177=>array(58,0,671,914),5178=>array(98,0,827,729),5179=>array(8,0,776,729),5180=>array(98,0,827,729),5181=>array(8,0,776,729),5182=>array(98,0,827,914),5183=>array(8,0,776,914),5184=>array(98,0,869,729),5185=>array(58,0,909,729),5186=>array(98,0,869,914),5187=>array(58,0,909,914),5188=>array(98,0,869,729),5189=>array(58,0,909,729),5190=>array(98,0,869,914),5191=>array(58,0,909,914),5192=>array(58,0,671,913),5193=>array(67,326,453,734),5194=>array(67,326,137,734),5196=>array(87,-14,645,729),5197=>array(87,0,645,1037),5198=>array(87,0,645,743),5199=>array(87,0,645,914),5200=>array(58,0,671,729),5201=>array(58,0,671,914),5202=>array(58,0,671,913),5204=>array(58,0,671,729),5205=>array(59,0,672,729),5206=>array(59,0,672,914),5207=>array(98,-14,834,729),5208=>array(87,-14,831,729),5209=>array(98,0,834,743),5210=>array(87,0,831,743),5211=>array(98,0,834,914),5212=>array(87,0,831,914),5213=>array(98,0,869,729),5214=>array(58,0,842,729),5215=>array(98,0,869,914),5216=>array(58,0,842,914),5217=>array(98,0,889,729),5218=>array(59,0,842,729),5219=>array(98,0,889,914),5220=>array(59,0,842,914),5221=>array(117,0,889,729),5222=>array(67,326,379,734),5223=>array(87,-14,823,734),5224=>array(87,0,823,743),5225=>array(58,0,811,734),5226=>array(59,0,835,734),5227=>array(34,0,530,743),5228=>array(98,0,594,1037),5229=>array(98,0,594,743),5230=>array(98,0,594,914),5231=>array(34,-14,530,729),5232=>array(34,-14,530,914),5233=>array(34,-14,623,913),5234=>array(98,-14,594,729),5235=>array(98,-14,594,914),5236=>array(98,0,762,743),5237=>array(34,0,712,743),5238=>array(98,0,781,743),5239=>array(98,0,758,743),5240=>array(98,0,781,914),5241=>array(98,0,758,914),5242=>array(98,-14,762,729),5243=>array(34,-14,712,729),5244=>array(98,-14,762,914),5245=>array(34,-14,712,914),5246=>array(98,-14,781,729),5247=>array(98,-14,758,729),5248=>array(98,-14,781,914),5249=>array(98,-14,758,914),5250=>array(117,-14,781,729),5251=>array(67,318,379,734),5252=>array(27,318,340,734),5253=>array(34,0,696,743),5254=>array(98,0,720,743),5255=>array(34,-14,696,734),5256=>array(98,-14,720,734),5257=>array(34,0,530,743),5258=>array(98,0,594,1037),5259=>array(98,0,594,743),5260=>array(98,0,594,914),5261=>array(34,-14,530,729),5262=>array(34,-14,530,914),5263=>array(34,-14,623,913),5264=>array(98,-14,594,729),5265=>array(98,-14,594,914),5266=>array(98,0,762,743),5267=>array(34,0,712,743),5268=>array(98,0,781,743),5269=>array(98,0,758,743),5270=>array(98,0,781,914),5271=>array(98,0,758,914),5272=>array(98,-14,762,729),5273=>array(34,-14,712,729),5274=>array(98,-14,762,914),5275=>array(34,-14,712,914),5276=>array(98,-14,781,729),5277=>array(98,-14,758,729),5278=>array(98,-14,781,914),5279=>array(98,-14,758,914),5280=>array(117,-14,781,729),5281=>array(67,318,379,734),5282=>array(67,318,379,734),5283=>array(58,0,512,729),5284=>array(98,0,552,1037),5285=>array(98,0,552,729),5286=>array(98,0,552,914),5287=>array(58,0,512,729),5288=>array(58,0,512,914),5289=>array(58,0,607,913),5290=>array(98,0,552,729),5291=>array(98,0,552,914),5292=>array(98,0,651,729),5293=>array(58,0,710,729),5294=>array(98,0,741,729),5295=>array(98,0,706,729),5296=>array(98,0,741,914),5297=>array(98,0,706,914),5298=>array(98,0,651,729),5299=>array(58,0,710,729),5300=>array(98,0,651,914),5301=>array(58,0,710,914),5302=>array(98,0,741,729),5303=>array(98,0,706,729),5304=>array(98,0,741,914),5305=>array(98,0,706,914),5306=>array(117,0,741,729),5307=>array(67,326,331,734),5308=>array(67,326,453,734),5309=>array(67,326,331,734),5312=>array(58,-14,817,436),5313=>array(34,-14,793,755),5314=>array(34,-14,793,436),5315=>array(5,-14,765,636),5316=>array(58,0,817,450),5317=>array(58,0,817,636),5318=>array(58,0,817,635),5319=>array(34,0,793,450),5320=>array(34,0,793,636),5321=>array(98,-14,1035,436),5322=>array(58,-14,977,436),5323=>array(98,0,1025,450),5324=>array(34,0,793,450),5325=>array(98,0,1025,636),5326=>array(34,0,793,636),5327=>array(34,0,793,635),5328=>array(67,484,545,736),5329=>array(67,318,397,734),5330=>array(67,484,545,736),5331=>array(58,0,817,450),5332=>array(34,0,793,755),5333=>array(34,0,793,450),5334=>array(34,0,793,636),5335=>array(58,0,817,450),5336=>array(58,0,817,636),5337=>array(58,0,817,635),5338=>array(34,0,793,450),5339=>array(34,0,793,636),5340=>array(98,0,1035,450),5341=>array(58,0,977,450),5342=>array(98,0,1025,450),5343=>array(34,0,972,450),5344=>array(98,0,1025,636),5345=>array(34,0,972,636),5346=>array(98,0,1035,450),5347=>array(58,0,977,450),5348=>array(98,0,1035,636),5349=>array(58,0,977,636),5350=>array(98,0,1025,450),5351=>array(34,0,972,450),5352=>array(98,0,1025,636),5353=>array(34,0,972,636),5354=>array(67,484,545,736),5356=>array(58,0,671,729),5357=>array(34,0,505,729),5358=>array(98,0,649,1037),5359=>array(98,0,569,729),5360=>array(98,0,569,914),5361=>array(34,0,505,729),5362=>array(34,0,505,914),5363=>array(34,0,600,913),5364=>array(98,0,569,729),5365=>array(98,0,569,914),5366=>array(98,0,736,729),5367=>array(34,0,696,729),5368=>array(98,0,758,729),5369=>array(98,0,713,729),5370=>array(98,0,758,914),5371=>array(98,0,713,914),5372=>array(98,0,736,729),5373=>array(34,0,696,729),5374=>array(98,0,736,914),5375=>array(34,0,696,914),5376=>array(98,0,758,729),5377=>array(98,0,713,729),5378=>array(98,0,758,914),5379=>array(98,0,713,914),5380=>array(117,0,758,729),5381=>array(67,326,363,734),5382=>array(67,318,365,741),5383=>array(67,326,363,734),5392=>array(34,-14,678,743),5393=>array(34,-14,678,743),5394=>array(34,-14,678,914),5395=>array(34,-14,857,464),5396=>array(34,-14,857,636),5397=>array(34,-14,857,464),5398=>array(34,-14,857,636),5399=>array(98,-14,875,743),5400=>array(34,-14,814,743),5401=>array(98,-14,875,743),5402=>array(34,-14,814,743),5403=>array(98,-14,875,914),5404=>array(34,-14,814,914),5405=>array(98,-14,1106,464),5406=>array(34,-14,1042,464),5407=>array(98,-14,1106,636),5408=>array(34,-14,1042,636),5409=>array(98,-14,1106,464),5410=>array(34,-14,1042,464),5411=>array(98,-14,1106,636),5412=>array(34,-14,1042,636),5413=>array(67,476,585,737),5414=>array(58,0,529,729),5415=>array(98,0,569,1037),5416=>array(98,0,569,729),5417=>array(98,0,569,914),5418=>array(58,0,529,729),5419=>array(58,0,531,914),5420=>array(58,0,626,913),5421=>array(98,0,569,729),5422=>array(98,0,569,914),5423=>array(98,0,746,729),5424=>array(58,0,723,729),5425=>array(98,0,758,729),5426=>array(98,0,760,729),5427=>array(98,0,758,914),5428=>array(98,0,760,914),5429=>array(98,0,746,729),5430=>array(58,0,723,729),5431=>array(98,0,749,914),5432=>array(58,0,723,914),5433=>array(98,0,758,729),5434=>array(98,0,760,729),5435=>array(98,0,758,914),5436=>array(98,0,760,914),5437=>array(117,0,758,729),5438=>array(67,326,363,734),5440=>array(67,399,334,667),5441=>array(67,326,429,734),5442=>array(98,-14,857,436),5443=>array(58,-14,817,436),5444=>array(58,0,817,450),5445=>array(98,0,857,755),5446=>array(98,0,857,450),5447=>array(98,0,857,636),5448=>array(98,0,569,729),5449=>array(98,0,569,914),5450=>array(98,0,569,729),5451=>array(34,0,505,729),5452=>array(34,0,505,914),5453=>array(34,0,505,729),5454=>array(98,0,736,914),5455=>array(34,0,696,914),5456=>array(67,326,363,734),5458=>array(58,0,671,729),5459=>array(73,0,676,744),5460=>array(73,-15,676,1037),5461=>array(73,-15,676,729),5462=>array(73,-15,676,914),5463=>array(38,0,668,662),5464=>array(38,0,668,914),5465=>array(58,0,688,662),5466=>array(58,0,688,914),5467=>array(98,0,886,914),5468=>array(58,0,909,914),5469=>array(67,326,462,695),5470=>array(87,-14,645,743),5471=>array(87,-14,645,743),5472=>array(87,-14,645,743),5473=>array(87,-14,645,743),5474=>array(87,-14,645,914),5475=>array(87,-14,645,914),5476=>array(41,0,671,729),5477=>array(41,0,671,914),5478=>array(59,0,689,729),5479=>array(59,0,689,914),5480=>array(98,0,907,914),5481=>array(59,0,842,914),5482=>array(67,326,467,734),5492=>array(34,0,772,743),5493=>array(58,0,796,743),5494=>array(58,0,796,914),5495=>array(34,-14,772,729),5496=>array(34,-14,772,914),5497=>array(58,-14,796,729),5498=>array(58,-14,796,914),5499=>array(67,318,508,734),5500=>array(98,0,654,729),5501=>array(67,326,429,734),5502=>array(67,0,1013,1037),5503=>array(67,0,1013,743),5504=>array(67,0,1013,914),5505=>array(67,-14,949,734),5506=>array(67,-14,949,914),5507=>array(67,-14,1013,734),5508=>array(67,-14,1013,914),5509=>array(67,318,798,734),5514=>array(34,0,772,743),5515=>array(58,0,796,743),5516=>array(34,-14,772,729),5517=>array(58,-14,796,729),5518=>array(67,0,1225,1037),5519=>array(67,0,1225,743),5520=>array(67,0,1225,914),5521=>array(67,-14,904,736),5522=>array(67,-14,904,914),5523=>array(67,-14,1225,736),5524=>array(67,-14,1225,914),5525=>array(67,332,645,736),5526=>array(67,332,1018,736),5536=>array(34,0,793,692),5537=>array(34,0,793,692),5538=>array(58,-242,817,450),5539=>array(58,-242,817,636),5540=>array(34,-242,793,450),5541=>array(34,-242,793,636),5542=>array(67,338,545,736),5543=>array(58,0,627,729),5544=>array(16,0,585,729),5545=>array(16,0,585,914),5546=>array(58,0,627,729),5547=>array(58,0,627,914),5548=>array(16,0,585,729),5549=>array(16,0,585,914),5550=>array(5,326,363,734),5551=>array(98,-14,594,729),5598=>array(98,0,711,729),5601=>array(56,0,669,729),5702=>array(67,326,413,734),5703=>array(67,240,413,820),5742=>array(57,0,391,306),5743=>array(67,0,949,743),5744=>array(67,0,1211,743),5745=>array(67,0,1598,743),5746=>array(67,0,1598,914),5747=>array(67,-14,1277,736),5748=>array(67,-14,1277,914),5749=>array(67,-14,1598,736),5750=>array(67,-14,1598,914),5760=>array(-10,246,487,328),5761=>array(-10,-125,502,328),5762=>array(-10,-125,722,328),5763=>array(-10,-125,941,328),5764=>array(-10,-125,1160,328),5765=>array(-10,-125,1379,328),5766=>array(-10,246,502,697),5767=>array(-10,246,722,697),5768=>array(-10,246,941,697),5769=>array(-10,246,1160,697),5770=>array(-10,246,1379,697),5771=>array(-10,-125,508,697),5772=>array(-10,-125,728,697),5773=>array(-10,-125,948,697),5774=>array(-10,-125,1168,697),5775=>array(-10,-125,1389,697),5776=>array(-10,41,502,533),5777=>array(-10,41,722,533),5778=>array(-10,41,939,533),5779=>array(-10,41,1159,533),5780=>array(-10,41,1379,533),5781=>array(-10,-125,508,697),5782=>array(-10,-125,762,697),5783=>array(-10,-83,798,328),5784=>array(-10,-240,1214,328),5785=>array(-10,246,1160,902),5786=>array(-10,82,693,328),5787=>array(55,28,517,544),5788=>array(-10,28,452,544),7424=>array(30,0,562,547),7425=>array(5,0,669,547),7426=>array(60,-14,929,560),7427=>array(30,0,530,547),7428=>array(55,-14,488,560),7429=>array(91,0,550,547),7430=>array(18,0,550,547),7431=>array(91,0,443,547),7432=>array(63,-14,471,561),7433=>array(94,-213,184,547),7434=>array(0,-14,310,547),7435=>array(91,0,576,547),7436=>array(1,0,498,560),7437=>array(91,0,664,547),7438=>array(91,0,559,547),7439=>array(55,-14,557,560),7440=>array(62,-14,495,560),7441=>array(55,22,629,524),7442=>array(55,57,629,489),7443=>array(25,2,663,543),7444=>array(55,-14,970,560),7446=>array(55,273,557,560),7447=>array(55,-14,557,273),7448=>array(74,0,475,547),7449=>array(24,0,507,547),7450=>array(24,0,507,547),7451=>array(29,0,553,547),7452=>array(91,-16,510,547),7453=>array(85,37,646,495),7454=>array(85,38,857,496),7455=>array(23,-238,583,560),7456=>array(30,0,562,547),7457=>array(42,0,776,547),7458=>array(43,0,482,547),7459=>array(59,-14,466,547),7462=>array(87,0,498,560),7463=>array(30,0,562,547),7464=>array(74,0,490,547),7465=>array(74,0,475,547),7466=>array(44,0,546,547),7467=>array(37,0,556,547),7468=>array(5,326,426,734),7469=>array(2,326,573,734),7470=>array(62,326,388,734),7472=>array(62,326,448,734),7473=>array(62,326,358,734),7474=>array(41,326,336,734),7475=>array(35,318,437,742),7476=>array(62,326,412,734),7477=>array(62,326,124,734),7478=>array(-33,214,124,734),7479=>array(62,326,426,734),7480=>array(62,326,348,734),7481=>array(62,326,482,734),7482=>array(62,326,410,734),7483=>array(62,326,410,734),7484=>array(35,318,460,742),7485=>array(35,318,405,742),7486=>array(62,326,358,734),7487=>array(62,326,419,734),7488=>array(-2,326,387,734),7489=>array(55,318,406,734),7490=>array(21,326,603,734),7491=>array(38,318,329,640),7492=>array(38,318,329,640),7493=>array(35,318,343,640),7494=>array(38,318,585,640),7495=>array(57,318,365,751),7496=>array(35,318,343,751),7497=>array(35,318,354,640),7498=>array(35,318,354,640),7499=>array(41,318,298,640),7500=>array(40,318,297,640),7501=>array(35,209,343,640),7502=>array(60,207,116,632),7503=>array(57,326,363,751),7504=>array(57,326,560,640),7505=>array(57,209,346,640),7506=>array(35,318,351,640),7507=>array(35,318,307,640),7508=>array(35,479,351,640),7509=>array(35,318,351,479),7510=>array(57,209,365,640),7511=>array(17,326,232,719),7512=>array(54,318,342,632),7513=>array(54,347,407,604),7514=>array(57,319,560,633),7515=>array(19,326,354,632),7517=>array(59,209,357,755),7518=>array(10,209,354,632),7519=>array(35,318,351,742),7520=>array(35,209,379,635),7521=>array(18,209,346,633),7522=>array(60,0,116,425),7523=>array(57,0,259,313),7524=>array(54,-8,342,306),7525=>array(19,0,354,306),7526=>array(59,-117,357,429),7527=>array(10,-117,354,306),7528=>array(59,-117,367,313),7529=>array(35,-117,379,309),7530=>array(18,-117,346,307),7543=>array(91,-208,580,560),7544=>array(62,326,412,734),7547=>array(57,0,314,547),7549=>array(24,-208,643,560),7557=>array(71,-208,273,760),7579=>array(35,318,343,640),7580=>array(35,318,307,640),7581=>array(35,287,307,640),7582=>array(35,318,351,751),7583=>array(41,318,298,640),7584=>array(15,326,234,751),7585=>array(-11,209,170,632),7586=>array(35,209,343,632),7587=>array(54,209,342,632),7588=>array(36,326,198,751),7589=>array(60,326,187,632),7590=>array(36,326,198,632),7591=>array(36,326,198,632),7592=>array(-83,209,172,751),7593=>array(60,209,187,751),7594=>array(44,209,172,751),7595=>array(55,326,314,640),7596=>array(57,209,560,640),7597=>array(57,209,560,633),7598=>array(-11,209,348,640),7599=>array(57,209,417,640),7600=>array(55,326,346,640),7601=>array(35,318,351,640),7602=>array(35,210,351,751),7603=>array(34,209,297,640),7604=>array(-11,209,224,751),7605=>array(17,209,232,719),7606=>array(46,318,445,632),7607=>array(35,318,355,632),7608=>array(57,317,321,632),7609=>array(60,326,343,632),7610=>array(19,326,354,632),7611=>array(27,326,304,632),7612=>array(27,209,374,632),7613=>array(27,296,304,632),7614=>array(27,207,330,632),7615=>array(35,320,351,756),7620=>array(-456,616,-44,800),7621=>array(-456,616,-44,800),7622=>array(-456,616,-44,800),7623=>array(-456,616,-44,800),7624=>array(-468,616,-32,800),7625=>array(-468,616,-32,800),7680=>array(8,-241,676,729),7681=>array(60,-241,522,560),7682=>array(98,0,615,914),7683=>array(90,-14,580,915),7684=>array(98,-183,615,729),7685=>array(91,-183,580,760),7686=>array(98,-156,615,729),7687=>array(91,-156,580,760),7688=>array(56,-193,644,928),7689=>array(55,-193,488,800),7690=>array(98,0,711,914),7691=>array(55,-14,544,942),7692=>array(98,-183,711,729),7693=>array(55,-183,544,760),7694=>array(98,-156,711,729),7695=>array(55,-156,544,760),7696=>array(98,-192,711,729),7697=>array(55,-193,544,760),7698=>array(98,-240,711,729),7699=>array(55,-240,544,760),7700=>array(98,0,568,1044),7701=>array(55,-14,562,921),7702=>array(98,0,568,1044),7703=>array(55,-14,562,921),7704=>array(98,-213,568,729),7705=>array(55,-213,562,560),7706=>array(98,-192,568,729),7707=>array(55,-192,562,560),7708=>array(98,-193,568,928),7709=>array(55,-193,562,785),7710=>array(98,0,517,914),7711=>array(23,0,371,942),7712=>array(56,-14,693,887),7713=>array(55,-208,544,745),7714=>array(98,0,654,913),7715=>array(90,0,549,915),7716=>array(98,-183,654,729),7717=>array(91,-183,549,760),7718=>array(98,0,654,914),7719=>array(-9,0,549,913),7720=>array(8,-193,654,729),7721=>array(1,-193,549,760),7722=>array(98,-222,654,729),7723=>array(91,-222,549,760),7724=>array(0,-192,322,729),7725=>array(-22,-192,300,760),7726=>array(3,0,293,1044),7727=>array(-6,0,284,886),7728=>array(98,0,677,928),7729=>array(91,0,576,928),7730=>array(98,-183,677,729),7731=>array(91,-183,576,760),7732=>array(98,-156,677,729),7733=>array(91,-156,576,760),7734=>array(98,-183,552,729),7735=>array(98,-183,189,760),7736=>array(1,-183,552,927),7737=>array(-1,-183,291,899),7738=>array(98,-156,552,729),7739=>array(-6,-156,286,760),7740=>array(98,-240,552,729),7741=>array(-17,-240,295,760),7742=>array(98,0,765,928),7743=>array(91,0,889,800),7744=>array(98,0,765,914),7745=>array(91,0,889,760),7746=>array(98,-183,765,729),7747=>array(91,-183,889,560),7748=>array(98,0,650,914),7749=>array(91,0,549,760),7750=>array(98,-183,650,729),7751=>array(91,-183,549,560),7752=>array(98,-156,650,729),7753=>array(91,-156,549,560),7754=>array(98,-240,650,729),7755=>array(91,-240,549,560),7756=>array(56,-14,731,1044),7757=>array(55,-14,557,881),7758=>array(56,-14,731,1042),7759=>array(55,-14,557,882),7760=>array(56,-14,731,1044),7761=>array(55,-14,557,921),7762=>array(56,-14,731,1044),7763=>array(55,-14,557,921),7764=>array(98,0,569,928),7765=>array(91,-208,580,800),7766=>array(98,0,569,914),7767=>array(91,-208,580,760),7768=>array(98,0,666,913),7769=>array(91,0,411,760),7770=>array(98,-183,666,729),7771=>array(91,-183,411,560),7772=>array(98,-183,666,899),7773=>array(91,-183,411,745),7774=>array(98,-156,666,729),7775=>array(41,-156,411,560),7776=>array(66,-14,579,914),7777=>array(54,-14,472,760),7778=>array(66,-183,579,742),7779=>array(54,-183,472,560),7780=>array(66,-14,579,928),7781=>array(54,-14,485,800),7782=>array(66,-14,579,1042),7783=>array(54,-14,472,973),7784=>array(66,-183,579,914),7785=>array(54,-183,472,733),7786=>array(-3,0,614,914),7787=>array(27,0,368,942),7788=>array(-3,-183,614,729),7789=>array(27,-183,368,702),7790=>array(-3,-156,614,729),7791=>array(27,-156,390,702),7792=>array(-3,-240,614,729),7793=>array(27,-240,394,702),7794=>array(87,-183,645,729),7795=>array(85,-183,543,560),7796=>array(87,-192,645,729),7797=>array(85,-192,543,560),7798=>array(87,-213,645,729),7799=>array(85,-213,543,560),7800=>array(87,-14,645,1044),7801=>array(85,-14,543,990),7802=>array(87,-14,645,1025),7803=>array(85,-14,543,869),7804=>array(8,0,676,936),7805=>array(30,0,562,777),7806=>array(8,-183,676,729),7807=>array(30,-183,562,547),7808=>array(33,0,956,931),7809=>array(42,0,776,802),7810=>array(33,0,956,931),7811=>array(42,0,776,803),7812=>array(33,0,956,913),7813=>array(42,0,776,758),7814=>array(33,0,956,913),7815=>array(42,0,776,760),7816=>array(33,-183,956,729),7817=>array(42,-183,776,547),7818=>array(30,0,654,914),7819=>array(29,0,559,760),7820=>array(30,0,654,913),7821=>array(29,0,559,758),7822=>array(-2,0,613,914),7823=>array(30,-208,562,760),7824=>array(45,0,640,928),7825=>array(43,0,482,800),7826=>array(45,-183,640,729),7827=>array(43,-183,482,547),7828=>array(45,-156,640,729),7829=>array(43,-156,482,547),7830=>array(91,-156,549,760),7831=>array(2,0,368,913),7832=>array(42,0,776,878),7833=>array(30,-208,562,878),7834=>array(60,-14,672,760),7835=>array(23,0,371,942),7836=>array(1,0,371,760),7837=>array(23,0,371,760),7838=>array(87,-14,713,743),7839=>array(55,-14,557,742),7840=>array(8,-183,676,729),7841=>array(60,-183,522,560),7842=>array(8,0,676,992),7843=>array(60,-14,522,810),7844=>array(8,0,676,1028),7845=>array(60,-14,585,846),7846=>array(8,0,676,1028),7847=>array(60,-14,522,847),7848=>array(8,0,676,1044),7849=>array(60,-14,577,862),7850=>array(8,0,676,1057),7851=>array(60,-14,522,875),7852=>array(8,-183,676,928),7853=>array(60,-183,522,800),7854=>array(8,0,676,1044),7855=>array(60,-14,522,877),7856=>array(8,0,676,1044),7857=>array(60,-14,522,877),7858=>array(8,0,676,1068),7859=>array(60,-14,522,901),7860=>array(8,0,676,1043),7861=>array(60,-14,522,876),7862=>array(8,-183,676,946),7863=>array(60,-183,522,765),7864=>array(98,-183,568,729),7865=>array(55,-183,562,560),7866=>array(98,0,568,992),7867=>array(55,-14,562,810),7868=>array(98,0,568,921),7869=>array(55,-14,562,777),7870=>array(98,0,637,1028),7871=>array(55,-14,613,846),7872=>array(98,0,568,1028),7873=>array(55,-14,562,847),7874=>array(98,0,620,1044),7875=>array(55,-14,605,862),7876=>array(98,0,568,1057),7877=>array(55,-14,562,875),7878=>array(98,-183,568,928),7879=>array(55,-183,562,800),7880=>array(44,0,263,992),7881=>array(33,0,252,811),7882=>array(98,-183,197,729),7883=>array(93,-183,184,760),7884=>array(56,-183,731,742),7885=>array(55,-183,557,560),7886=>array(56,-14,731,992),7887=>array(55,-14,557,810),7888=>array(56,-14,731,1028),7889=>array(55,-14,601,846),7890=>array(56,-14,731,1028),7891=>array(55,-14,557,847),7892=>array(56,-14,731,1044),7893=>array(55,-14,592,862),7894=>array(56,-14,731,1057),7895=>array(55,-14,557,875),7896=>array(56,-183,731,928),7897=>array(55,-183,557,800),7898=>array(50,-14,764,927),7899=>array(58,-14,603,800),7900=>array(50,-14,764,927),7901=>array(58,-14,603,800),7902=>array(50,-14,764,992),7903=>array(58,-14,603,810),7904=>array(50,-14,764,921),7905=>array(58,-14,603,777),7906=>array(50,-183,764,760),7907=>array(58,-183,603,615),7908=>array(87,-183,645,729),7909=>array(85,-183,543,560),7910=>array(87,-14,645,992),7911=>array(85,-14,543,810),7912=>array(84,-4,796,927),7913=>array(86,-14,676,800),7914=>array(84,-4,796,927),7915=>array(86,-14,676,800),7916=>array(84,-4,796,992),7917=>array(86,-14,676,810),7918=>array(84,-4,796,921),7919=>array(86,-14,676,777),7920=>array(84,-183,796,760),7921=>array(86,-183,676,615),7922=>array(-2,0,613,931),7923=>array(30,-208,562,802),7924=>array(-2,-183,613,729),7925=>array(30,-208,562,547),7926=>array(-2,0,613,996),7927=>array(30,-208,562,813),7928=>array(-2,0,613,921),7929=>array(30,-208,562,777),7930=>array(98,0,764,729),7931=>array(16,0,462,760),7936=>array(55,-12,611,797),7937=>array(55,-12,611,797),7938=>array(55,-12,611,800),7939=>array(55,-12,611,800),7940=>array(55,-12,611,800),7941=>array(55,-12,611,800),7942=>array(55,-12,611,928),7943=>array(55,-12,611,928),7944=>array(8,0,676,797),7945=>array(8,0,676,797),7946=>array(2,0,869,800),7947=>array(3,0,869,800),7948=>array(3,0,761,800),7949=>array(2,0,793,800),7950=>array(3,0,700,928),7951=>array(2,0,734,928),7952=>array(65,-14,473,797),7953=>array(65,-14,473,797),7954=>array(65,-14,473,800),7955=>array(65,-14,473,800),7956=>array(65,-14,486,800),7957=>array(65,-14,501,800),7960=>array(3,0,647,797),7961=>array(3,0,647,797),7962=>array(2,0,902,800),7963=>array(3,0,911,800),7964=>array(3,0,834,800),7965=>array(2,0,864,800),7968=>array(91,-208,549,797),7969=>array(91,-208,549,797),7970=>array(91,-208,549,800),7971=>array(91,-208,549,800),7972=>array(91,-208,549,800),7973=>array(91,-208,549,800),7974=>array(91,-208,549,928),7975=>array(91,-208,549,928),7976=>array(3,0,739,797),7977=>array(3,0,737,797),7978=>array(2,0,988,800),7979=>array(3,0,991,800),7980=>array(3,0,929,800),7981=>array(2,0,953,800),7982=>array(3,0,835,928),7983=>array(2,0,849,928),7984=>array(76,0,304,797),7985=>array(71,0,304,797),7986=>array(-39,0,340,800),7987=>array(-34,0,347,800),7988=>array(2,0,362,800),7989=>array(-22,0,366,800),7990=>array(-26,0,304,928),7991=>array(-28,0,304,928),7992=>array(3,0,282,797),7993=>array(3,0,276,797),7994=>array(2,0,537,800),7995=>array(3,0,537,800),7996=>array(3,0,472,800),7997=>array(2,0,501,800),7998=>array(3,0,392,928),7999=>array(2,0,395,928),8000=>array(55,-14,557,797),8001=>array(55,-14,557,797),8002=>array(55,-14,557,800),8003=>array(55,-14,557,800),8004=>array(55,-14,557,800),8005=>array(55,-14,557,800),8008=>array(3,-14,748,797),8009=>array(3,-14,792,797),8010=>array(2,-14,1039,800),8011=>array(3,-14,1043,800),8012=>array(3,-14,882,800),8013=>array(2,-14,914,800),8016=>array(73,-14,521,797),8017=>array(73,-14,521,797),8018=>array(73,-14,521,800),8019=>array(73,-14,521,800),8020=>array(73,-14,521,800),8021=>array(73,-14,521,800),8022=>array(73,-14,521,928),8023=>array(73,-14,521,928),8025=>array(3,0,786,797),8027=>array(3,0,1000,800),8029=>array(2,0,1014,800),8031=>array(2,0,900,928),8032=>array(66,-14,769,797),8033=>array(66,-14,769,797),8034=>array(66,-14,769,800),8035=>array(66,-14,769,800),8036=>array(66,-14,769,800),8037=>array(66,-14,769,800),8038=>array(66,-14,769,928),8039=>array(66,-14,769,928),8040=>array(3,0,764,797),8041=>array(3,0,805,797),8042=>array(2,0,1051,800),8043=>array(3,0,1057,800),8044=>array(3,0,908,800),8045=>array(2,0,934,800),8046=>array(3,0,883,928),8047=>array(2,0,914,928),8048=>array(55,-12,611,800),8049=>array(55,-12,611,800),8050=>array(65,-14,473,800),8051=>array(65,-14,473,800),8052=>array(91,-208,549,800),8053=>array(91,-208,549,800),8054=>array(-56,0,304,800),8055=>array(81,0,324,800),8056=>array(55,-14,557,800),8057=>array(55,-14,557,800),8058=>array(73,-14,521,800),8059=>array(73,-14,521,800),8060=>array(66,-14,769,800),8061=>array(66,-14,769,800),8064=>array(55,-208,611,797),8065=>array(55,-208,611,797),8066=>array(55,-208,611,800),8067=>array(55,-208,611,800),8068=>array(55,-208,611,800),8069=>array(55,-208,611,800),8070=>array(55,-208,611,928),8071=>array(55,-208,611,928),8072=>array(8,-208,676,797),8073=>array(8,-208,676,797),8074=>array(2,-208,869,800),8075=>array(3,-208,869,800),8076=>array(3,-208,761,800),8077=>array(2,-208,793,800),8078=>array(3,-208,700,928),8079=>array(2,-208,734,928),8080=>array(91,-208,549,797),8081=>array(91,-208,549,797),8082=>array(91,-208,549,800),8083=>array(91,-208,549,800),8084=>array(91,-208,549,800),8085=>array(91,-208,549,800),8086=>array(91,-208,549,928),8087=>array(91,-208,549,928),8088=>array(3,-208,739,797),8089=>array(3,-208,737,797),8090=>array(2,-208,988,800),8091=>array(3,-208,991,800),8092=>array(3,-208,929,800),8093=>array(2,-208,953,800),8094=>array(3,-208,835,928),8095=>array(2,-208,849,928),8096=>array(66,-208,769,797),8097=>array(66,-208,769,797),8098=>array(66,-208,769,800),8099=>array(66,-208,769,800),8100=>array(66,-208,769,800),8101=>array(66,-208,769,800),8102=>array(66,-208,769,928),8103=>array(66,-208,769,928),8104=>array(3,-208,764,797),8105=>array(3,-208,805,797),8106=>array(2,-208,1051,800),8107=>array(3,-208,1057,800),8108=>array(3,-208,908,800),8109=>array(2,-208,934,800),8110=>array(3,-208,883,928),8111=>array(2,-208,914,928),8112=>array(55,-12,611,785),8113=>array(55,-12,611,745),8114=>array(55,-208,611,800),8115=>array(55,-208,611,559),8116=>array(55,-208,611,800),8118=>array(55,-12,611,777),8119=>array(55,-208,611,777),8120=>array(8,0,676,928),8121=>array(8,0,676,899),8122=>array(-2,0,708,800),8123=>array(8,0,676,800),8124=>array(8,-208,676,729),8125=>array(190,595,309,797),8126=>array(214,-208,321,-45),8127=>array(190,595,309,797),8128=>array(89,639,411,777),8129=>array(89,659,411,928),8130=>array(91,-208,549,800),8131=>array(91,-208,549,560),8132=>array(91,-208,549,800),8134=>array(91,-208,549,777),8135=>array(91,-208,549,777),8136=>array(-2,0,741,800),8137=>array(-12,0,682,800),8138=>array(-2,0,833,800),8139=>array(-6,0,765,800),8140=>array(98,-208,654,729),8141=>array(67,595,446,800),8142=>array(88,595,447,800),8143=>array(89,595,411,928),8144=>array(-10,0,304,785),8145=>array(-14,0,304,745),8146=>array(-20,0,304,978),8147=>array(2,0,313,978),8150=>array(-14,0,309,777),8151=>array(-13,0,310,928),8152=>array(-5,0,300,928),8153=>array(1,0,293,899),8154=>array(-2,0,377,800),8155=>array(-9,0,311,800),8157=>array(62,595,443,800),8158=>array(73,595,461,800),8159=>array(89,595,411,928),8160=>array(73,-14,521,785),8161=>array(73,-14,521,745),8162=>array(73,-14,521,978),8163=>array(73,-14,521,978),8164=>array(91,-208,580,797),8165=>array(91,-208,580,797),8166=>array(73,-14,521,777),8167=>array(73,-14,521,928),8168=>array(-2,0,613,928),8169=>array(-2,0,613,899),8170=>array(-2,0,847,800),8171=>array(-15,0,821,800),8172=>array(3,0,651,797),8173=>array(83,659,395,978),8174=>array(105,659,415,978),8175=>array(83,617,317,800),8178=>array(66,-208,769,800),8179=>array(66,-208,769,547),8180=>array(66,-208,769,800),8182=>array(66,-14,769,777),8183=>array(66,-208,769,777),8184=>array(-2,-14,885,800),8185=>array(-7,-14,750,800),8186=>array(-2,0,884,800),8187=>array(-18,0,752,800),8188=>array(38,-208,726,738),8189=>array(181,616,415,800),8190=>array(190,595,309,797),8208=>array(49,234,312,314),8209=>array(49,234,312,314),8210=>array(49,239,587,309),8211=>array(49,239,451,309),8212=>array(49,239,951,309),8213=>array(0,239,1000,309),8214=>array(127,-236,371,764),8215=>array(-10,-236,510,-9),8216=>array(85,489,228,729),8217=>array(87,499,230,729),8218=>array(85,-116,228,124),8219=>array(87,499,230,729),8220=>array(85,489,428,729),8221=>array(85,489,428,729),8222=>array(85,-116,428,124),8223=>array(85,489,428,729),8224=>array(28,-96,472,729),8225=>array(28,-96,472,729),8226=>array(150,227,440,516),8227=>array(150,188,479,555),8228=>array(115,0,219,124),8229=>array(115,0,552,124),8230=>array(115,0,885,124),8231=>array(107,302,210,426),8240=>array(55,-14,1287,742),8241=>array(55,-14,1681,742),8242=>array(20,547,203,729),8243=>array(20,547,350,729),8244=>array(20,547,496,729),8245=>array(20,547,203,729),8246=>array(20,547,350,729),8247=>array(20,547,496,729),8248=>array(5,-236,333,-30),8249=>array(77,69,306,517),8250=>array(94,69,323,517),8251=>array(95,2,740,725),8252=>array(72,0,414,729),8253=>array(72,0,461,742),8254=>array(-10,686,510,755),8255=>array(-43,-237,847,-60),8256=>array(-43,752,847,929),8257=>array(-42,-236,286,229),8258=>array(30,-29,970,814),8259=>array(108,313,400,421),8260=>array(-183,-14,350,742),8261=>array(86,-132,293,760),8262=>array(86,-132,293,760),8263=>array(36,0,886,742),8264=>array(72,0,661,742),8265=>array(72,0,661,742),8266=>array(49,-123,448,545),8267=>array(115,-96,566,729),8268=>array(105,220,395,509),8269=>array(105,220,395,509),8270=>array(30,-29,470,427),8271=>array(139,-116,282,517),8272=>array(-43,-237,847,929),8273=>array(30,-7,470,929),8274=>array(71,-93,408,729),8275=>array(49,228,951,399),8276=>array(-43,-240,847,-63),8277=>array(152,98,686,631),8278=>array(122,149,464,589),8279=>array(20,547,643,729),8280=>array(175,125,663,613),8281=>array(175,120,663,608),8282=>array(107,0,210,729),8283=>array(49,-138,749,867),8284=>array(55,0,783,729),8285=>array(107,39,210,655),8286=>array(107,8,210,683),8304=>array(42,319,366,742),8305=>array(60,326,116,751),8308=>array(31,326,369,734),8309=>array(50,319,353,734),8310=>array(45,319,369,742),8311=>array(53,326,354,734),8312=>array(43,319,365,742),8313=>array(41,319,364,742),8314=>array(67,326,461,677),8315=>array(67,479,461,525),8316=>array(67,422,461,581),8317=>array(54,252,195,751),8318=>array(50,252,191,751),8319=>array(57,326,346,640),8320=>array(42,-7,366,416),8321=>array(67,0,346,408),8322=>array(46,0,338,416),8323=>array(48,-7,350,416),8324=>array(31,0,369,408),8325=>array(50,-7,353,408),8326=>array(45,-7,369,416),8327=>array(53,0,354,408),8328=>array(43,-7,365,416),8329=>array(41,-7,364,416),8330=>array(67,0,461,351),8331=>array(67,152,461,199),8332=>array(67,96,461,254),8333=>array(54,-74,195,425),8334=>array(50,-74,191,425),8336=>array(38,-8,329,313),8337=>array(35,-8,354,313),8338=>array(35,-8,351,313),8339=>array(57,0,391,306),8340=>array(35,-8,354,313),8341=>array(57,0,346,425),8342=>array(57,0,363,425),8343=>array(60,0,116,425),8344=>array(57,0,560,313),8345=>array(57,0,346,313),8346=>array(57,-117,365,313),8347=>array(57,0,320,322),8348=>array(17,0,232,393),8352=>array(42,0,835,729),8353=>array(56,-44,593,778),8354=>array(47,-14,587,742),8355=>array(65,0,599,729),8356=>array(63,0,548,742),8357=>array(91,-93,889,640),8358=>array(57,0,691,729),8359=>array(98,-14,1226,729),8360=>array(98,-14,1025,729),8361=>array(29,0,960,729),8362=>array(46,-14,743,729),8363=>array(55,-156,619,760),8364=>array(0,-14,570,742),8365=>array(20,0,636,729),8366=>array(10,0,626,729),8367=>array(102,-222,1205,742),8368=>array(22,-14,569,742),8369=>array(33,0,579,729),8370=>array(45,-81,586,809),8371=>array(8,0,627,729),8372=>array(57,-14,717,742),8373=>array(81,-147,556,760),8376=>array(10,0,626,729),8377=>array(52,0,585,729),8378=>array(5,2,649,731),8400=>array(-491,635,-26,760),8401=>array(-470,635,-5,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-491,560,-10,758),8412=>array(-586,560,86,758),8417=>array(-470,560,-26,760),8448=>array(33,-24,980,752),8449=>array(33,-24,999,752),8450=>array(56,-14,644,742),8451=>array(95,-14,1053,742),8452=>array(-21,0,637,729),8453=>array(29,-24,987,752),8454=>array(29,-24,1038,752),8455=>array(80,-14,560,742),8456=>array(54,-146,642,611),8457=>array(95,0,894,742),8459=>array(36,-14,943,748),8460=>array(1,-128,693,731),8461=>array(98,0,751,729),8462=>array(35,0,566,760),8463=>array(44,0,566,760),8464=>array(29,-15,432,742),8465=>array(52,-14,659,742),8466=>array(33,-14,679,743),8467=>array(-14,-14,353,742),8468=>array(16,-14,763,760),8469=>array(97,0,704,729),8470=>array(26,0,969,729),8471=>array(138,0,862,724),8472=>array(54,-221,658,495),8473=>array(98,0,666,729),8474=>array(56,-129,731,742),8475=>array(32,-9,764,774),8476=>array(41,-14,803,743),8477=>array(98,0,774,729),8478=>array(83,0,814,729),8479=>array(98,-107,666,847),8480=>array(126,443,770,730),8481=>array(-2,0,1023,547),8482=>array(144,447,784,729),8483=>array(8,-108,676,846),8484=>array(45,0,700,729),8485=>array(43,-213,523,760),8486=>array(38,0,726,738),8487=>array(38,-14,726,724),8488=>array(12,-149,573,783),8489=>array(33,0,255,547),8490=>array(98,0,677,729),8491=>array(8,0,676,928),8492=>array(45,0,734,772),8493=>array(63,-12,652,742),8494=>array(61,-12,793,647),8495=>array(42,-14,547,533),8496=>array(79,-14,565,742),8497=>array(41,-16,758,755),8498=>array(98,0,517,729),8499=>array(28,-28,1032,751),8500=>array(51,-12,411,395),8501=>array(50,-14,712,742),8502=>array(-2,-14,653,743),8503=>array(13,-35,407,742),8504=>array(42,-35,591,742),8505=>array(34,0,355,760),8506=>array(44,-21,915,654),8507=>array(74,0,1162,547),8508=>array(18,-8,685,547),8509=>array(0,-194,669,560),8510=>array(98,0,648,729),8511=>array(98,0,750,729),8512=>array(12,-192,791,719),8513=>array(80,-14,716,742),8514=>array(4,0,458,729),8515=>array(3,0,457,729),8516=>array(-2,0,613,729),8517=>array(42,0,786,729),8518=>array(44,-14,709,760),8519=>array(44,-14,572,560),8520=>array(39,0,313,760),8521=>array(-114,-208,313,760),8523=>array(29,-14,715,742),8526=>array(40,0,441,547),8528=>array(67,-14,922,742),8529=>array(67,-14,932,742),8530=>array(67,-14,1335,742),8531=>array(67,-14,918,742),8532=>array(46,-14,918,742),8533=>array(67,-14,921,742),8534=>array(46,-14,921,742),8535=>array(48,-14,921,742),8536=>array(31,-14,921,742),8537=>array(67,-14,937,742),8538=>array(50,-14,937,742),8539=>array(67,-14,933,742),8540=>array(48,-14,933,742),8541=>array(50,-14,933,742),8542=>array(53,-14,933,742),8543=>array(67,-14,751,742),8544=>array(98,0,197,729),8545=>array(98,0,394,729),8546=>array(98,0,591,729),8547=>array(98,0,915,729),8548=>array(8,0,676,729),8549=>array(8,0,824,729),8550=>array(8,0,1021,729),8551=>array(8,0,1219,729),8552=>array(98,0,886,729),8553=>array(30,0,654,729),8554=>array(30,0,835,729),8555=>array(30,0,1032,729),8556=>array(98,0,552,729),8557=>array(56,-14,644,742),8558=>array(98,0,711,729),8559=>array(98,0,765,729),8560=>array(94,0,184,760),8561=>array(94,0,364,760),8562=>array(94,0,543,760),8563=>array(94,0,782,760),8564=>array(30,0,562,547),8565=>array(30,0,717,760),8566=>array(30,0,897,760),8567=>array(30,0,1077,760),8568=>array(94,0,786,760),8569=>array(29,0,559,547),8570=>array(29,0,729,760),8571=>array(29,0,908,760),8572=>array(94,0,184,760),8573=>array(55,-14,488,560),8574=>array(55,-14,544,760),8575=>array(91,0,889,560),8576=>array(59,0,1186,729),8577=>array(98,0,711,729),8578=>array(59,0,1186,729),8579=>array(56,-14,644,742),8580=>array(62,-14,495,560),8581=>array(56,-208,644,742),8585=>array(42,-14,918,742),8592=>array(49,100,781,527),8593=>array(205,0,632,732),8594=>array(57,100,789,527),8595=>array(205,-3,632,729),8596=>array(49,100,789,527),8597=>array(205,-8,632,732),8598=>array(141,25,703,587),8599=>array(141,25,703,587),8600=>array(141,25,703,587),8601=>array(141,25,703,587),8602=>array(49,100,781,527),8603=>array(57,100,789,527),8604=>array(21,103,827,414),8605=>array(11,103,816,414),8606=>array(49,100,781,527),8607=>array(206,0,633,732),8608=>array(57,100,789,527),8609=>array(206,-3,633,729),8610=>array(49,100,781,527),8611=>array(57,100,789,527),8612=>array(49,100,781,527),8613=>array(206,0,632,732),8614=>array(57,100,789,527),8615=>array(206,-3,632,729),8616=>array(206,0,632,732),8617=>array(49,100,780,565),8618=>array(58,100,789,565),8619=>array(49,100,780,565),8620=>array(58,100,789,565),8621=>array(49,100,789,527),8622=>array(49,93,789,534),8623=>array(146,-2,702,730),8624=>array(169,0,629,743),8625=>array(209,0,669,743),8626=>array(169,-14,629,729),8627=>array(209,-14,669,729),8628=>array(233,-3,760,604),8629=>array(49,100,656,626),8630=>array(22,203,799,668),8631=>array(39,203,816,668),8632=>array(108,25,788,729),8633=>array(55,-46,783,673),8634=>array(103,62,762,680),8635=>array(77,62,736,680),8636=>array(49,272,781,527),8637=>array(49,100,781,355),8638=>array(377,0,632,732),8639=>array(205,0,460,732),8640=>array(57,272,789,527),8641=>array(57,100,789,355),8642=>array(377,0,632,732),8643=>array(205,0,460,732),8644=>array(49,-47,789,674),8645=>array(58,-3,779,732),8646=>array(49,-47,789,674),8647=>array(49,-47,781,674),8648=>array(59,0,779,732),8649=>array(58,-47,790,674),8650=>array(59,-3,779,729),8651=>array(49,7,789,620),8652=>array(49,7,789,620),8653=>array(49,100,781,527),8654=>array(49,94,789,533),8655=>array(57,100,789,527),8656=>array(49,100,781,527),8657=>array(206,0,633,732),8658=>array(57,100,789,527),8659=>array(206,-3,633,729),8660=>array(49,100,789,527),8661=>array(205,-8,633,732),8662=>array(141,-23,751,587),8663=>array(92,-23,703,587),8664=>array(92,25,703,636),8665=>array(141,25,751,636),8666=>array(49,100,781,527),8667=>array(57,100,789,527),8668=>array(49,100,781,527),8669=>array(57,100,789,527),8670=>array(205,0,632,732),8671=>array(205,-3,632,729),8672=>array(49,100,781,527),8673=>array(205,0,633,732),8674=>array(57,100,789,527),8675=>array(205,-3,633,729),8676=>array(52,99,781,528),8677=>array(57,99,786,528),8678=>array(27,65,781,562),8679=>array(171,0,667,754),8680=>array(35,65,789,562),8681=>array(171,-25,667,729),8682=>array(171,0,667,754),8683=>array(171,0,667,754),8684=>array(156,0,682,754),8685=>array(171,0,667,754),8686=>array(171,0,667,754),8687=>array(171,0,667,754),8688=>array(57,65,811,562),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(171,-25,667,754),8692=>array(57,100,789,527),8693=>array(58,-3,779,732),8694=>array(57,-193,789,820),8695=>array(49,94,781,533),8696=>array(57,94,789,533),8697=>array(49,94,789,533),8698=>array(49,94,781,533),8699=>array(57,94,789,533),8700=>array(49,94,789,533),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(8,0,676,729),8705=>array(66,-14,554,742),8706=>array(46,-14,471,662),8707=>array(98,0,568,729),8708=>array(98,-46,568,776),8709=>array(76,-10,795,710),8710=>array(-3,0,672,719),8711=>array(-3,0,672,719),8712=>array(85,-10,786,710),8713=>array(85,-138,786,835),8714=>array(106,76,612,550),8715=>array(85,-10,786,710),8716=>array(85,-138,786,835),8717=>array(106,76,612,550),8718=>array(146,0,490,485),8719=>array(76,-192,680,719),8720=>array(76,-192,680,719),8721=>array(12,-192,654,719),8722=>array(106,272,732,355),8723=>array(106,0,732,627),8724=>array(106,0,732,729),8725=>array(0,-93,337,729),8726=>array(192,-54,529,768),8727=>array(127,0,710,627),8728=>array(158,160,468,470),8729=>array(168,168,458,458),8730=>array(30,-20,637,811),8731=>array(30,-20,637,933),8732=>array(30,-20,637,924),8733=>array(107,112,607,487),8734=>array(107,112,726,487),8735=>array(138,99,700,661),8736=>array(85,0,786,729),8737=>array(85,-53,786,729),8738=>array(116,-3,732,727),8739=>array(211,-214,289,771),8740=>array(50,-214,451,771),8741=>array(133,-214,367,771),8742=>array(50,-214,451,771),8743=>array(129,0,603,579),8744=>array(129,0,603,579),8745=>array(129,0,603,579),8746=>array(129,0,603,579),8747=>array(57,-212,464,757),8748=>array(57,-212,732,757),8749=>array(57,-212,1000,757),8750=>array(57,-212,464,757),8751=>array(57,-212,732,757),8752=>array(57,-212,1000,757),8753=>array(57,-213,522,757),8754=>array(57,-212,514,757),8755=>array(57,-212,515,757),8756=>array(59,100,577,604),8757=>array(59,100,577,604),8758=>array(79,100,182,604),8759=>array(59,100,577,604),8760=>array(106,272,732,552),8761=>array(106,78,732,552),8762=>array(105,78,732,552),8763=>array(106,78,732,552),8764=>array(106,228,732,399),8765=>array(106,228,732,399),8766=>array(79,149,759,479),8767=>array(106,42,732,584),8768=>array(102,0,273,626),8769=>array(106,77,732,553),8770=>array(106,133,732,454),8771=>array(106,172,732,494),8772=>array(106,48,732,603),8773=>array(106,90,732,594),8774=>array(106,12,732,594),8775=>array(106,-5,732,657),8776=>array(106,133,732,494),8777=>array(106,2,732,625),8778=>array(106,90,732,598),8779=>array(106,59,732,602),8780=>array(106,90,732,594),8781=>array(105,105,732,521),8782=>array(106,26,732,601),8783=>array(106,172,732,601),8784=>array(106,172,732,625),8785=>array(106,1,732,625),8786=>array(106,2,733,625),8787=>array(106,2,733,625),8788=>array(101,151,899,476),8789=>array(100,151,900,475),8790=>array(106,172,732,454),8791=>array(106,172,732,760),8792=>array(106,172,732,662),8793=>array(106,172,732,812),8794=>array(106,172,732,812),8795=>array(106,172,732,849),8796=>array(106,172,732,854),8797=>array(106,172,732,764),8798=>array(106,172,732,760),8799=>array(106,172,732,856),8800=>array(106,19,732,608),8801=>array(106,90,732,537),8802=>array(106,-24,732,650),8803=>array(106,0,732,629),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-83,732,638),8807=>array(106,-83,732,638),8808=>array(106,-164,732,638),8809=>array(106,-164,732,638),8810=>array(72,22,975,609),8811=>array(72,22,975,609),8812=>array(86,-132,378,759),8813=>array(105,13,732,613),8814=>array(106,2,732,674),8815=>array(106,-47,732,625),8816=>array(106,-102,732,667),8817=>array(106,-102,732,667),8818=>array(106,-55,732,582),8819=>array(106,-39,732,582),8820=>array(106,-105,732,664),8821=>array(106,-102,732,667),8822=>array(102,-87,732,686),8823=>array(102,-87,732,686),8824=>array(102,-197,732,797),8825=>array(102,-197,732,797),8826=>array(106,-38,732,664),8827=>array(106,-38,732,664),8828=>array(106,-105,732,667),8829=>array(106,-105,732,667),8830=>array(106,-85,732,667),8831=>array(106,-85,732,667),8832=>array(106,-61,732,764),8833=>array(106,-138,732,687),8834=>array(100,80,738,546),8835=>array(100,80,738,546),8836=>array(100,-96,738,726),8837=>array(100,-100,738,722),8838=>array(93,0,732,613),8839=>array(106,0,745,613),8840=>array(93,-116,732,730),8841=>array(106,-116,745,730),8842=>array(93,-73,732,614),8843=>array(93,-73,732,614),8844=>array(129,0,603,579),8845=>array(129,0,603,579),8846=>array(129,2,603,582),8847=>array(106,0,732,568),8848=>array(106,0,732,568),8849=>array(106,-83,732,630),8850=>array(106,-83,732,630),8851=>array(106,0,674,626),8852=>array(106,0,674,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-14,747,643),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(91,-14,747,643),8863=>array(91,-14,747,643),8864=>array(91,-14,747,643),8865=>array(91,-14,747,643),8866=>array(85,0,786,700),8867=>array(85,0,786,700),8868=>array(85,0,786,700),8869=>array(85,0,786,700),8870=>array(85,0,436,700),8871=>array(85,0,436,700),8872=>array(85,0,786,700),8873=>array(85,0,786,700),8874=>array(85,0,786,700),8875=>array(85,0,786,700),8876=>array(85,-40,786,740),8877=>array(85,-40,786,740),8878=>array(85,-40,786,740),8879=>array(85,-40,786,740),8880=>array(106,-43,724,670),8881=>array(106,-43,724,670),8882=>array(106,15,732,612),8883=>array(106,15,732,612),8884=>array(106,-48,732,674),8885=>array(106,-48,732,674),8886=>array(59,175,941,454),8887=>array(59,175,941,454),8888=>array(48,175,790,454),8889=>array(59,-47,779,674),8890=>array(116,0,404,701),8891=>array(98,0,634,740),8892=>array(98,0,634,740),8893=>array(98,0,634,740),8894=>array(138,0,700,562),8895=>array(138,0,700,562),8896=>array(-3,-192,823,719),8897=>array(-3,-192,823,719),8898=>array(68,-192,752,719),8899=>array(68,-192,752,719),8900=>array(3,-233,491,807),8901=>array(107,285,210,409),8902=>array(122,149,504,512),8903=>array(106,15,732,613),8904=>array(106,-30,894,657),8905=>array(106,-30,894,657),8906=>array(106,-30,894,657),8907=>array(106,-30,894,657),8908=>array(106,-30,894,657),8909=>array(106,172,732,494),8910=>array(48,0,684,579),8911=>array(48,0,684,579),8912=>array(93,-3,732,630),8913=>array(106,-3,745,630),8914=>array(103,0,735,663),8915=>array(103,-14,735,649),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,46,732,581),8919=>array(106,46,732,581),8920=>array(72,22,1350,609),8921=>array(72,22,1350,609),8922=>array(106,-228,732,854),8923=>array(106,-228,732,854),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-105,732,667),8927=>array(106,-105,732,667),8928=>array(106,-178,732,764),8929=>array(106,-178,732,764),8930=>array(106,-141,732,767),8931=>array(106,-141,732,767),8932=>array(106,-94,732,619),8933=>array(106,-94,732,619),8934=>array(106,-138,732,582),8935=>array(106,-138,732,582),8936=>array(106,-169,732,667),8937=>array(110,-171,736,667),8938=>array(106,-130,732,756),8939=>array(106,-130,732,756),8940=>array(106,-189,732,815),8941=>array(104,-189,730,815),8942=>array(448,-93,551,715),8943=>array(115,249,884,373),8944=>array(115,-93,884,715),8945=>array(115,-93,884,715),8946=>array(43,-10,957,710),8947=>array(85,-10,786,710),8948=>array(106,76,612,550),8949=>array(85,-10,786,910),8950=>array(85,-10,786,853),8951=>array(106,76,612,686),8952=>array(85,-144,786,710),8953=>array(85,-10,786,710),8954=>array(43,-10,957,710),8955=>array(85,-10,786,710),8956=>array(106,76,612,550),8957=>array(85,-10,786,853),8958=>array(106,76,612,686),8959=>array(106,0,765,720),8960=>array(36,-18,567,514),8961=>array(56,162,540,443),8962=>array(71,0,563,596),8963=>array(205,481,632,732),8964=>array(205,0,632,251),8965=>array(205,0,632,406),8966=>array(205,0,632,513),8967=>array(154,-29,334,788),8968=>array(86,-132,293,760),8969=>array(97,-132,304,760),8970=>array(86,-132,293,760),8971=>array(97,-132,304,760),8972=>array(369,-77,759,313),8973=>array(49,-77,439,313),8974=>array(369,243,759,634),8975=>array(49,243,439,634),8976=>array(106,140,732,421),8977=>array(3,126,510,634),8984=>array(121,0,879,759),8985=>array(106,140,732,421),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-70,403,264),8991=>array(65,-70,383,264),8992=>array(210,-250,497,928),8993=>array(21,-237,307,942),8996=>array(76,227,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(81,0,304,547),9076=>array(91,-208,580,560),9077=>array(66,-14,769,547),9082=>array(55,-12,611,559),9085=>array(13,-228,745,102),9095=>array(76,0,1096,748),9108=>array(17,0,856,727),9115=>array(86,-252,414,946),9116=>array(86,-252,181,942),9117=>array(86,-240,414,942),9118=>array(86,-252,414,946),9119=>array(319,-252,414,942),9120=>array(86,-240,414,942),9121=>array(86,-252,414,928),9122=>array(86,-252,181,942),9123=>array(86,-240,414,942),9124=>array(86,-252,414,928),9125=>array(319,-252,414,935),9126=>array(86,-240,414,935),9127=>array(330,-261,668,928),9128=>array(82,-252,420,940),9129=>array(330,-240,668,940),9130=>array(330,-256,420,943),9131=>array(82,-261,420,928),9132=>array(330,-252,668,940),9133=>array(82,-240,420,940),9134=>array(210,-250,307,942),9166=>array(27,65,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(43,-129,601,294),9250=>array(-62,-14,580,760),9251=>array(71,-228,563,102),9312=>array(74,-10,822,738),9313=>array(74,-10,822,738),9314=>array(74,-10,822,738),9315=>array(74,-10,822,738),9316=>array(74,-10,822,738),9317=>array(74,-10,822,738),9318=>array(74,-10,822,738),9319=>array(74,-10,822,738),9320=>array(74,-10,822,738),9321=>array(74,-10,822,738),9472=>array(-10,242,612,326),9473=>array(-10,200,612,368),9474=>array(262,-302,340,973),9475=>array(223,-302,379,973),9476=>array(-10,242,612,326),9477=>array(-10,200,612,368),9478=>array(262,-302,340,973),9479=>array(223,-302,379,973),9480=>array(-10,242,612,326),9481=>array(-10,200,612,368),9482=>array(262,-302,340,973),9483=>array(223,-302,379,973),9484=>array(262,-302,612,326),9485=>array(262,-302,612,368),9486=>array(223,-302,612,326),9487=>array(223,-302,612,368),9488=>array(-10,-302,340,326),9489=>array(-10,-302,340,368),9490=>array(-10,-302,379,326),9491=>array(-10,-302,379,368),9492=>array(262,242,612,973),9493=>array(262,200,612,973),9494=>array(223,242,612,973),9495=>array(223,200,612,973),9496=>array(-10,242,340,973),9497=>array(-10,200,340,973),9498=>array(-10,242,379,973),9499=>array(-10,200,379,973),9500=>array(262,-302,612,973),9501=>array(262,-302,612,973),9502=>array(223,-302,612,973),9503=>array(223,-302,612,973),9504=>array(223,-302,612,973),9505=>array(223,-302,612,973),9506=>array(223,-302,612,973),9507=>array(223,-302,612,973),9508=>array(-10,-302,340,973),9509=>array(-10,-302,340,973),9510=>array(-10,-302,379,973),9511=>array(-10,-302,379,973),9512=>array(-10,-302,379,973),9513=>array(-10,-302,379,973),9514=>array(-10,-302,379,973),9515=>array(-10,-302,379,973),9516=>array(-10,-302,612,326),9517=>array(-10,-302,612,368),9518=>array(-10,-302,612,368),9519=>array(-10,-302,612,368),9520=>array(-10,-302,612,326),9521=>array(-10,-302,612,368),9522=>array(-10,-302,612,368),9523=>array(-10,-302,612,368),9524=>array(-10,242,612,973),9525=>array(-10,200,612,973),9526=>array(-10,200,612,973),9527=>array(-10,200,612,973),9528=>array(-10,242,612,973),9529=>array(-10,200,612,973),9530=>array(-10,200,612,973),9531=>array(-10,200,612,973),9532=>array(-10,-302,612,973),9533=>array(-10,-302,612,973),9534=>array(-10,-302,612,973),9535=>array(-10,-302,612,973),9536=>array(-10,-302,612,973),9537=>array(-10,-302,612,973),9538=>array(-10,-302,612,973),9539=>array(-10,-302,612,973),9540=>array(-10,-302,612,973),9541=>array(-10,-302,612,973),9542=>array(-10,-302,612,973),9543=>array(-10,-302,612,973),9544=>array(-10,-302,612,973),9545=>array(-10,-302,612,973),9546=>array(-10,-302,612,973),9547=>array(-10,-302,612,973),9548=>array(-10,242,612,326),9549=>array(-10,200,612,368),9550=>array(262,-302,340,973),9551=>array(223,-302,379,973),9552=>array(-10,158,612,410),9553=>array(184,-302,418,973),9554=>array(262,-302,612,410),9555=>array(184,-302,612,326),9556=>array(184,-302,612,410),9557=>array(-10,-302,340,410),9558=>array(-10,-302,418,326),9559=>array(-10,-302,418,410),9560=>array(262,158,612,973),9561=>array(184,242,612,973),9562=>array(184,158,612,973),9563=>array(-10,158,340,973),9564=>array(-10,242,418,973),9565=>array(-10,158,418,973),9566=>array(262,-302,612,973),9567=>array(184,-302,612,973),9568=>array(184,-302,612,973),9569=>array(-10,-302,340,973),9570=>array(-10,-302,418,973),9571=>array(-10,-302,418,973),9572=>array(-10,-302,612,410),9573=>array(-10,-302,612,326),9574=>array(-10,-302,612,410),9575=>array(-10,158,612,973),9576=>array(-10,242,612,973),9577=>array(-10,158,612,973),9578=>array(-10,-302,612,973),9579=>array(-10,-302,612,973),9580=>array(-10,-302,612,973),9581=>array(262,-302,612,326),9582=>array(-10,-302,340,326),9583=>array(-10,242,340,973),9584=>array(262,242,612,973),9585=>array(-53,-302,655,973),9586=>array(-53,-302,655,973),9587=>array(-53,-302,655,973),9588=>array(-10,242,311,326),9589=>array(262,284,340,973),9590=>array(311,242,612,326),9591=>array(262,-302,340,284),9592=>array(-10,200,311,368),9593=>array(223,284,379,973),9594=>array(311,200,612,368),9595=>array(223,-302,379,284),9596=>array(-10,200,612,368),9597=>array(223,-302,379,973),9598=>array(-10,200,612,368),9599=>array(223,-302,379,973),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,775,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-123,854,643),9633=>array(91,-123,854,643),9634=>array(91,-123,854,643),9635=>array(91,-123,854,643),9636=>array(91,-123,854,643),9637=>array(91,-123,854,643),9638=>array(91,-123,854,643),9639=>array(91,-123,854,643),9640=>array(91,-123,854,643),9641=>array(91,-123,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-123,766,643),9651=>array(3,-123,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-123,766,643),9655=>array(3,-123,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-123,766,643),9661=>array(3,-123,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-123,766,643),9665=>array(3,-123,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-123,766,643),9671=>array(3,-123,766,643),9672=>array(3,-123,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,700,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,384,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,384,260),9696=>array(55,260,818,645),9697=>array(55,-125,818,260),9698=>array(3,-123,766,643),9699=>array(3,-123,766,643),9700=>array(3,-123,766,643),9701=>array(3,-123,766,643),9702=>array(150,227,440,516),9703=>array(91,-123,854,643),9704=>array(91,-123,854,643),9705=>array(91,-123,854,643),9706=>array(91,-123,854,643),9707=>array(91,-123,854,643),9708=>array(3,-123,766,643),9709=>array(3,-123,766,643),9710=>array(3,-123,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-123,854,643),9713=>array(91,-123,854,643),9714=>array(91,-123,854,643),9715=>array(91,-123,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-123,766,643),9721=>array(3,-123,766,643),9722=>array(3,-123,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-123,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(66,-11,831,735),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(187,133,651,596),9899=>array(187,133,651,596),9900=>array(247,194,591,537),9901=>array(174,194,664,537),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-10,815,744),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-10,815,744),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(79,-14,759,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,264,729),10076=>array(59,395,237,729),10077=>array(85,395,479,729),10078=>array(59,395,453,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(74,-10,822,738),10103=>array(74,-10,822,738),10104=>array(74,-10,822,738),10105=>array(74,-10,822,738),10106=>array(74,-10,822,738),10107=>array(74,-10,822,738),10108=>array(74,-10,822,738),10109=>array(74,-10,822,738),10110=>array(74,-10,822,738),10111=>array(74,-10,822,738),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,65,811,562),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,352,769),10182=>array(39,-163,336,769),10208=>array(3,-233,491,807),10214=>array(86,-132,398,760),10215=>array(85,-132,398,760),10216=>array(89,-132,310,759),10217=>array(80,-132,301,759),10218=>array(89,-132,476,759),10219=>array(80,-132,467,759),10224=>array(44,0,794,732),10225=>array(43,-3,793,729),10226=>array(39,53,814,658),10227=>array(39,61,814,666),10228=>array(57,-14,1108,643),10229=>array(49,100,1376,527),10230=>array(57,100,1385,527),10231=>array(49,100,1385,527),10232=>array(49,100,1376,527),10233=>array(57,100,1385,527),10234=>array(49,100,1385,527),10235=>array(49,100,1376,527),10236=>array(57,100,1385,527),10237=>array(49,100,1376,527),10238=>array(57,100,1385,527),10239=>array(57,100,1385,527),10241=>array(146,635,293,781),10242=>array(146,358,293,504),10243=>array(146,358,293,781),10244=>array(146,82,293,228),10245=>array(146,82,293,781),10246=>array(146,82,293,504),10247=>array(146,82,293,781),10248=>array(439,635,586,781),10249=>array(146,635,586,781),10250=>array(146,358,586,781),10251=>array(146,358,586,781),10252=>array(146,82,586,781),10253=>array(146,82,586,781),10254=>array(146,82,586,781),10255=>array(146,82,586,781),10256=>array(439,358,586,504),10257=>array(146,358,586,781),10258=>array(146,358,586,504),10259=>array(146,358,586,781),10260=>array(146,82,586,504),10261=>array(146,82,586,781),10262=>array(146,82,586,504),10263=>array(146,82,586,781),10264=>array(439,358,586,781),10265=>array(146,358,586,781),10266=>array(146,358,586,781),10267=>array(146,358,586,781),10268=>array(146,82,586,781),10269=>array(146,82,586,781),10270=>array(146,82,586,781),10271=>array(146,82,586,781),10272=>array(439,82,586,228),10273=>array(146,82,586,781),10274=>array(146,82,586,504),10275=>array(146,82,586,781),10276=>array(146,82,586,228),10277=>array(146,82,586,781),10278=>array(146,82,586,504),10279=>array(146,82,586,781),10280=>array(439,82,586,781),10281=>array(146,82,586,781),10282=>array(146,82,586,781),10283=>array(146,82,586,781),10284=>array(146,82,586,781),10285=>array(146,82,586,781),10286=>array(146,82,586,781),10287=>array(146,82,586,781),10288=>array(439,82,586,504),10289=>array(146,82,586,781),10290=>array(146,82,586,504),10291=>array(146,82,586,781),10292=>array(146,82,586,504),10293=>array(146,82,586,781),10294=>array(146,82,586,504),10295=>array(146,82,586,781),10296=>array(439,82,586,781),10297=>array(146,82,586,781),10298=>array(146,82,586,781),10299=>array(146,82,586,781),10300=>array(146,82,586,781),10301=>array(146,82,586,781),10302=>array(146,82,586,781),10303=>array(146,82,586,781),10304=>array(146,-195,293,-49),10305=>array(146,-195,293,781),10306=>array(146,-195,293,504),10307=>array(146,-195,293,781),10308=>array(146,-195,293,228),10309=>array(146,-195,293,781),10310=>array(146,-195,293,504),10311=>array(146,-195,293,781),10312=>array(146,-195,586,781),10313=>array(146,-195,586,781),10314=>array(146,-195,586,781),10315=>array(146,-195,586,781),10316=>array(146,-195,586,781),10317=>array(146,-195,586,781),10318=>array(146,-195,586,781),10319=>array(146,-195,586,781),10320=>array(146,-195,586,504),10321=>array(146,-195,586,781),10322=>array(146,-195,586,504),10323=>array(146,-195,586,781),10324=>array(146,-195,586,504),10325=>array(146,-195,586,781),10326=>array(146,-195,586,504),10327=>array(146,-195,586,781),10328=>array(146,-195,586,781),10329=>array(146,-195,586,781),10330=>array(146,-195,586,781),10331=>array(146,-195,586,781),10332=>array(146,-195,586,781),10333=>array(146,-195,586,781),10334=>array(146,-195,586,781),10335=>array(146,-195,586,781),10336=>array(146,-195,586,228),10337=>array(146,-195,586,781),10338=>array(146,-195,586,504),10339=>array(146,-195,586,781),10340=>array(146,-195,586,228),10341=>array(146,-195,586,781),10342=>array(146,-195,586,504),10343=>array(146,-195,586,781),10344=>array(146,-195,586,781),10345=>array(146,-195,586,781),10346=>array(146,-195,586,781),10347=>array(146,-195,586,781),10348=>array(146,-195,586,781),10349=>array(146,-195,586,781),10350=>array(146,-195,586,781),10351=>array(146,-195,586,781),10352=>array(146,-195,586,504),10353=>array(146,-195,586,781),10354=>array(146,-195,586,504),10355=>array(146,-195,586,781),10356=>array(146,-195,586,504),10357=>array(146,-195,586,781),10358=>array(146,-195,586,504),10359=>array(146,-195,586,781),10360=>array(146,-195,586,781),10361=>array(146,-195,586,781),10362=>array(146,-195,586,781),10363=>array(146,-195,586,781),10364=>array(146,-195,586,781),10365=>array(146,-195,586,781),10366=>array(146,-195,586,781),10367=>array(146,-195,586,781),10368=>array(439,-195,586,-49),10369=>array(146,-195,586,781),10370=>array(146,-195,586,504),10371=>array(146,-195,586,781),10372=>array(146,-195,586,228),10373=>array(146,-195,586,781),10374=>array(146,-195,586,504),10375=>array(146,-195,586,781),10376=>array(439,-195,586,781),10377=>array(146,-195,586,781),10378=>array(146,-195,586,781),10379=>array(146,-195,586,781),10380=>array(146,-195,586,781),10381=>array(146,-195,586,781),10382=>array(146,-195,586,781),10383=>array(146,-195,586,781),10384=>array(439,-195,586,504),10385=>array(146,-195,586,781),10386=>array(146,-195,586,504),10387=>array(146,-195,586,781),10388=>array(146,-195,586,504),10389=>array(146,-195,586,781),10390=>array(146,-195,586,504),10391=>array(146,-195,586,781),10392=>array(439,-195,586,781),10393=>array(146,-195,586,781),10394=>array(146,-195,586,781),10395=>array(146,-195,586,781),10396=>array(146,-195,586,781),10397=>array(146,-195,586,781),10398=>array(146,-195,586,781),10399=>array(146,-195,586,781),10400=>array(439,-195,586,228),10401=>array(146,-195,586,781),10402=>array(146,-195,586,504),10403=>array(146,-195,586,781),10404=>array(146,-195,586,228),10405=>array(146,-195,586,781),10406=>array(146,-195,586,504),10407=>array(146,-195,586,781),10408=>array(439,-195,586,781),10409=>array(146,-195,586,781),10410=>array(146,-195,586,781),10411=>array(146,-195,586,781),10412=>array(146,-195,586,781),10413=>array(146,-195,586,781),10414=>array(146,-195,586,781),10415=>array(146,-195,586,781),10416=>array(439,-195,586,504),10417=>array(146,-195,586,781),10418=>array(146,-195,586,504),10419=>array(146,-195,586,781),10420=>array(146,-195,586,504),10421=>array(146,-195,586,781),10422=>array(146,-195,586,504),10423=>array(146,-195,586,781),10424=>array(439,-195,586,781),10425=>array(146,-195,586,781),10426=>array(146,-195,586,781),10427=>array(146,-195,586,781),10428=>array(146,-195,586,781),10429=>array(146,-195,586,781),10430=>array(146,-195,586,781),10431=>array(146,-195,586,781),10432=>array(146,-195,586,-49),10433=>array(146,-195,586,781),10434=>array(146,-195,586,504),10435=>array(146,-195,586,781),10436=>array(146,-195,586,228),10437=>array(146,-195,586,781),10438=>array(146,-195,586,504),10439=>array(146,-195,586,781),10440=>array(146,-195,586,781),10441=>array(146,-195,586,781),10442=>array(146,-195,586,781),10443=>array(146,-195,586,781),10444=>array(146,-195,586,781),10445=>array(146,-195,586,781),10446=>array(146,-195,586,781),10447=>array(146,-195,586,781),10448=>array(146,-195,586,504),10449=>array(146,-195,586,781),10450=>array(146,-195,586,504),10451=>array(146,-195,586,781),10452=>array(146,-195,586,504),10453=>array(146,-195,586,781),10454=>array(146,-195,586,504),10455=>array(146,-195,586,781),10456=>array(146,-195,586,781),10457=>array(146,-195,586,781),10458=>array(146,-195,586,781),10459=>array(146,-195,586,781),10460=>array(146,-195,586,781),10461=>array(146,-195,586,781),10462=>array(146,-195,586,781),10463=>array(146,-195,586,781),10464=>array(146,-195,586,228),10465=>array(146,-195,586,781),10466=>array(146,-195,586,504),10467=>array(146,-195,586,781),10468=>array(146,-195,586,228),10469=>array(146,-195,586,781),10470=>array(146,-195,586,504),10471=>array(146,-195,586,781),10472=>array(146,-195,586,781),10473=>array(146,-195,586,781),10474=>array(146,-195,586,781),10475=>array(146,-195,586,781),10476=>array(146,-195,586,781),10477=>array(146,-195,586,781),10478=>array(146,-195,586,781),10479=>array(146,-195,586,781),10480=>array(146,-195,586,504),10481=>array(146,-195,586,781),10482=>array(146,-195,586,504),10483=>array(146,-195,586,781),10484=>array(146,-195,586,504),10485=>array(146,-195,586,781),10486=>array(146,-195,586,504),10487=>array(146,-195,586,781),10488=>array(146,-195,586,781),10489=>array(146,-195,586,781),10490=>array(146,-195,586,781),10491=>array(146,-195,586,781),10492=>array(146,-195,586,781),10493=>array(146,-195,586,781),10494=>array(146,-195,586,781),10495=>array(146,-195,586,781),10502=>array(49,100,781,527),10503=>array(57,100,789,527),10506=>array(125,0,713,732),10507=>array(125,-3,713,729),10560=>array(39,63,644,838),10561=>array(39,63,644,838),10627=>array(125,-163,609,760),10628=>array(125,-163,609,760),10702=>array(106,-226,732,747),10703=>array(106,15,894,612),10704=>array(106,15,894,612),10705=>array(106,-30,894,657),10706=>array(106,-30,894,657),10707=>array(106,-30,894,657),10708=>array(106,-30,894,657),10709=>array(106,-30,894,657),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-198,972,748),10753=>array(28,-198,972,748),10754=>array(28,-198,972,748),10764=>array(57,-212,1268,757),10765=>array(57,-212,464,757),10766=>array(57,-212,464,757),10767=>array(57,-212,464,757),10768=>array(57,-212,464,757),10769=>array(57,-212,522,757),10770=>array(57,-212,464,757),10771=>array(57,-212,464,757),10772=>array(57,-212,555,757),10773=>array(57,-212,464,757),10774=>array(57,-212,464,757),10775=>array(-32,-212,553,757),10776=>array(57,-212,464,757),10777=>array(57,-212,464,757),10778=>array(57,-212,464,757),10779=>array(57,-212,469,872),10780=>array(52,-327,464,757),10799=>array(137,31,701,596),10858=>array(106,228,732,552),10859=>array(106,78,732,552),10877=>array(106,-123,732,581),10878=>array(106,-123,732,581),10879=>array(106,-123,733,581),10880=>array(106,-123,732,581),10881=>array(106,-123,732,644),10882=>array(106,-123,732,644),10883=>array(106,-123,733,759),10884=>array(106,-123,732,756),10885=>array(106,-132,732,663),10886=>array(106,-132,732,663),10887=>array(106,-121,732,582),10888=>array(106,-121,732,582),10889=>array(106,-204,732,663),10890=>array(106,-204,732,663),10891=>array(106,-311,732,791),10892=>array(106,-311,732,791),10893=>array(106,-124,732,663),10894=>array(106,-124,732,663),10895=>array(106,-241,732,756),10896=>array(106,-241,732,756),10897=>array(106,-229,732,730),10898=>array(106,-229,732,730),10899=>array(106,-224,732,741),10900=>array(106,-224,732,741),10901=>array(106,-61,732,644),10902=>array(106,-61,732,644),10903=>array(106,-61,733,644),10904=>array(106,-61,732,644),10905=>array(106,-36,732,685),10906=>array(106,-36,732,685),10907=>array(106,-31,732,725),10908=>array(106,-31,732,725),10909=>array(106,8,732,645),10910=>array(106,23,732,645),10911=>array(106,-176,732,729),10912=>array(106,-176,732,729),10926=>array(106,50,732,601),10927=>array(106,-24,732,667),10928=>array(106,-24,732,667),10929=>array(106,-145,732,667),10930=>array(106,-145,732,667),10931=>array(106,-121,732,662),10932=>array(106,-121,732,662),10933=>array(106,-195,732,662),10934=>array(106,-195,732,662),10935=>array(106,-191,732,693),10936=>array(106,-191,732,693),10937=>array(106,-259,732,693),10938=>array(106,-259,732,693),11001=>array(106,-171,732,585),11002=>array(106,-171,732,585),11008=>array(88,-27,703,587),11009=>array(141,-27,755,587),11010=>array(88,25,703,640),11011=>array(141,25,755,640),11012=>array(27,65,789,562),11013=>array(27,65,781,562),11014=>array(171,0,667,754),11015=>array(171,-25,667,729),11016=>array(88,-27,703,587),11017=>array(141,-27,755,587),11018=>array(88,25,703,640),11019=>array(141,25,755,640),11020=>array(27,65,789,562),11021=>array(171,-25,667,754),11022=>array(57,-3,790,355),11023=>array(57,272,790,630),11024=>array(35,-3,768,355),11025=>array(35,272,768,630),11026=>array(91,-123,854,643),11027=>array(91,-123,854,643),11028=>array(91,-123,854,643),11029=>array(91,-123,854,643),11030=>array(3,-123,766,643),11031=>array(3,-123,766,643),11032=>array(3,-123,766,643),11033=>array(3,-123,766,643),11034=>array(91,-123,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,552,729),11361=>array(5,0,271,760),11362=>array(-20,0,552,729),11363=>array(5,0,569,729),11364=>array(98,-200,666,729),11365=>array(35,-46,576,592),11366=>array(-12,-93,384,822),11367=>array(98,-157,752,729),11368=>array(91,-138,639,760),11369=>array(98,-157,677,729),11370=>array(91,-138,576,760),11371=>array(45,-157,738,729),11372=>array(43,-138,572,547),11373=>array(56,-14,683,743),11374=>array(98,-200,765,729),11375=>array(8,0,676,729),11376=>array(56,-14,683,743),11377=>array(30,0,734,560),11378=>array(33,0,1128,742),11379=>array(42,0,961,560),11380=>array(51,0,562,587),11381=>array(98,0,555,729),11382=>array(94,0,477,547),11383=>array(55,-12,602,551),11385=>array(0,-13,320,760),11386=>array(55,-14,557,560),11387=>array(48,0,400,547),11388=>array(-11,-117,116,425),11389=>array(5,326,426,734),11390=>array(66,-242,598,742),11391=>array(45,-242,640,729),11520=>array(60,-63,544,547),11521=>array(24,-235,556,546),11522=>array(39,-235,535,546),11523=>array(62,-10,572,807),11524=>array(51,-235,537,546),11525=>array(39,-236,862,546),11526=>array(0,-8,575,816),11527=>array(53,0,900,546),11528=>array(69,0,542,546),11529=>array(51,-235,556,816),11530=>array(39,0,903,546),11531=>array(53,-8,595,816),11532=>array(39,0,544,816),11533=>array(51,0,887,546),11534=>array(51,0,556,546),11535=>array(69,-235,767,816),11536=>array(51,0,880,816),11537=>array(51,0,545,816),11538=>array(50,-235,536,546),11539=>array(51,-235,884,661),11540=>array(60,-235,892,546),11541=>array(49,-235,784,816),11542=>array(39,0,545,546),11543=>array(51,-235,556,547),11544=>array(51,-235,551,546),11545=>array(39,-235,541,816),11546=>array(42,-235,532,547),11547=>array(60,-9,596,816),11548=>array(39,-235,870,547),11549=>array(29,-235,545,546),11550=>array(47,-235,547,546),11551=>array(34,-235,547,567),11552=>array(39,0,875,546),11553=>array(49,-235,544,816),11554=>array(60,0,538,626),11555=>array(61,-235,553,816),11556=>array(51,-235,603,546),11557=>array(60,-8,841,816),11568=>array(55,-14,591,380),11569=>array(56,-14,832,742),11570=>array(56,-14,832,742),11571=>array(31,0,651,729),11572=>array(33,0,652,729),11573=>array(31,0,604,729),11574=>array(73,0,488,729),11575=>array(8,0,676,729),11576=>array(8,0,676,729),11577=>array(98,0,568,729),11578=>array(64,0,534,729),11579=>array(73,-14,609,742),11580=>array(107,0,811,729),11581=>array(45,0,665,729),11582=>array(73,0,437,729),11583=>array(45,0,665,729),11584=>array(56,-14,832,742),11585=>array(56,-52,832,781),11586=>array(73,0,197,729),11587=>array(20,0,610,729),11588=>array(98,0,654,729),11589=>array(30,0,654,729),11590=>array(73,0,454,729),11591=>array(45,0,629,729),11592=>array(73,301,571,426),11593=>array(98,0,568,729),11594=>array(54,0,448,729),11595=>array(54,-15,899,742),11596=>array(54,0,725,729),11597=>array(98,0,650,729),11598=>array(100,0,566,729),11599=>array(98,0,197,729),11600=>array(54,0,725,729),11601=>array(98,0,198,729),11602=>array(78,-14,705,729),11603=>array(48,-14,584,742),11604=>array(56,-14,832,742),11605=>array(56,-54,832,742),11606=>array(98,0,654,729),11607=>array(98,0,222,729),11608=>array(73,0,676,729),11609=>array(56,-14,832,742),11610=>array(56,-14,832,780),11611=>array(56,-14,681,742),11612=>array(49,0,719,729),11613=>array(30,0,654,729),11614=>array(56,-14,681,742),11615=>array(98,0,568,729),11616=>array(8,0,676,729),11617=>array(98,0,654,729),11618=>array(98,0,559,729),11619=>array(56,0,732,729),11620=>array(98,0,495,729),11621=>array(56,0,732,729),11631=>array(26,522,489,729),11800=>array(70,-14,459,728),11806=>array(106,78,732,399),11810=>array(86,403,293,760),11811=>array(97,403,304,760),11812=>array(86,-132,293,225),11813=>array(97,-132,304,225),11822=>array(72,0,461,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(98,0,615,729),42193=>array(98,0,569,729),42194=>array(34,0,505,729),42195=>array(98,0,711,729),42196=>array(-3,0,614,729),42197=>array(-3,0,614,729),42198=>array(56,-14,693,742),42199=>array(98,0,677,729),42200=>array(-21,0,558,729),42201=>array(0,-14,414,729),42202=>array(56,-14,644,742),42203=>array(56,-14,644,742),42204=>array(45,0,640,729),42205=>array(98,0,517,729),42206=>array(98,0,517,729),42207=>array(98,0,765,729),42208=>array(98,0,650,729),42209=>array(98,0,552,729),42210=>array(66,-14,579,742),42211=>array(98,0,666,729),42212=>array(29,0,597,729),42213=>array(8,0,676,729),42214=>array(8,0,676,729),42215=>array(98,0,654,729),42216=>array(80,-14,716,742),42217=>array(98,0,512,743),42218=>array(33,0,956,729),42219=>array(30,0,654,729),42220=>array(-2,0,613,729),42221=>array(71,0,588,729),42222=>array(8,0,676,729),42223=>array(8,0,676,729),42224=>array(98,0,568,729),42225=>array(64,0,534,729),42226=>array(98,0,197,729),42227=>array(56,-14,731,742),42228=>array(87,-14,645,729),42229=>array(87,0,645,743),42230=>array(4,0,458,729),42231=>array(56,0,669,729),42232=>array(85,0,214,155),42233=>array(71,-156,214,155),42234=>array(85,0,511,155),42235=>array(85,-156,511,155),42236=>array(71,-156,214,517),42237=>array(85,0,214,517),42238=>array(85,0,502,354),42239=>array(85,172,502,454),42564=>array(56,-14,569,742),42565=>array(49,-14,467,560),42566=>array(98,0,347,729),42567=>array(81,0,304,547),42572=>array(58,-14,1122,645),42573=>array(74,-14,954,471),42576=>array(29,0,931,729),42577=>array(30,0,817,560),42580=>array(56,-14,977,742),42581=>array(55,-14,748,560),42582=>array(103,0,968,729),42583=>array(94,-14,752,560),42594=>array(49,-157,1004,729),42595=>array(52,-138,863,547),42596=>array(41,0,1008,729),42597=>array(37,0,852,547),42598=>array(98,0,1120,729),42599=>array(91,0,959,547),42600=>array(56,-14,731,742),42601=>array(55,-14,557,560),42602=>array(56,-14,799,742),42603=>array(55,-14,658,560),42604=>array(56,-14,1302,742),42605=>array(55,-14,964,560),42606=>array(28,-208,851,743),42634=>array(-3,-200,758,729),42635=>array(29,-208,660,547),42636=>array(-3,0,614,729),42637=>array(29,0,553,547),42644=>array(85,0,587,729),42645=>array(91,0,549,760),42760=>array(104,0,389,668),42761=>array(104,0,389,668),42762=>array(104,0,389,668),42763=>array(104,0,389,668),42764=>array(104,0,389,668),42765=>array(104,0,389,668),42766=>array(104,0,389,668),42767=>array(104,0,389,668),42768=>array(104,0,389,668),42769=>array(104,0,389,668),42770=>array(104,0,389,668),42771=>array(104,0,389,668),42772=>array(104,0,389,668),42773=>array(104,0,389,668),42774=>array(104,0,389,668),42779=>array(50,326,319,736),42780=>array(50,324,319,734),42781=>array(95,326,158,734),42782=>array(95,326,158,734),42783=>array(95,0,158,408),42786=>array(67,0,350,729),42787=>array(67,0,321,547),42788=>array(56,224,411,742),42789=>array(56,42,411,560),42790=>array(98,-200,654,729),42791=>array(91,-208,549,760),42792=>array(-3,-213,819,729),42793=>array(27,-213,650,702),42794=>array(80,-14,560,742),42795=>array(65,-200,473,561),42800=>array(91,0,437,547),42801=>array(54,-14,472,560),42802=>array(8,0,1241,729),42803=>array(60,-14,894,560),42804=>array(8,-14,1147,742),42805=>array(60,-14,935,560),42806=>array(8,-14,1055,729),42807=>array(60,-14,890,560),42808=>array(8,0,963,729),42809=>array(60,-14,788,560),42810=>array(8,0,963,729),42811=>array(60,-14,788,560),42812=>array(8,-208,951,729),42813=>array(60,-208,788,560),42814=>array(56,-14,644,742),42815=>array(62,-14,495,560),42816=>array(5,0,677,729),42817=>array(7,0,580,760),42822=>array(98,0,675,729),42823=>array(94,0,298,760),42824=>array(41,0,576,729),42825=>array(59,0,368,760),42826=>array(5,-14,802,742),42827=>array(5,-14,694,560),42830=>array(56,-14,1302,742),42831=>array(55,-14,964,560),42832=>array(5,0,569,729),42833=>array(-2,-208,580,560),42834=>array(24,0,700,729),42835=>array(24,-208,720,560),42838=>array(56,-178,731,742),42839=>array(55,-208,637,560),42852=>array(5,0,569,729),42853=>array(-2,-208,580,760),42854=>array(5,0,569,729),42855=>array(-2,-208,580,760),42880=>array(5,0,459,729),42881=>array(94,-208,184,560),42882=>array(98,-208,637,742),42883=>array(91,-208,549,560),42889=>array(117,0,220,517),42890=>array(78,161,298,380),42891=>array(151,235,250,729),42892=>array(96,458,179,729),42893=>array(85,0,587,729),42894=>array(38,-208,416,760),42896=>array(98,-157,733,729),42897=>array(91,-138,621,560),42912=>array(2,-14,778,742),42913=>array(2,-208,633,560),42914=>array(2,0,677,729),42915=>array(2,0,577,760),42916=>array(2,0,746,729),42917=>array(2,0,633,560),42918=>array(2,0,693,729),42919=>array(2,0,411,560),42920=>array(2,-14,633,742),42921=>array(2,-14,519,560),42922=>array(-51,0,703,729),43002=>array(91,0,824,547),43003=>array(58,0,477,729),43004=>array(34,0,505,729),43005=>array(98,0,765,729),43006=>array(98,0,197,928),43007=>array(33,0,1167,729),61184=>array(95,602,323,668),61185=>array(69,451,342,668),61186=>array(54,301,361,668),61187=>array(47,150,368,668),61188=>array(44,0,372,668),61189=>array(69,451,342,668),61190=>array(95,451,323,518),61191=>array(69,301,342,518),61192=>array(54,150,361,518),61193=>array(47,0,368,518),61194=>array(54,301,361,668),61195=>array(69,301,342,518),61196=>array(95,301,323,367),61197=>array(69,150,342,367),61198=>array(54,0,361,367),61199=>array(47,150,368,668),61200=>array(54,150,361,518),61201=>array(69,150,342,367),61202=>array(95,150,323,217),61203=>array(69,0,342,217),61204=>array(44,0,372,668),61205=>array(47,0,368,518),61206=>array(54,0,361,367),61207=>array(69,0,342,217),61208=>array(95,0,323,66),61209=>array(104,0,171,668),61440=>array(73,0,903,732),61441=>array(73,0,903,732),61442=>array(73,0,903,732),61443=>array(73,0,903,732),62464=>array(54,-15,526,828),62465=>array(54,-15,526,828),62466=>array(54,-15,570,837),62467=>array(54,0,835,837),62468=>array(54,-15,526,837),62469=>array(54,-15,526,837),62470=>array(54,-15,599,837),62471=>array(54,-15,828,837),62472=>array(54,0,501,837),62473=>array(54,-15,526,828),62474=>array(54,0,1115,837),62475=>array(54,-15,525,837),62476=>array(63,-15,536,828),62477=>array(54,0,815,837),62478=>array(54,-15,526,828),62479=>array(54,-15,526,844),62480=>array(54,0,860,837),62481=>array(63,-15,536,828),62482=>array(54,-15,677,837),62483=>array(24,-15,519,837),62484=>array(54,-15,818,837),62485=>array(54,-15,526,828),62486=>array(54,-15,841,837),62487=>array(54,-15,525,829),62488=>array(54,-15,525,837),62489=>array(64,0,536,837),62490=>array(55,-15,595,828),62491=>array(54,-15,525,828),62492=>array(64,-15,536,837),62493=>array(54,-15,545,828),62494=>array(63,-15,536,828),62495=>array(24,-15,492,837),62496=>array(54,-15,526,837),62497=>array(59,-15,530,837),62498=>array(54,-79,526,837),62499=>array(54,-15,525,838),62500=>array(54,-15,532,838),62501=>array(54,-15,594,837),62502=>array(54,-15,901,838),62504=>array(60,-235,872,816),62505=>array(49,-230,759,853),62506=>array(49,-15,459,765),62507=>array(49,-15,459,777),62508=>array(49,-15,459,875),62509=>array(49,-15,459,818),62510=>array(49,-15,459,887),62511=>array(49,-15,459,809),62512=>array(49,-236,449,765),62513=>array(49,-236,449,799),62514=>array(49,-236,449,901),62515=>array(49,-236,449,809),62516=>array(49,0,469,765),62517=>array(49,0,469,799),62518=>array(49,0,469,809),62519=>array(49,-0,737,765),62520=>array(49,-0,737,777),62521=>array(49,-0,737,895),62522=>array(49,-0,737,799),62523=>array(49,-0,737,809),62524=>array(29,-236,488,765),62525=>array(29,-236,488,777),62526=>array(29,-236,488,904),62527=>array(29,-236,488,799),62528=>array(29,-236,488,809),62529=>array(29,-236,488,852),63173=>array(55,-14,557,760),64256=>array(23,0,708,760),64257=>array(23,0,536,760),64258=>array(23,0,536,760),64259=>array(23,0,873,760),64260=>array(23,0,873,760),64261=>array(23,0,662,760),64262=>array(54,-14,837,742),64275=>array(83,-14,1111,760),64276=>array(85,-14,1111,760),64277=>array(85,-208,1111,760),64278=>array(85,-208,1111,760),64279=>array(85,-208,1451,760),64285=>array(66,44,157,547),64286=>array(167,625,473,765),64287=>array(36,44,329,547),64288=>array(38,0,562,547),64289=>array(85,0,772,547),64290=>array(43,0,717,547),64291=>array(91,0,764,547),64292=>array(43,0,716,547),64293=>array(43,0,716,760),64294=>array(91,0,764,547),64295=>array(43,0,716,547),64296=>array(47,-4,716,547),64297=>array(106,272,732,627),64298=>array(43,0,666,698),64299=>array(38,0,666,698),64300=>array(43,0,666,698),64301=>array(43,0,666,698),64302=>array(91,-159,578,547),64303=>array(91,-193,578,547),64304=>array(91,-159,578,547),64305=>array(43,0,535,547),64306=>array(43,-5,383,547),64307=>array(43,0,511,547),64308=>array(91,0,563,547),64309=>array(43,0,265,547),64310=>array(43,0,363,547),64312=>array(90,-14,593,552),64313=>array(43,204,264,547),64314=>array(43,-208,446,547),64315=>array(43,0,474,547),64316=>array(43,0,492,729),64318=>array(43,0,588,555),64320=>array(43,0,309,547),64321=>array(90,-14,593,547),64323=>array(91,-208,549,547),64324=>array(91,0,569,547),64326=>array(43,0,502,547),64327=>array(91,-208,633,546),64328=>array(43,0,474,547),64329=>array(43,0,666,547),64330=>array(10,-4,566,547),64331=>array(91,0,182,698),64332=>array(43,0,535,698),64333=>array(43,0,474,698),64334=>array(91,0,569,698),64335=>array(43,0,571,760),64338=>array(63,-244,865,327),64339=>array(63,-244,992,327),64340=>array(-10,-244,191,293),64341=>array(-10,-244,312,293),64342=>array(63,-244,865,327),64343=>array(63,-244,992,327),64344=>array(-10,-244,244,293),64345=>array(-10,-244,312,293),64346=>array(63,-244,865,327),64347=>array(63,-244,992,327),64348=>array(-10,-244,244,293),64349=>array(-10,-244,312,293),64350=>array(63,-10,865,513),64351=>array(63,-10,992,513),64352=>array(-10,0,191,610),64353=>array(-10,0,312,610),64354=>array(63,-10,865,513),64355=>array(63,-10,992,513),64356=>array(-10,0,244,610),64357=>array(-10,0,312,610),64358=>array(63,-10,865,575),64359=>array(63,-10,992,575),64360=>array(-10,0,273,672),64361=>array(-10,0,312,672),64362=>array(63,-45,952,757),64363=>array(63,-44,1045,659),64364=>array(-10,0,406,757),64365=>array(-10,0,516,684),64366=>array(63,-45,952,757),64367=>array(63,-44,1045,659),64368=>array(-10,0,406,757),64369=>array(-10,0,516,684),64370=>array(77,-244,645,425),64371=>array(77,-244,655,425),64372=>array(-10,-220,545,398),64373=>array(-10,-220,655,398),64374=>array(77,-244,645,425),64375=>array(77,-244,655,425),64376=>array(-10,-98,545,398),64377=>array(-10,-98,655,398),64378=>array(77,-244,645,425),64379=>array(77,-244,655,425),64380=>array(-10,-220,545,398),64381=>array(-10,-220,655,398),64382=>array(77,-244,645,425),64383=>array(77,-244,655,425),64384=>array(-10,-220,545,398),64385=>array(-10,-220,655,398),64386=>array(61,-146,388,415),64387=>array(61,-146,535,415),64388=>array(61,-19,388,586),64389=>array(61,-19,535,586),64390=>array(61,-19,388,708),64391=>array(61,-19,535,708),64392=>array(61,-19,388,746),64393=>array(61,-19,535,746),64394=>array(-42,-244,439,586),64395=>array(-42,-244,562,586),64396=>array(-42,-244,469,648),64397=>array(-42,-244,562,648),64398=>array(63,-43,895,760),64399=>array(63,-43,981,760),64400=>array(-10,0,476,760),64401=>array(-10,0,562,760),64402=>array(63,-43,895,896),64403=>array(63,-43,981,896),64404=>array(-10,0,476,896),64405=>array(-10,0,562,896),64406=>array(63,-293,895,896),64407=>array(63,-293,981,896),64408=>array(-10,-269,476,896),64409=>array(-10,-269,562,896),64410=>array(63,-43,895,903),64411=>array(63,-43,981,903),64412=>array(-10,0,476,903),64413=>array(-10,0,562,903),64414=>array(72,-162,660,366),64415=>array(72,-244,771,284),64416=>array(72,-162,660,636),64417=>array(72,-244,771,514),64418=>array(-10,0,273,672),64419=>array(-10,0,312,672),64426=>array(70,-33,638,487),64427=>array(70,-244,642,333),64428=>array(-10,-33,467,487),64429=>array(-10,-244,471,333),64467=>array(70,-27,722,854),64468=>array(70,-27,853,854),64469=>array(-10,0,476,928),64470=>array(-10,0,562,928),64473=>array(-42,-244,406,556),64474=>array(-42,-244,526,556),64488=>array(-10,0,191,293),64489=>array(-10,0,312,293),64508=>array(63,-131,719,411),64509=>array(63,-133,843,251),64510=>array(-10,-146,244,293),64511=>array(-10,-146,312,293),65056=>array(-445,752,0,929),65057=>array(0,752,445,929),65058=>array(-354,756,0,894),65059=>array(0,756,354,894),65136=>array(4,591,289,825),65137=>array(-10,0,303,825),65138=>array(4,591,289,874),65139=>array(51,0,271,177),65140=>array(4,-239,289,-5),65142=>array(4,591,289,708),65143=>array(-10,0,303,708),65144=>array(4,590,289,874),65145=>array(-10,0,303,874),65146=>array(4,-137,289,-20),65147=>array(-10,-137,303,90),65148=>array(-6,599,299,869),65149=>array(-10,0,303,869),65150=>array(12,610,279,878),65151=>array(-10,0,303,878),65152=>array(80,42,390,483),65153=>array(-37,0,315,939),65154=>array(-37,0,315,939),65155=>array(53,0,220,1028),65156=>array(53,0,314,1028),65157=>array(-42,-244,406,588),65158=>array(-42,-244,526,588),65159=>array(53,-244,220,760),65160=>array(53,-244,314,760),65161=>array(63,-131,719,588),65162=>array(63,-133,843,466),65163=>array(-10,0,227,613),65164=>array(-10,0,312,613),65165=>array(94,0,184,760),65166=>array(94,0,314,760),65167=>array(63,-171,865,327),65168=>array(63,-171,992,327),65169=>array(-10,-146,191,293),65170=>array(-10,-146,312,293),65171=>array(68,-28,453,513),65172=>array(71,0,546,513),65173=>array(63,-10,865,391),65174=>array(63,-10,992,391),65175=>array(-10,0,244,488),65176=>array(-10,0,312,488),65177=>array(63,-10,865,513),65178=>array(63,-10,992,513),65179=>array(-10,0,244,610),65180=>array(-10,0,312,610),65181=>array(77,-244,645,425),65182=>array(77,-244,655,425),65183=>array(-10,-146,545,398),65184=>array(-10,-146,655,398),65185=>array(77,-244,645,425),65186=>array(77,-244,655,425),65187=>array(-10,0,545,398),65188=>array(-10,0,655,398),65189=>array(77,-244,645,586),65190=>array(77,-244,655,586),65191=>array(-10,0,545,537),65192=>array(-10,0,655,537),65193=>array(61,-19,388,415),65194=>array(61,-19,535,415),65195=>array(61,-19,388,586),65196=>array(61,-19,535,586),65197=>array(-42,-244,423,269),65198=>array(-42,-244,562,269),65199=>array(-42,-244,423,464),65200=>array(-42,-244,562,464),65201=>array(63,-244,1138,366),65202=>array(63,-244,1285,366),65203=>array(-10,-14,755,366),65204=>array(-10,-14,902,366),65205=>array(63,-244,1138,586),65206=>array(63,-244,1285,586),65207=>array(-10,-14,755,586),65208=>array(-10,-14,902,586),65209=>array(63,-244,1134,362),65210=>array(63,-244,1235,362),65211=>array(-10,0,774,362),65212=>array(-10,0,877,362),65213=>array(63,-244,1134,464),65214=>array(63,-244,1235,464),65215=>array(-10,0,774,464),65216=>array(-10,0,877,464),65217=>array(70,0,857,760),65218=>array(70,0,959,760),65219=>array(-10,0,729,760),65220=>array(-10,0,830,760),65221=>array(70,0,857,760),65222=>array(70,0,959,760),65223=>array(-10,0,729,760),65224=>array(-10,0,830,760),65225=>array(57,-244,587,521),65226=>array(57,-244,587,382),65227=>array(-10,0,496,521),65228=>array(-10,0,492,382),65229=>array(57,-244,587,659),65230=>array(57,-244,587,537),65231=>array(-10,0,496,659),65232=>array(-10,0,492,537),65233=>array(63,-45,952,635),65234=>array(63,-44,1045,537),65235=>array(-10,0,406,635),65236=>array(-10,0,516,562),65237=>array(52,-215,701,635),65238=>array(52,-244,844,500),65239=>array(-10,0,406,635),65240=>array(-10,0,516,562),65241=>array(70,-27,722,760),65242=>array(70,-27,853,760),65243=>array(-10,0,476,760),65244=>array(-10,0,562,760),65245=>array(70,-152,637,760),65246=>array(70,-152,767,760),65247=>array(-10,0,210,760),65248=>array(-10,0,341,760),65249=>array(68,-240,546,369),65250=>array(68,-240,675,307),65251=>array(-10,-25,456,303),65252=>array(-10,-24,588,303),65253=>array(72,-162,660,464),65254=>array(72,-244,771,342),65255=>array(-10,0,191,488),65256=>array(-10,0,312,488),65257=>array(68,-28,453,358),65258=>array(71,0,546,366),65259=>array(-10,-33,467,487),65260=>array(-10,-244,471,333),65261=>array(-42,-244,406,315),65262=>array(-42,-244,526,315),65263=>array(63,-131,719,411),65264=>array(63,-133,843,251),65265=>array(63,-244,719,411),65266=>array(63,-244,843,251),65267=>array(-10,-146,244,293),65268=>array(-10,-146,312,293),65269=>array(-103,-10,468,866),65270=>array(-103,-10,606,866),65271=>array(-13,-10,468,955),65272=>array(-13,-10,606,955),65273=>array(11,-244,468,760),65274=>array(11,-244,606,760),65275=>array(41,-10,468,760),65276=>array(41,-10,606,760),65533=>array(15,-84,1011,912),65535=>array(50,-177,550,705)); $cw=array(0=>600,32=>318,33=>401,34=>460,35=>838,36=>636,37=>950,38=>780,39=>275,40=>390,41=>390,42=>500,43=>838,44=>318,45=>361,46=>318,47=>337,48=>636,49=>636,50=>636,51=>636,52=>636,53=>636,54=>636,55=>636,56=>636,57=>636,58=>337,59=>337,60=>838,61=>838,62=>838,63=>531,64=>1000,65=>684,66=>686,67=>698,68=>770,69=>632,70=>575,71=>775,72=>752,73=>295,74=>295,75=>656,76=>557,77=>863,78=>748,79=>787,80=>603,81=>787,82=>695,83=>635,84=>611,85=>732,86=>684,87=>989,88=>685,89=>611,90=>685,91=>390,92=>337,93=>390,94=>838,95=>500,96=>500,97=>613,98=>635,99=>550,100=>635,101=>615,102=>352,103=>635,104=>634,105=>278,106=>278,107=>579,108=>278,109=>974,110=>634,111=>612,112=>635,113=>635,114=>411,115=>521,116=>392,117=>634,118=>592,119=>818,120=>592,121=>592,122=>525,123=>636,124=>337,125=>636,126=>838,160=>318,161=>401,162=>636,163=>636,164=>636,165=>636,166=>337,167=>500,168=>500,169=>1000,170=>471,171=>612,172=>838,173=>361,174=>1000,175=>500,176=>500,177=>838,178=>401,179=>401,180=>500,181=>636,182=>636,183=>318,184=>500,185=>401,186=>471,187=>612,188=>969,189=>969,190=>969,191=>531,192=>684,193=>684,194=>684,195=>684,196=>684,197=>684,198=>974,199=>698,200=>632,201=>632,202=>632,203=>632,204=>295,205=>295,206=>295,207=>295,208=>775,209=>748,210=>787,211=>787,212=>787,213=>787,214=>787,215=>838,216=>787,217=>732,218=>732,219=>732,220=>732,221=>611,222=>605,223=>630,224=>613,225=>613,226=>613,227=>613,228=>613,229=>613,230=>982,231=>550,232=>615,233=>615,234=>615,235=>615,236=>278,237=>278,238=>278,239=>278,240=>612,241=>634,242=>612,243=>612,244=>612,245=>612,246=>612,247=>838,248=>612,249=>634,250=>634,251=>634,252=>634,253=>592,254=>635,255=>592,256=>684,257=>613,258=>684,259=>613,260=>684,261=>613,262=>698,263=>550,264=>698,265=>550,266=>698,267=>550,268=>698,269=>550,270=>770,271=>635,272=>775,273=>635,274=>632,275=>615,276=>632,277=>615,278=>632,279=>615,280=>632,281=>615,282=>632,283=>615,284=>775,285=>635,286=>775,287=>635,288=>775,289=>635,290=>775,291=>635,292=>752,293=>634,294=>916,295=>695,296=>295,297=>278,298=>295,299=>278,300=>295,301=>278,302=>295,303=>278,304=>295,305=>278,306=>590,307=>556,308=>295,309=>278,310=>656,311=>579,312=>579,313=>557,314=>278,315=>557,316=>278,317=>557,318=>375,319=>557,320=>342,321=>562,322=>284,323=>748,324=>634,325=>748,326=>634,327=>748,328=>634,329=>813,330=>748,331=>634,332=>787,333=>612,334=>787,335=>612,336=>787,337=>612,338=>1070,339=>1023,340=>695,341=>411,342=>695,343=>411,344=>695,345=>411,346=>635,347=>521,348=>635,349=>521,350=>635,351=>521,352=>635,353=>521,354=>611,355=>392,356=>611,357=>392,358=>611,359=>392,360=>732,361=>634,362=>732,363=>634,364=>732,365=>634,366=>732,367=>634,368=>732,369=>634,370=>732,371=>634,372=>989,373=>818,374=>611,375=>592,376=>611,377=>685,378=>525,379=>685,380=>525,381=>685,382=>525,383=>352,384=>635,385=>735,386=>686,387=>635,388=>686,389=>635,390=>703,391=>698,392=>550,393=>775,394=>819,395=>686,396=>635,397=>612,398=>632,399=>787,400=>614,401=>575,402=>352,403=>775,404=>687,405=>984,406=>354,407=>295,408=>746,409=>579,410=>278,411=>592,412=>974,413=>748,414=>634,415=>787,416=>913,417=>612,418=>949,419=>759,420=>652,421=>635,422=>695,423=>635,424=>521,425=>632,426=>336,427=>392,428=>611,429=>392,430=>611,431=>858,432=>634,433=>764,434=>721,435=>744,436=>730,437=>685,438=>525,439=>666,440=>666,441=>578,442=>525,443=>636,444=>666,445=>578,446=>510,447=>635,448=>295,449=>492,450=>459,451=>295,452=>1422,453=>1299,454=>1154,455=>835,456=>787,457=>457,458=>931,459=>924,460=>797,461=>684,462=>613,463=>295,464=>278,465=>787,466=>612,467=>732,468=>634,469=>732,470=>634,471=>732,472=>634,473=>732,474=>634,475=>732,476=>634,477=>615,478=>684,479=>613,480=>684,481=>613,482=>974,483=>982,484=>775,485=>635,486=>775,487=>635,488=>656,489=>579,490=>787,491=>612,492=>787,493=>612,494=>666,495=>578,496=>278,497=>1422,498=>1299,499=>1154,500=>775,501=>635,502=>1113,503=>682,504=>748,505=>634,506=>684,507=>613,508=>974,509=>982,510=>787,511=>612,512=>684,513=>613,514=>684,515=>613,516=>632,517=>615,518=>632,519=>615,520=>295,521=>278,522=>295,523=>278,524=>787,525=>612,526=>787,527=>612,528=>695,529=>411,530=>695,531=>411,532=>732,533=>634,534=>732,535=>634,536=>635,537=>521,538=>611,539=>392,540=>627,541=>521,542=>752,543=>634,544=>735,545=>838,546=>698,547=>610,548=>685,549=>525,550=>684,551=>613,552=>632,553=>615,554=>787,555=>612,556=>787,557=>612,558=>787,559=>612,560=>787,561=>612,562=>611,563=>592,564=>475,565=>843,566=>477,567=>278,568=>998,569=>998,570=>684,571=>698,572=>550,573=>557,574=>611,575=>521,576=>525,577=>603,578=>479,579=>686,580=>732,581=>684,582=>632,583=>615,584=>295,585=>278,586=>781,587=>635,588=>695,589=>411,590=>611,591=>592,592=>600,593=>635,594=>635,595=>635,596=>549,597=>550,598=>635,599=>696,600=>615,601=>615,602=>819,603=>541,604=>532,605=>775,606=>664,607=>278,608=>696,609=>635,610=>629,611=>596,612=>596,613=>634,614=>634,615=>634,616=>278,617=>338,618=>372,619=>396,620=>487,621=>278,622=>706,623=>974,624=>974,625=>974,626=>646,627=>642,628=>634,629=>612,630=>858,631=>728,632=>660,633=>414,634=>414,635=>414,636=>411,637=>411,638=>530,639=>530,640=>604,641=>604,642=>521,643=>336,644=>336,645=>461,646=>336,647=>392,648=>392,649=>634,650=>618,651=>598,652=>592,653=>818,654=>592,655=>611,656=>525,657=>525,658=>578,659=>578,660=>510,661=>510,662=>510,663=>510,664=>787,665=>580,666=>664,667=>708,668=>654,669=>292,670=>667,671=>507,672=>727,673=>510,674=>510,675=>1014,676=>1058,677=>1013,678=>830,679=>610,680=>778,681=>848,682=>706,683=>654,684=>515,685=>515,686=>661,687=>664,688=>404,689=>399,690=>175,691=>259,692=>295,693=>296,694=>379,695=>515,696=>373,697=>278,698=>460,699=>318,700=>318,701=>318,702=>307,703=>307,704=>370,705=>370,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>275,713=>500,714=>500,715=>500,716=>275,717=>500,718=>500,719=>500,720=>337,721=>337,722=>307,723=>307,724=>500,725=>500,726=>390,727=>317,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>315,735=>500,736=>426,737=>166,738=>373,739=>444,740=>370,741=>493,742=>493,743=>493,744=>493,745=>493,748=>500,749=>500,750=>518,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>654,881=>568,882=>862,883=>647,884=>278,885=>278,886=>748,887=>650,890=>500,891=>549,892=>550,893=>549,894=>337,900=>500,901=>500,902=>692,903=>318,904=>746,905=>871,906=>408,908=>813,910=>825,911=>826,912=>338,913=>684,914=>686,915=>557,916=>684,917=>632,918=>685,919=>752,920=>787,921=>295,922=>656,923=>684,924=>863,925=>748,926=>632,927=>787,928=>752,929=>603,931=>632,932=>611,933=>611,934=>787,935=>685,936=>787,937=>764,938=>295,939=>611,940=>659,941=>541,942=>634,943=>338,944=>579,945=>659,946=>638,947=>592,948=>612,949=>541,950=>544,951=>634,952=>612,953=>338,954=>589,955=>592,956=>636,957=>559,958=>558,959=>612,960=>602,961=>635,962=>587,963=>634,964=>602,965=>579,966=>660,967=>578,968=>660,969=>837,970=>338,971=>579,972=>612,973=>579,974=>837,975=>656,976=>614,977=>619,978=>699,979=>842,980=>699,981=>660,982=>837,983=>664,984=>787,985=>612,986=>648,987=>587,988=>575,989=>458,990=>660,991=>660,992=>865,993=>627,994=>934,995=>837,996=>758,997=>659,998=>792,999=>615,1000=>687,1001=>607,1002=>768,1003=>625,1004=>699,1005=>612,1006=>611,1007=>536,1008=>664,1009=>635,1010=>550,1011=>278,1012=>787,1013=>615,1014=>615,1015=>605,1016=>635,1017=>698,1018=>863,1019=>651,1020=>635,1021=>703,1022=>698,1023=>703,1024=>632,1025=>632,1026=>786,1027=>610,1028=>698,1029=>635,1030=>295,1031=>295,1032=>295,1033=>1094,1034=>1045,1035=>786,1036=>710,1037=>748,1038=>609,1039=>752,1040=>684,1041=>686,1042=>686,1043=>610,1044=>781,1045=>632,1046=>1077,1047=>641,1048=>748,1049=>748,1050=>710,1051=>752,1052=>863,1053=>752,1054=>787,1055=>752,1056=>603,1057=>698,1058=>611,1059=>609,1060=>861,1061=>685,1062=>776,1063=>686,1064=>1069,1065=>1094,1066=>833,1067=>882,1068=>686,1069=>698,1070=>1080,1071=>695,1072=>613,1073=>617,1074=>589,1075=>525,1076=>691,1077=>615,1078=>901,1079=>532,1080=>650,1081=>650,1082=>604,1083=>639,1084=>754,1085=>654,1086=>612,1087=>654,1088=>635,1089=>550,1090=>583,1091=>592,1092=>855,1093=>592,1094=>681,1095=>591,1096=>915,1097=>942,1098=>707,1099=>790,1100=>589,1101=>549,1102=>842,1103=>602,1104=>615,1105=>615,1106=>625,1107=>525,1108=>549,1109=>521,1110=>278,1111=>278,1112=>278,1113=>902,1114=>898,1115=>652,1116=>604,1117=>650,1118=>592,1119=>654,1120=>934,1121=>837,1122=>771,1123=>672,1124=>942,1125=>749,1126=>879,1127=>783,1128=>1160,1129=>1001,1130=>787,1131=>612,1132=>1027,1133=>824,1134=>636,1135=>541,1136=>856,1137=>876,1138=>787,1139=>612,1140=>781,1141=>665,1142=>781,1143=>665,1144=>992,1145=>904,1146=>953,1147=>758,1148=>1180,1149=>1028,1150=>934,1151=>837,1152=>698,1153=>550,1154=>502,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>772,1163=>677,1164=>686,1165=>589,1166=>603,1167=>635,1168=>610,1169=>525,1170=>675,1171=>590,1172=>624,1173=>530,1174=>1077,1175=>901,1176=>641,1177=>532,1178=>710,1179=>604,1180=>710,1181=>604,1182=>710,1183=>604,1184=>856,1185=>832,1186=>752,1187=>661,1188=>1014,1189=>877,1190=>1081,1191=>916,1192=>878,1193=>693,1194=>698,1195=>550,1196=>611,1197=>583,1198=>611,1199=>592,1200=>611,1201=>592,1202=>685,1203=>592,1204=>934,1205=>807,1206=>686,1207=>591,1208=>686,1209=>591,1210=>686,1211=>634,1212=>941,1213=>728,1214=>941,1215=>728,1216=>295,1217=>1077,1218=>901,1219=>656,1220=>604,1221=>776,1222=>670,1223=>752,1224=>661,1225=>776,1226=>681,1227=>686,1228=>591,1229=>888,1230=>774,1231=>278,1232=>684,1233=>613,1234=>684,1235=>613,1236=>974,1237=>982,1238=>632,1239=>615,1240=>787,1241=>615,1242=>787,1243=>615,1244=>1077,1245=>901,1246=>641,1247=>532,1248=>666,1249=>578,1250=>748,1251=>650,1252=>748,1253=>650,1254=>787,1255=>612,1256=>787,1257=>612,1258=>787,1259=>612,1260=>698,1261=>549,1262=>609,1263=>592,1264=>609,1265=>592,1266=>609,1267=>592,1268=>686,1269=>591,1270=>610,1271=>525,1272=>882,1273=>790,1274=>675,1275=>590,1276=>685,1277=>592,1278=>685,1279=>592,1280=>686,1281=>589,1282=>1006,1283=>897,1284=>975,1285=>869,1286=>679,1287=>588,1288=>1072,1289=>957,1290=>1113,1291=>967,1292=>775,1293=>660,1294=>773,1295=>711,1296=>614,1297=>541,1298=>752,1299=>639,1300=>1169,1301=>994,1302=>894,1303=>864,1304=>1032,1305=>986,1306=>787,1307=>635,1308=>989,1309=>818,1310=>710,1311=>604,1312=>1081,1313=>905,1314=>1081,1315=>912,1316=>793,1317=>683,1329=>766,1330=>732,1331=>753,1332=>753,1333=>732,1334=>772,1335=>640,1336=>732,1337=>859,1338=>753,1339=>691,1340=>533,1341=>922,1342=>863,1343=>732,1344=>716,1345=>766,1346=>753,1347=>767,1348=>792,1349=>728,1350=>729,1351=>757,1352=>732,1353=>713,1354=>800,1355=>768,1356=>792,1357=>732,1358=>753,1359=>705,1360=>694,1361=>744,1362=>538,1363=>811,1364=>757,1365=>787,1366=>790,1369=>307,1370=>318,1371=>234,1372=>361,1373=>238,1374=>405,1375=>500,1377=>974,1378=>634,1379=>658,1380=>663,1381=>634,1382=>635,1383=>515,1384=>634,1385=>738,1386=>658,1387=>634,1388=>271,1389=>980,1390=>623,1391=>634,1392=>634,1393=>608,1394=>634,1395=>629,1396=>634,1397=>271,1398=>634,1399=>499,1400=>634,1401=>404,1402=>974,1403=>560,1404=>648,1405=>634,1406=>634,1407=>974,1408=>634,1409=>633,1410=>435,1411=>974,1412=>636,1413=>609,1414=>805,1415=>812,1417=>337,1418=>361,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>361,1471=>0,1472=>295,1473=>0,1474=>0,1475=>295,1478=>441,1479=>0,1488=>668,1489=>578,1490=>412,1491=>546,1492=>653,1493=>272,1494=>346,1495=>653,1496=>648,1497=>224,1498=>537,1499=>529,1500=>568,1501=>664,1502=>679,1503=>272,1504=>400,1505=>649,1506=>626,1507=>640,1508=>625,1509=>540,1510=>593,1511=>709,1512=>564,1513=>708,1514=>657,1520=>471,1521=>423,1522=>331,1523=>416,1524=>645,1542=>637,1543=>637,1545=>757,1546=>977,1548=>323,1557=>0,1563=>318,1567=>531,1569=>470,1570=>278,1571=>278,1572=>483,1573=>278,1574=>783,1575=>278,1576=>941,1577=>524,1578=>941,1579=>941,1580=>646,1581=>646,1582=>646,1583=>445,1584=>445,1585=>483,1586=>483,1587=>1221,1588=>1221,1589=>1209,1590=>1209,1591=>925,1592=>925,1593=>597,1594=>597,1600=>293,1601=>1037,1602=>776,1603=>824,1604=>727,1605=>619,1606=>734,1607=>524,1608=>483,1609=>783,1610=>783,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>537,1633=>537,1634=>537,1635=>537,1636=>537,1637=>537,1638=>537,1639=>537,1640=>537,1641=>537,1642=>537,1643=>325,1644=>318,1645=>545,1646=>941,1647=>776,1648=>0,1652=>292,1657=>941,1658=>941,1659=>941,1660=>941,1661=>941,1662=>941,1663=>941,1664=>941,1665=>646,1666=>646,1667=>646,1668=>646,1669=>646,1670=>646,1671=>646,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>483,1682=>483,1683=>498,1684=>530,1685=>610,1686=>530,1687=>483,1688=>483,1689=>483,1690=>1221,1691=>1221,1692=>1221,1693=>1209,1694=>1209,1695=>925,1696=>597,1697=>1037,1698=>1037,1699=>1037,1700=>1037,1701=>1037,1702=>1037,1703=>776,1704=>776,1705=>895,1706=>1054,1707=>895,1708=>824,1709=>824,1710=>824,1711=>895,1712=>895,1713=>895,1714=>895,1715=>895,1716=>895,1717=>727,1718=>727,1719=>727,1720=>727,1721=>734,1722=>734,1723=>734,1724=>734,1725=>734,1726=>698,1727=>646,1734=>483,1740=>783,1742=>783,1749=>524,1776=>537,1777=>537,1778=>537,1779=>537,1780=>537,1781=>537,1782=>537,1783=>537,1784=>537,1785=>537,1984=>636,1985=>636,1986=>636,1987=>636,1988=>636,1989=>636,1990=>636,1991=>636,1992=>636,1993=>636,1994=>278,1995=>571,1996=>424,1997=>592,1998=>654,1999=>654,2000=>594,2001=>654,2002=>829,2003=>438,2004=>438,2005=>559,2006=>612,2007=>350,2008=>959,2009=>473,2010=>783,2011=>654,2012=>625,2013=>734,2014=>530,2015=>724,2016=>473,2017=>625,2018=>594,2019=>530,2020=>530,2021=>522,2022=>594,2023=>594,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>313,2037=>313,2040=>560,2041=>560,2042=>361,3647=>636,3713=>670,3714=>684,3716=>688,3719=>482,3720=>628,3722=>684,3725=>688,3732=>669,3733=>642,3734=>645,3735=>655,3737=>659,3738=>625,3739=>625,3740=>745,3741=>767,3742=>687,3743=>687,3745=>702,3746=>688,3747=>684,3749=>649,3751=>632,3754=>703,3755=>819,3757=>633,3758=>684,3759=>788,3760=>632,3761=>0,3762=>539,3763=>539,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>663,3776=>375,3777=>657,3778=>460,3779=>547,3780=>491,3782=>674,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>636,3793=>641,3794=>641,3795=>670,3796=>625,3797=>625,3798=>703,3799=>670,3800=>674,3801=>677,3804=>1028,3805=>1028,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>508,4305=>518,4306=>581,4307=>818,4308=>508,4309=>513,4310=>500,4311=>801,4312=>518,4313=>510,4314=>1064,4315=>522,4316=>522,4317=>786,4318=>508,4319=>518,4320=>796,4321=>522,4322=>654,4323=>522,4324=>825,4325=>513,4326=>786,4327=>518,4328=>518,4329=>522,4330=>571,4331=>522,4332=>518,4333=>520,4334=>522,4335=>454,4336=>508,4337=>518,4338=>508,4339=>508,4340=>518,4341=>554,4342=>828,4343=>552,4344=>508,4345=>571,4346=>508,4347=>448,4348=>324,5121=>684,5122=>684,5123=>684,5124=>684,5125=>769,5126=>769,5127=>769,5129=>769,5130=>769,5131=>769,5132=>835,5133=>834,5134=>835,5135=>834,5136=>835,5137=>834,5138=>967,5139=>1007,5140=>967,5141=>1007,5142=>769,5143=>967,5144=>1007,5145=>967,5146=>1007,5147=>769,5149=>256,5150=>543,5151=>423,5152=>423,5153=>389,5154=>389,5155=>393,5156=>389,5157=>466,5158=>385,5159=>256,5160=>389,5161=>389,5162=>389,5163=>1090,5164=>909,5165=>953,5166=>1117,5167=>684,5168=>684,5169=>684,5170=>684,5171=>729,5172=>729,5173=>729,5175=>729,5176=>729,5177=>729,5178=>835,5179=>684,5180=>835,5181=>834,5182=>835,5183=>834,5184=>967,5185=>1007,5186=>967,5187=>1007,5188=>967,5189=>1007,5190=>967,5191=>1007,5192=>729,5193=>508,5194=>192,5196=>732,5197=>732,5198=>732,5199=>732,5200=>730,5201=>730,5202=>730,5204=>730,5205=>730,5206=>730,5207=>921,5208=>889,5209=>921,5210=>889,5211=>921,5212=>889,5213=>928,5214=>900,5215=>928,5216=>900,5217=>947,5218=>900,5219=>947,5220=>900,5221=>947,5222=>434,5223=>877,5224=>877,5225=>866,5226=>890,5227=>628,5228=>628,5229=>628,5230=>628,5231=>628,5232=>628,5233=>628,5234=>628,5235=>628,5236=>860,5237=>771,5238=>815,5239=>816,5240=>815,5241=>816,5242=>860,5243=>771,5244=>860,5245=>771,5246=>815,5247=>816,5248=>815,5249=>816,5250=>815,5251=>407,5252=>407,5253=>750,5254=>775,5255=>750,5256=>775,5257=>628,5258=>628,5259=>628,5260=>628,5261=>628,5262=>628,5263=>628,5264=>628,5265=>628,5266=>860,5267=>771,5268=>815,5269=>816,5270=>815,5271=>816,5272=>860,5273=>771,5274=>860,5275=>771,5276=>815,5277=>816,5278=>815,5279=>816,5280=>815,5281=>435,5282=>435,5283=>610,5284=>557,5285=>557,5286=>557,5287=>610,5288=>610,5289=>610,5290=>557,5291=>557,5292=>749,5293=>769,5294=>746,5295=>764,5296=>746,5297=>764,5298=>749,5299=>769,5300=>749,5301=>769,5302=>746,5303=>764,5304=>746,5305=>764,5306=>746,5307=>386,5308=>508,5309=>386,5312=>852,5313=>852,5314=>852,5315=>852,5316=>852,5317=>852,5318=>852,5319=>852,5320=>852,5321=>1069,5322=>1035,5323=>1059,5324=>852,5325=>1059,5326=>852,5327=>852,5328=>600,5329=>453,5330=>600,5331=>852,5332=>852,5333=>852,5334=>852,5335=>852,5336=>852,5337=>852,5338=>852,5339=>852,5340=>1069,5341=>1035,5342=>1059,5343=>1030,5344=>1059,5345=>1030,5346=>1069,5347=>1035,5348=>1069,5349=>1035,5350=>1083,5351=>1030,5352=>1083,5353=>1030,5354=>600,5356=>729,5357=>603,5358=>603,5359=>603,5360=>603,5361=>603,5362=>603,5363=>603,5364=>603,5365=>603,5366=>834,5367=>754,5368=>792,5369=>771,5370=>792,5371=>771,5372=>834,5373=>754,5374=>834,5375=>754,5376=>792,5377=>771,5378=>792,5379=>771,5380=>792,5381=>418,5382=>420,5383=>418,5392=>712,5393=>712,5394=>712,5395=>892,5396=>892,5397=>892,5398=>892,5399=>910,5400=>872,5401=>910,5402=>872,5403=>910,5404=>872,5405=>1140,5406=>1100,5407=>1140,5408=>1100,5409=>1140,5410=>1100,5411=>1140,5412=>1100,5413=>641,5414=>627,5415=>627,5416=>627,5417=>627,5418=>627,5419=>627,5420=>627,5421=>627,5422=>627,5423=>844,5424=>781,5425=>816,5426=>818,5427=>816,5428=>818,5429=>844,5430=>781,5431=>844,5432=>781,5433=>816,5434=>818,5435=>816,5436=>818,5437=>816,5438=>418,5440=>389,5441=>484,5442=>916,5443=>916,5444=>916,5445=>916,5446=>916,5447=>916,5448=>603,5449=>603,5450=>603,5451=>603,5452=>603,5453=>603,5454=>834,5455=>754,5456=>418,5458=>729,5459=>684,5460=>684,5461=>684,5462=>684,5463=>726,5464=>726,5465=>726,5466=>726,5467=>924,5468=>1007,5469=>508,5470=>732,5471=>732,5472=>732,5473=>732,5474=>732,5475=>732,5476=>730,5477=>730,5478=>730,5479=>730,5480=>947,5481=>900,5482=>508,5492=>831,5493=>831,5494=>831,5495=>831,5496=>831,5497=>831,5498=>831,5499=>563,5500=>752,5501=>484,5502=>1047,5503=>1047,5504=>1047,5505=>1047,5506=>1047,5507=>1047,5508=>1047,5509=>825,5514=>831,5515=>831,5516=>831,5517=>831,5518=>1259,5519=>1259,5520=>1259,5521=>1002,5522=>1002,5523=>1259,5524=>1259,5525=>700,5526=>1073,5536=>852,5537=>852,5538=>852,5539=>852,5540=>852,5541=>852,5542=>600,5543=>643,5544=>643,5545=>643,5546=>643,5547=>643,5548=>643,5549=>643,5550=>418,5551=>628,5598=>770,5601=>767,5702=>468,5703=>468,5742=>444,5743=>1047,5744=>1310,5745=>1632,5746=>1632,5747=>1375,5748=>1375,5749=>1632,5750=>1632,5760=>477,5761=>493,5762=>712,5763=>931,5764=>1150,5765=>1370,5766=>493,5767=>712,5768=>931,5769=>1150,5770=>1370,5771=>498,5772=>718,5773=>938,5774=>1159,5775=>1379,5776=>493,5777=>712,5778=>930,5779=>1149,5780=>1370,5781=>498,5782=>752,5783=>789,5784=>1205,5785=>1150,5786=>683,5787=>507,5788=>507,7424=>592,7425=>717,7426=>982,7427=>586,7428=>550,7429=>605,7430=>605,7431=>491,7432=>541,7433=>278,7434=>395,7435=>579,7436=>583,7437=>754,7438=>650,7439=>612,7440=>550,7441=>684,7442=>684,7443=>684,7444=>1023,7446=>612,7447=>612,7448=>524,7449=>602,7450=>602,7451=>583,7452=>574,7453=>737,7454=>948,7455=>638,7456=>592,7457=>818,7458=>525,7459=>526,7462=>583,7463=>592,7464=>564,7465=>524,7466=>590,7467=>639,7468=>431,7469=>613,7470=>432,7472=>485,7473=>398,7474=>398,7475=>488,7476=>474,7477=>186,7478=>186,7479=>413,7480=>351,7481=>543,7482=>471,7483=>471,7484=>496,7485=>439,7486=>380,7487=>438,7488=>385,7489=>461,7490=>623,7491=>392,7492=>392,7493=>405,7494=>648,7495=>428,7496=>405,7497=>417,7498=>417,7499=>360,7500=>359,7501=>405,7502=>179,7503=>426,7504=>623,7505=>409,7506=>414,7507=>370,7508=>414,7509=>414,7510=>428,7511=>295,7512=>405,7513=>470,7514=>623,7515=>417,7517=>402,7518=>373,7519=>385,7520=>416,7521=>364,7522=>179,7523=>259,7524=>405,7525=>417,7526=>402,7527=>373,7528=>412,7529=>416,7530=>364,7543=>635,7544=>474,7547=>372,7549=>667,7557=>278,7579=>405,7580=>370,7581=>370,7582=>414,7583=>360,7584=>296,7585=>233,7586=>405,7587=>405,7588=>261,7589=>250,7590=>261,7591=>261,7592=>234,7593=>250,7594=>235,7595=>376,7596=>623,7597=>623,7598=>411,7599=>479,7600=>409,7601=>414,7602=>414,7603=>360,7604=>287,7605=>295,7606=>508,7607=>418,7608=>361,7609=>406,7610=>417,7611=>366,7612=>437,7613=>366,7614=>392,7615=>414,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>684,7681=>613,7682=>686,7683=>635,7684=>686,7685=>635,7686=>686,7687=>635,7688=>698,7689=>550,7690=>770,7691=>635,7692=>770,7693=>635,7694=>770,7695=>635,7696=>770,7697=>635,7698=>770,7699=>635,7700=>632,7701=>615,7702=>632,7703=>615,7704=>632,7705=>615,7706=>632,7707=>615,7708=>632,7709=>615,7710=>575,7711=>352,7712=>775,7713=>635,7714=>752,7715=>634,7716=>752,7717=>634,7718=>752,7719=>634,7720=>752,7721=>634,7722=>752,7723=>634,7724=>295,7725=>278,7726=>295,7727=>278,7728=>656,7729=>579,7730=>656,7731=>579,7732=>656,7733=>579,7734=>557,7735=>288,7736=>557,7737=>288,7738=>557,7739=>278,7740=>557,7741=>278,7742=>863,7743=>974,7744=>863,7745=>974,7746=>863,7747=>974,7748=>748,7749=>634,7750=>748,7751=>634,7752=>748,7753=>634,7754=>748,7755=>634,7756=>787,7757=>612,7758=>787,7759=>612,7760=>787,7761=>612,7762=>787,7763=>612,7764=>603,7765=>635,7766=>603,7767=>635,7768=>695,7769=>411,7770=>695,7771=>411,7772=>695,7773=>411,7774=>695,7775=>411,7776=>635,7777=>521,7778=>635,7779=>521,7780=>635,7781=>521,7782=>635,7783=>521,7784=>635,7785=>521,7786=>611,7787=>392,7788=>611,7789=>392,7790=>611,7791=>392,7792=>611,7793=>392,7794=>732,7795=>634,7796=>732,7797=>634,7798=>732,7799=>634,7800=>732,7801=>634,7802=>732,7803=>634,7804=>684,7805=>592,7806=>684,7807=>592,7808=>989,7809=>818,7810=>989,7811=>818,7812=>989,7813=>818,7814=>989,7815=>818,7816=>989,7817=>818,7818=>685,7819=>592,7820=>685,7821=>592,7822=>611,7823=>592,7824=>685,7825=>525,7826=>685,7827=>525,7828=>685,7829=>525,7830=>634,7831=>392,7832=>818,7833=>592,7834=>613,7835=>352,7836=>352,7837=>352,7838=>769,7839=>612,7840=>684,7841=>613,7842=>684,7843=>613,7844=>684,7845=>613,7846=>684,7847=>613,7848=>684,7849=>613,7850=>684,7851=>613,7852=>684,7853=>613,7854=>684,7855=>613,7856=>684,7857=>613,7858=>684,7859=>613,7860=>684,7861=>613,7862=>684,7863=>613,7864=>632,7865=>615,7866=>632,7867=>615,7868=>632,7869=>615,7870=>632,7871=>615,7872=>632,7873=>615,7874=>632,7875=>615,7876=>632,7877=>615,7878=>632,7879=>615,7880=>295,7881=>278,7882=>295,7883=>278,7884=>787,7885=>612,7886=>787,7887=>612,7888=>787,7889=>612,7890=>787,7891=>612,7892=>787,7893=>612,7894=>787,7895=>612,7896=>787,7897=>612,7898=>913,7899=>612,7900=>913,7901=>612,7902=>913,7903=>612,7904=>913,7905=>612,7906=>913,7907=>612,7908=>732,7909=>634,7910=>732,7911=>634,7912=>858,7913=>634,7914=>858,7915=>634,7916=>858,7917=>634,7918=>858,7919=>634,7920=>858,7921=>634,7922=>611,7923=>592,7924=>611,7925=>592,7926=>611,7927=>592,7928=>611,7929=>592,7930=>769,7931=>477,7936=>659,7937=>659,7938=>659,7939=>659,7940=>659,7941=>659,7942=>659,7943=>659,7944=>684,7945=>684,7946=>877,7947=>877,7948=>769,7949=>801,7950=>708,7951=>743,7952=>541,7953=>541,7954=>541,7955=>541,7956=>541,7957=>541,7960=>711,7961=>711,7962=>966,7963=>975,7964=>898,7965=>928,7968=>634,7969=>634,7970=>634,7971=>634,7972=>634,7973=>634,7974=>634,7975=>634,7976=>837,7977=>835,7978=>1086,7979=>1089,7980=>1027,7981=>1051,7982=>934,7983=>947,7984=>338,7985=>338,7986=>338,7987=>338,7988=>338,7989=>338,7990=>338,7991=>338,7992=>380,7993=>374,7994=>635,7995=>635,7996=>570,7997=>600,7998=>489,7999=>493,8000=>612,8001=>612,8002=>612,8003=>612,8004=>612,8005=>612,8008=>804,8009=>848,8010=>1095,8011=>1100,8012=>938,8013=>970,8016=>579,8017=>579,8018=>579,8019=>579,8020=>579,8021=>579,8022=>579,8023=>579,8025=>784,8027=>998,8029=>1012,8031=>897,8032=>837,8033=>837,8034=>837,8035=>837,8036=>837,8037=>837,8038=>837,8039=>837,8040=>802,8041=>843,8042=>1089,8043=>1095,8044=>946,8045=>972,8046=>921,8047=>952,8048=>659,8049=>659,8050=>541,8051=>548,8052=>634,8053=>654,8054=>338,8055=>338,8056=>612,8057=>612,8058=>579,8059=>579,8060=>837,8061=>837,8064=>659,8065=>659,8066=>659,8067=>659,8068=>659,8069=>659,8070=>659,8071=>659,8072=>684,8073=>684,8074=>877,8075=>877,8076=>769,8077=>801,8078=>708,8079=>743,8080=>634,8081=>634,8082=>634,8083=>634,8084=>634,8085=>634,8086=>634,8087=>634,8088=>837,8089=>835,8090=>1086,8091=>1089,8092=>1027,8093=>1051,8094=>934,8095=>947,8096=>837,8097=>837,8098=>837,8099=>837,8100=>837,8101=>837,8102=>837,8103=>837,8104=>802,8105=>843,8106=>1089,8107=>1095,8108=>946,8109=>972,8110=>921,8111=>952,8112=>659,8113=>659,8114=>659,8115=>659,8116=>659,8118=>659,8119=>659,8120=>684,8121=>684,8122=>716,8123=>692,8124=>684,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>634,8131=>634,8132=>654,8134=>634,8135=>634,8136=>805,8137=>746,8138=>931,8139=>871,8140=>752,8141=>500,8142=>500,8143=>500,8144=>338,8145=>338,8146=>338,8147=>338,8150=>338,8151=>338,8152=>295,8153=>295,8154=>475,8155=>408,8157=>500,8158=>500,8159=>500,8160=>579,8161=>579,8162=>579,8163=>579,8164=>635,8165=>635,8166=>579,8167=>579,8168=>611,8169=>611,8170=>845,8171=>825,8172=>685,8173=>500,8174=>500,8175=>500,8178=>837,8179=>837,8180=>837,8182=>837,8183=>837,8184=>941,8185=>813,8186=>922,8187=>826,8188=>764,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>636,8200=>318,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>361,8209=>361,8210=>636,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>318,8217=>318,8218=>318,8219=>318,8220=>518,8221=>518,8222=>518,8223=>518,8224=>500,8225=>500,8226=>590,8227=>590,8228=>334,8229=>667,8230=>1000,8231=>318,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1342,8241=>1735,8242=>227,8243=>374,8244=>520,8245=>227,8246=>374,8247=>520,8248=>339,8249=>400,8250=>400,8251=>838,8252=>485,8253=>531,8254=>500,8255=>804,8256=>804,8257=>250,8258=>1000,8259=>500,8260=>167,8261=>390,8262=>390,8263=>922,8264=>733,8265=>733,8266=>497,8267=>636,8268=>500,8269=>500,8270=>500,8271=>337,8272=>804,8273=>500,8274=>450,8275=>1000,8276=>804,8277=>838,8278=>586,8279=>663,8280=>838,8281=>838,8282=>318,8283=>797,8284=>838,8285=>318,8286=>318,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>401,8305=>179,8308=>401,8309=>401,8310=>401,8311=>401,8312=>401,8313=>401,8314=>528,8315=>528,8316=>528,8317=>246,8318=>246,8319=>398,8320=>401,8321=>401,8322=>401,8323=>401,8324=>401,8325=>401,8326=>401,8327=>401,8328=>401,8329=>401,8330=>528,8331=>528,8332=>528,8333=>246,8334=>246,8336=>392,8337=>417,8338=>414,8339=>444,8340=>417,8341=>404,8342=>426,8343=>166,8344=>623,8345=>398,8346=>428,8347=>373,8348=>295,8352=>877,8353=>636,8354=>636,8355=>636,8356=>636,8357=>974,8358=>748,8359=>1272,8360=>1074,8361=>989,8362=>784,8363=>636,8364=>636,8365=>636,8366=>636,8367=>1272,8368=>636,8369=>636,8370=>636,8371=>636,8372=>774,8373=>636,8376=>636,8377=>636,8378=>679,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1019,8449=>1019,8450=>698,8451=>1123,8452=>642,8453=>1019,8454=>1067,8455=>614,8456=>698,8457=>952,8459=>988,8460=>754,8461=>850,8462=>634,8463=>634,8464=>470,8465=>697,8466=>720,8467=>413,8468=>818,8469=>801,8470=>1040,8471=>1000,8472=>697,8473=>701,8474=>787,8475=>798,8476=>814,8477=>792,8478=>896,8479=>684,8480=>1020,8481=>1074,8482=>1000,8483=>684,8484=>745,8485=>578,8486=>764,8487=>764,8488=>616,8489=>338,8490=>656,8491=>684,8492=>786,8493=>703,8494=>854,8495=>592,8496=>605,8497=>786,8498=>575,8499=>1069,8500=>462,8501=>745,8502=>674,8503=>466,8504=>645,8505=>380,8506=>926,8507=>1194,8508=>702,8509=>728,8510=>654,8511=>849,8512=>811,8513=>775,8514=>557,8515=>557,8516=>611,8517=>819,8518=>708,8519=>615,8520=>351,8521=>351,8523=>780,8526=>526,8528=>969,8529=>969,8530=>1370,8531=>969,8532=>969,8533=>969,8534=>969,8535=>969,8536=>969,8537=>969,8538=>969,8539=>969,8540=>969,8541=>969,8542=>969,8543=>568,8544=>295,8545=>492,8546=>689,8547=>923,8548=>684,8549=>922,8550=>1120,8551=>1317,8552=>917,8553=>685,8554=>933,8555=>1131,8556=>557,8557=>698,8558=>770,8559=>863,8560=>278,8561=>458,8562=>637,8563=>812,8564=>592,8565=>811,8566=>991,8567=>1170,8568=>819,8569=>592,8570=>822,8571=>1002,8572=>278,8573=>550,8574=>635,8575=>974,8576=>1245,8577=>770,8578=>1245,8579=>703,8580=>549,8581=>698,8585=>969,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>684,8705=>636,8706=>517,8707=>632,8708=>632,8709=>871,8710=>669,8711=>669,8712=>871,8713=>871,8714=>718,8715=>871,8716=>871,8717=>718,8718=>636,8719=>757,8720=>757,8721=>674,8722=>838,8723=>838,8724=>838,8725=>337,8726=>637,8727=>838,8728=>626,8729=>626,8730=>637,8731=>637,8732=>637,8733=>714,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>732,8744=>732,8745=>732,8746=>732,8747=>521,8748=>789,8749=>1057,8750=>521,8751=>789,8752=>1057,8753=>521,8754=>521,8755=>521,8756=>636,8757=>636,8758=>260,8759=>636,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>839,8787=>839,8788=>1000,8789=>1000,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>838,8809=>838,8810=>1047,8811=>1047,8812=>464,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>732,8845=>732,8846=>732,8847=>838,8848=>838,8849=>838,8850=>838,8851=>780,8852=>780,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>871,8867=>871,8868=>871,8869=>871,8870=>521,8871=>521,8872=>871,8873=>871,8874=>871,8875=>871,8876=>871,8877=>871,8878=>871,8879=>871,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>521,8891=>732,8892=>732,8893=>732,8894=>838,8895=>838,8896=>820,8897=>820,8898=>820,8899=>820,8900=>494,8901=>318,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>732,8911=>732,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1000,8947=>871,8948=>718,8949=>871,8950=>871,8951=>718,8952=>871,8953=>871,8954=>1000,8955=>871,8956=>718,8957=>871,8958=>718,8959=>871,8960=>602,8961=>602,8962=>635,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>390,8969=>390,8970=>390,8971=>390,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>513,8984=>1000,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>521,8993=>521,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>338,9076=>635,9077=>837,9082=>659,9085=>757,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>521,9166=>838,9167=>945,9187=>873,9189=>769,9192=>636,9250=>635,9251=>635,9312=>896,9313=>896,9314=>896,9315=>896,9316=>896,9317=>896,9318=>896,9319=>896,9320=>896,9321=>896,9472=>602,9473=>602,9474=>602,9475=>602,9476=>602,9477=>602,9478=>602,9479=>602,9480=>602,9481=>602,9482=>602,9483=>602,9484=>602,9485=>602,9486=>602,9487=>602,9488=>602,9489=>602,9490=>602,9491=>602,9492=>602,9493=>602,9494=>602,9495=>602,9496=>602,9497=>602,9498=>602,9499=>602,9500=>602,9501=>602,9502=>602,9503=>602,9504=>602,9505=>602,9506=>602,9507=>602,9508=>602,9509=>602,9510=>602,9511=>602,9512=>602,9513=>602,9514=>602,9515=>602,9516=>602,9517=>602,9518=>602,9519=>602,9520=>602,9521=>602,9522=>602,9523=>602,9524=>602,9525=>602,9526=>602,9527=>602,9528=>602,9529=>602,9530=>602,9531=>602,9532=>602,9533=>602,9534=>602,9535=>602,9536=>602,9537=>602,9538=>602,9539=>602,9540=>602,9541=>602,9542=>602,9543=>602,9544=>602,9545=>602,9546=>602,9547=>602,9548=>602,9549=>602,9550=>602,9551=>602,9552=>602,9553=>602,9554=>602,9555=>602,9556=>602,9557=>602,9558=>602,9559=>602,9560=>602,9561=>602,9562=>602,9563=>602,9564=>602,9565=>602,9566=>602,9567=>602,9568=>602,9569=>602,9570=>602,9571=>602,9572=>602,9573=>602,9574=>602,9575=>602,9576=>602,9577=>602,9578=>602,9579=>602,9580=>602,9581=>602,9582=>602,9583=>602,9584=>602,9585=>602,9586=>602,9587=>602,9588=>602,9589=>602,9590=>602,9591=>602,9592=>602,9593=>602,9594=>602,9595=>602,9596=>602,9597=>602,9598=>602,9599=>602,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>791,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>873,9697=>873,9698=>769,9699=>769,9700=>769,9701=>769,9702=>590,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>322,10076=>322,10077=>538,10078=>538,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>896,10103=>896,10104=>896,10105=>896,10106=>896,10107=>896,10108=>896,10109=>896,10110=>896,10111=>896,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>390,10182=>390,10208=>494,10214=>495,10215=>495,10216=>390,10217=>390,10218=>556,10219=>556,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>732,10241=>732,10242=>732,10243=>732,10244=>732,10245=>732,10246=>732,10247=>732,10248=>732,10249=>732,10250=>732,10251=>732,10252=>732,10253=>732,10254=>732,10255=>732,10256=>732,10257=>732,10258=>732,10259=>732,10260=>732,10261=>732,10262=>732,10263=>732,10264=>732,10265=>732,10266=>732,10267=>732,10268=>732,10269=>732,10270=>732,10271=>732,10272=>732,10273=>732,10274=>732,10275=>732,10276=>732,10277=>732,10278=>732,10279=>732,10280=>732,10281=>732,10282=>732,10283=>732,10284=>732,10285=>732,10286=>732,10287=>732,10288=>732,10289=>732,10290=>732,10291=>732,10292=>732,10293=>732,10294=>732,10295=>732,10296=>732,10297=>732,10298=>732,10299=>732,10300=>732,10301=>732,10302=>732,10303=>732,10304=>732,10305=>732,10306=>732,10307=>732,10308=>732,10309=>732,10310=>732,10311=>732,10312=>732,10313=>732,10314=>732,10315=>732,10316=>732,10317=>732,10318=>732,10319=>732,10320=>732,10321=>732,10322=>732,10323=>732,10324=>732,10325=>732,10326=>732,10327=>732,10328=>732,10329=>732,10330=>732,10331=>732,10332=>732,10333=>732,10334=>732,10335=>732,10336=>732,10337=>732,10338=>732,10339=>732,10340=>732,10341=>732,10342=>732,10343=>732,10344=>732,10345=>732,10346=>732,10347=>732,10348=>732,10349=>732,10350=>732,10351=>732,10352=>732,10353=>732,10354=>732,10355=>732,10356=>732,10357=>732,10358=>732,10359=>732,10360=>732,10361=>732,10362=>732,10363=>732,10364=>732,10365=>732,10366=>732,10367=>732,10368=>732,10369=>732,10370=>732,10371=>732,10372=>732,10373=>732,10374=>732,10375=>732,10376=>732,10377=>732,10378=>732,10379=>732,10380=>732,10381=>732,10382=>732,10383=>732,10384=>732,10385=>732,10386=>732,10387=>732,10388=>732,10389=>732,10390=>732,10391=>732,10392=>732,10393=>732,10394=>732,10395=>732,10396=>732,10397=>732,10398=>732,10399=>732,10400=>732,10401=>732,10402=>732,10403=>732,10404=>732,10405=>732,10406=>732,10407=>732,10408=>732,10409=>732,10410=>732,10411=>732,10412=>732,10413=>732,10414=>732,10415=>732,10416=>732,10417=>732,10418=>732,10419=>732,10420=>732,10421=>732,10422=>732,10423=>732,10424=>732,10425=>732,10426=>732,10427=>732,10428=>732,10429=>732,10430=>732,10431=>732,10432=>732,10433=>732,10434=>732,10435=>732,10436=>732,10437=>732,10438=>732,10439=>732,10440=>732,10441=>732,10442=>732,10443=>732,10444=>732,10445=>732,10446=>732,10447=>732,10448=>732,10449=>732,10450=>732,10451=>732,10452=>732,10453=>732,10454=>732,10455=>732,10456=>732,10457=>732,10458=>732,10459=>732,10460=>732,10461=>732,10462=>732,10463=>732,10464=>732,10465=>732,10466=>732,10467=>732,10468=>732,10469=>732,10470=>732,10471=>732,10472=>732,10473=>732,10474=>732,10475=>732,10476=>732,10477=>732,10478=>732,10479=>732,10480=>732,10481=>732,10482=>732,10483=>732,10484=>732,10485=>732,10486=>732,10487=>732,10488=>732,10489=>732,10490=>732,10491=>732,10492=>732,10493=>732,10494=>732,10495=>732,10502=>838,10503=>838,10506=>838,10507=>838,10560=>683,10561=>683,10627=>734,10628=>734,10702=>838,10703=>1000,10704=>1000,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1325,10765=>521,10766=>521,10767=>521,10768=>521,10769=>521,10770=>521,10771=>521,10772=>521,10773=>521,10774=>521,10775=>521,10776=>521,10777=>521,10778=>521,10779=>521,10780=>521,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>836,11023=>836,11024=>836,11025=>836,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>557,11361=>278,11362=>557,11363=>603,11364=>695,11365=>613,11366=>392,11367=>752,11368=>634,11369=>656,11370=>579,11371=>685,11372=>525,11373=>781,11374=>863,11375=>684,11376=>781,11377=>734,11378=>1128,11379=>961,11380=>592,11381=>654,11382=>568,11383=>660,11385=>414,11386=>612,11387=>491,11388=>175,11389=>431,11390=>635,11391=>685,11520=>591,11521=>595,11522=>564,11523=>602,11524=>587,11525=>911,11526=>626,11527=>952,11528=>595,11529=>607,11530=>954,11531=>620,11532=>595,11533=>926,11534=>595,11535=>806,11536=>931,11537=>584,11538=>592,11539=>923,11540=>953,11541=>828,11542=>596,11543=>595,11544=>590,11545=>592,11546=>592,11547=>621,11548=>920,11549=>589,11550=>586,11551=>581,11552=>914,11553=>596,11554=>595,11555=>592,11556=>642,11557=>901,11568=>646,11569=>888,11570=>888,11571=>682,11572=>684,11573=>635,11574=>562,11575=>684,11576=>684,11577=>632,11578=>632,11579=>683,11580=>875,11581=>685,11582=>491,11583=>685,11584=>888,11585=>888,11586=>300,11587=>627,11588=>752,11589=>656,11590=>527,11591=>685,11592=>645,11593=>632,11594=>502,11595=>953,11596=>778,11597=>748,11598=>621,11599=>295,11600=>778,11601=>295,11602=>752,11603=>633,11604=>888,11605=>888,11606=>752,11607=>320,11608=>749,11609=>888,11610=>888,11611=>698,11612=>768,11613=>685,11614=>698,11615=>622,11616=>684,11617=>752,11618=>632,11619=>788,11620=>567,11621=>788,11631=>515,11800=>531,11806=>838,11810=>390,11811=>390,11812=>390,11813=>390,11822=>531,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>686,42193=>603,42194=>603,42195=>770,42196=>611,42197=>611,42198=>775,42199=>656,42200=>656,42201=>512,42202=>698,42203=>703,42204=>685,42205=>575,42206=>575,42207=>863,42208=>748,42209=>557,42210=>635,42211=>695,42212=>695,42213=>684,42214=>684,42215=>752,42216=>775,42217=>512,42218=>989,42219=>685,42220=>611,42221=>686,42222=>684,42223=>684,42224=>632,42225=>632,42226=>295,42227=>787,42228=>732,42229=>732,42230=>557,42231=>767,42232=>300,42233=>300,42234=>596,42235=>596,42236=>300,42237=>300,42238=>588,42239=>588,42564=>635,42565=>521,42566=>354,42567=>338,42572=>1180,42573=>1028,42576=>1029,42577=>906,42580=>1080,42581=>842,42582=>977,42583=>843,42594=>1062,42595=>912,42596=>1066,42597=>901,42598=>1178,42599=>1008,42600=>787,42601=>612,42602=>855,42603=>712,42604=>1358,42605=>1019,42606=>879,42634=>782,42635=>685,42636=>611,42637=>583,42644=>686,42645=>634,42760=>493,42761=>493,42762=>493,42763=>493,42764=>493,42765=>493,42766=>493,42767=>493,42768=>493,42769=>493,42770=>493,42771=>493,42772=>493,42773=>493,42774=>493,42779=>369,42780=>369,42781=>252,42782=>252,42783=>252,42786=>385,42787=>356,42788=>472,42789=>472,42790=>752,42791=>634,42792=>878,42793=>709,42794=>614,42795=>541,42800=>491,42801=>521,42802=>1250,42803=>985,42804=>1203,42805=>990,42806=>1142,42807=>981,42808=>971,42809=>818,42810=>971,42811=>818,42812=>959,42813=>818,42814=>703,42815=>549,42816=>656,42817=>583,42822=>680,42823=>392,42824=>582,42825=>427,42826=>807,42827=>704,42830=>1358,42831=>1019,42832=>603,42833=>635,42834=>734,42835=>774,42838=>787,42839=>635,42852=>605,42853=>635,42854=>605,42855=>635,42880=>557,42881=>278,42882=>735,42883=>634,42889=>337,42890=>376,42891=>401,42892=>275,42893=>686,42894=>487,42896=>772,42897=>667,42912=>775,42913=>635,42914=>656,42915=>579,42916=>748,42917=>634,42918=>695,42919=>411,42920=>635,42921=>521,42922=>801,43002=>915,43003=>575,43004=>603,43005=>863,43006=>295,43007=>1199,61184=>213,61185=>238,61186=>257,61187=>264,61188=>267,61189=>238,61190=>213,61191=>238,61192=>257,61193=>264,61194=>257,61195=>238,61196=>213,61197=>238,61198=>257,61199=>264,61200=>257,61201=>238,61202=>213,61203=>238,61204=>267,61205=>264,61206=>257,61207=>238,61208=>213,61209=>275,61440=>977,61441=>977,61442=>977,61443=>977,62464=>580,62465=>580,62466=>624,62467=>889,62468=>585,62469=>580,62470=>653,62471=>882,62472=>555,62473=>580,62474=>1168,62475=>589,62476=>590,62477=>869,62478=>580,62479=>589,62480=>914,62481=>590,62482=>731,62483=>583,62484=>872,62485=>589,62486=>895,62487=>589,62488=>589,62489=>590,62490=>649,62491=>589,62492=>589,62493=>599,62494=>590,62495=>516,62496=>580,62497=>584,62498=>580,62499=>580,62500=>581,62501=>638,62502=>955,62504=>931,62505=>808,62506=>508,62507=>508,62508=>508,62509=>508,62510=>508,62511=>508,62512=>508,62513=>508,62514=>508,62515=>508,62516=>518,62517=>518,62518=>518,62519=>787,62520=>787,62521=>787,62522=>787,62523=>787,62524=>546,62525=>546,62526=>546,62527=>546,62528=>546,62529=>546,63173=>612,64256=>689,64257=>630,64258=>630,64259=>967,64260=>967,64261=>686,64262=>861,64275=>1202,64276=>1202,64277=>1196,64278=>1186,64279=>1529,64285=>224,64286=>0,64287=>331,64288=>636,64289=>856,64290=>774,64291=>906,64292=>771,64293=>843,64294=>855,64295=>807,64296=>875,64297=>838,64298=>708,64299=>708,64300=>708,64301=>708,64302=>668,64303=>668,64304=>668,64305=>578,64306=>412,64307=>546,64308=>653,64309=>355,64310=>406,64312=>648,64313=>330,64314=>537,64315=>529,64316=>568,64318=>679,64320=>399,64321=>649,64323=>640,64324=>625,64326=>593,64327=>709,64328=>564,64329=>708,64330=>657,64331=>272,64332=>578,64333=>529,64334=>625,64335=>629,64338=>941,64339=>982,64340=>278,64341=>302,64342=>941,64343=>982,64344=>278,64345=>302,64346=>941,64347=>982,64348=>278,64349=>302,64350=>941,64351=>982,64352=>278,64353=>302,64354=>941,64355=>982,64356=>278,64357=>302,64358=>941,64359=>982,64360=>278,64361=>302,64362=>1037,64363=>1035,64364=>478,64365=>506,64366=>1037,64367=>1035,64368=>478,64369=>506,64370=>646,64371=>646,64372=>618,64373=>646,64374=>646,64375=>646,64376=>618,64377=>646,64378=>646,64379=>646,64380=>618,64381=>646,64382=>646,64383=>646,64384=>618,64385=>646,64386=>445,64387=>525,64388=>445,64389=>525,64390=>445,64391=>525,64392=>445,64393=>525,64394=>483,64395=>552,64396=>483,64397=>552,64398=>895,64399=>895,64400=>476,64401=>552,64402=>895,64403=>895,64404=>476,64405=>552,64406=>895,64407=>895,64408=>476,64409=>552,64410=>895,64411=>895,64412=>476,64413=>552,64414=>734,64415=>761,64416=>734,64417=>761,64418=>278,64419=>302,64426=>698,64427=>632,64428=>527,64429=>461,64467=>824,64468=>843,64469=>476,64470=>552,64473=>483,64474=>517,64488=>278,64489=>302,64508=>783,64509=>833,64510=>278,64511=>302,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>293,65137=>293,65138=>293,65139=>262,65140=>293,65142=>293,65143=>293,65144=>293,65145=>293,65146=>293,65147=>293,65148=>293,65149=>293,65150=>293,65151=>293,65152=>470,65153=>278,65154=>305,65155=>278,65156=>305,65157=>483,65158=>517,65159=>278,65160=>305,65161=>783,65162=>833,65163=>278,65164=>302,65165=>278,65166=>305,65167=>941,65168=>982,65169=>278,65170=>302,65171=>524,65172=>536,65173=>941,65174=>982,65175=>278,65176=>302,65177=>941,65178=>982,65179=>278,65180=>302,65181=>646,65182=>646,65183=>618,65184=>646,65185=>646,65186=>646,65187=>618,65188=>646,65189=>646,65190=>646,65191=>618,65192=>646,65193=>445,65194=>525,65195=>445,65196=>525,65197=>483,65198=>552,65199=>483,65200=>552,65201=>1221,65202=>1275,65203=>838,65204=>892,65205=>1221,65206=>1275,65207=>838,65208=>892,65209=>1209,65210=>1225,65211=>849,65212=>867,65213=>1209,65214=>1225,65215=>849,65216=>867,65217=>925,65218=>949,65219=>796,65220=>820,65221=>925,65222=>949,65223=>796,65224=>820,65225=>597,65226=>532,65227=>597,65228=>482,65229=>597,65230=>532,65231=>523,65232=>482,65233=>1037,65234=>1035,65235=>478,65236=>506,65237=>776,65238=>834,65239=>478,65240=>506,65241=>824,65242=>843,65243=>476,65244=>552,65245=>727,65246=>757,65247=>305,65248=>331,65249=>619,65250=>666,65251=>536,65252=>578,65253=>734,65254=>761,65255=>278,65256=>302,65257=>524,65258=>536,65259=>527,65260=>461,65261=>483,65262=>517,65263=>783,65264=>833,65265=>783,65266=>833,65267=>278,65268=>302,65269=>570,65270=>597,65271=>570,65272=>597,65273=>570,65274=>597,65275=>570,65276=>597,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1025,65535=>600); // --- EOF --- db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/status.txt000064400005404505151502156020021770 0ustar00This is the status file for DejaVu fonts ($Id: status.txt 2475 2011-02-27 14:51:17Z ben_laenen $) original = present in original Bitstream Vera 1.10 = added in DejaVu fonts U+0020 space original U+0021 exclam original U+0022 quotedbl original U+0023 numbersign original U+0024 dollar original U+0025 percent original U+0026 ampersand original U+0027 quotesingle original U+0028 parenleft original U+0029 parenright original U+002a asterisk original U+002b plus original U+002c comma original U+002d hyphen original U+002e period original U+002f slash original U+0030 zero original U+0031 one original U+0032 two original U+0033 three original U+0034 four original U+0035 five original U+0036 six original U+0037 seven original U+0038 eight original U+0039 nine original U+003a colon original U+003b semicolon original U+003c less original U+003d equal original U+003e greater original U+003f question original U+0040 at original U+0041 A original U+0042 B original U+0043 C original U+0044 D original U+0045 E original U+0046 F original U+0047 G original U+0048 H original U+0049 I original U+004a J original U+004b K original U+004c L original U+004d M original U+004e N original U+004f O original U+0050 P original U+0051 Q original U+0052 R original U+0053 S original U+0054 T original U+0055 U original U+0056 V original U+0057 W original U+0058 X original U+0059 Y original U+005a Z original U+005b bracketleft original U+005c backslash original U+005d bracketright original U+005e asciicircum original U+005f underscore original U+0060 grave original U+0061 a original U+0062 b original U+0063 c original U+0064 d original U+0065 e original U+0066 f original U+0067 g original U+0068 h original U+0069 i original U+006a j original U+006b k original U+006c l original U+006d m original U+006e n original U+006f o original U+0070 p original U+0071 q original U+0072 r original U+0073 s original U+0074 t original U+0075 u original U+0076 v original U+0077 w original U+0078 x original U+0079 y original U+007a z original U+007b braceleft original U+007c bar original U+007d braceright original U+007e asciitilde original U+00a0 nonbreakingspace original U+00a1 exclamdown original U+00a2 cent original U+00a3 sterling original U+00a4 currency original U+00a5 yen original U+00a6 brokenbar original U+00a7 section original U+00a8 dieresis original U+00a9 copyright original U+00aa ordfeminine original U+00ab guillemotleft original U+00ac logicalnot original U+00ad sfthyphen original U+00ae registered original U+00af macron original U+00b0 degree original U+00b1 plusminus original U+00b2 twosuperior original U+00b3 threesuperior original U+00b4 acute original U+00b5 mu original U+00b6 paragraph original U+00b7 periodcentered original U+00b8 cedilla original U+00b9 onesuperior original U+00ba ordmasculine original U+00bb guillemotright original U+00bc onequarter original U+00bd onehalf original U+00be threequarters original U+00bf questiondown original U+00c0 Agrave original U+00c1 Aacute original U+00c2 Acircumflex original U+00c3 Atilde original U+00c4 Adieresis original U+00c5 Aring original U+00c6 AE original U+00c7 Ccedilla original U+00c8 Egrave original U+00c9 Eacute original U+00ca Ecircumflex original U+00cb Edieresis original U+00cc Igrave original U+00cd Iacute original U+00ce Icircumflex original U+00cf Idieresis original U+00d0 Eth original U+00d1 Ntilde original U+00d2 Ograve original U+00d3 Oacute original U+00d4 Ocircumflex original U+00d5 Otilde original U+00d6 Odieresis original U+00d7 multiply original U+00d8 Oslash original U+00d9 Ugrave original U+00da Uacute original U+00db Ucircumflex original U+00dc Udieresis original U+00dd Yacute original U+00de Thorn original U+00df germandbls original U+00e0 agrave original U+00e1 aacute original U+00e2 acircumflex original U+00e3 atilde original U+00e4 adieresis original U+00e5 aring original U+00e6 ae original U+00e7 ccedilla original U+00e8 egrave original U+00e9 eacute original U+00ea ecircumflex original U+00eb edieresis original U+00ec igrave original U+00ed iacute original U+00ee icircumflex original U+00ef idieresis original U+00f0 eth original U+00f1 ntilde original U+00f2 ograve original U+00f3 oacute original U+00f4 ocircumflex original U+00f5 otilde original U+00f6 odieresis original U+00f7 divide original U+00f8 oslash original U+00f9 ugrave original U+00fa uacute original U+00fb ucircumflex original U+00fc udieresis original U+00fd yacute original U+00fe thorn original U+00ff ydieresis original U+0100 Amacron 1.5 U+0101 amacron 1.5 U+0102 Abreve 1.5 U+0103 abreve 1.5 U+0104 Aogonek 1.4 U+0105 aogonek 1.4 U+0106 Cacute original U+0107 cacute original U+0108 Ccircumflex 1.5 U+0109 ccircumflex 1.5 U+010a Cdotaccent 1.5 U+010b cdotaccent 1.5 U+010c Ccaron original U+010d ccaron original U+010e Dcaron 1.0 U+010f dcaron 1.0 U+0110 Dcroat 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0111 dcroat original U+0112 Emacron 1.5 U+0113 emacron 1.5 U+0114 Ebreve 1.5 U+0115 ebreve 1.5 U+0116 Edotaccent 1.5 U+0117 edotaccent 1.5 U+0118 Eogonek 1.4 U+0119 eogonek 1.4 U+011a Ecaron 1.0 U+011b ecaron 1.0 U+011c Gcircumflex 1.5 U+011d gcircumflex 1.5 U+011e Gbreve original U+011f gbreve original U+0120 Gdotaccent 1.5 U+0121 gdotaccent 1.5 U+0122 Gcommaaccent 1.11 U+0123 gcommaaccent 1.11 U+0124 Hcircumflex 1.5 U+0125 hcircumflex 1.5 U+0126 Hbar 1.12 U+0127 hbar 1.12 U+0128 Itilde 1.5 U+0129 itilde 1.5 U+012a Imacron 1.5 U+012b imacron 1.5 U+012c Ibreve 1.5 U+012d ibreve 1.5 U+012e Iogonek 1.11 U+012f iogonek 1.11 U+0130 Idotaccent original U+0131 dotlessi original U+0132 IJ 1.11 U+0133 ij 1.11 U+0134 Jcircumflex 1.5 U+0135 jcircumflex 1.5 U+0136 Kcommaaccent 1.11 U+0137 kcommaaccent 1.11 U+0138 kgreenlandic 1.12 U+0139 Lacute 1.1 U+013a lacute 1.1 U+013b Lcommaaccent 1.11 U+013c lcommaaccent 1.11 U+013d Lcaron 1.1 U+013e lcaron 1.1 U+013f Ldot 1.2 U+0140 ldot 1.2 U+0141 Lslash original U+0142 lslash original U+0143 Nacute 1.4 U+0144 nacute 1.4 U+0145 Ncommaaccent 1.11 U+0146 ncommaaccent 1.11 U+0147 Ncaron 1.0 U+0148 ncaron 1.0 U+0149 napostrophe 1.12 U+014a Eng 1.12 U+014b eng 1.12 U+014c Omacron 1.5 U+014d omacron 1.5 U+014e Obreve 1.5 U+014f obreve 1.5 U+0150 Ohungarumlaut 1.5 U+0151 ohungarumlaut 1.5 U+0152 OE original U+0153 oe original U+0154 Racute 1.1 U+0155 racute 1.1 U+0156 Rcommaaccent 1.11 U+0157 rcommaaccent 1.11 U+0158 Rcaron 1.0 U+0159 rcaron 1.0 U+015a Sacute 1.4 U+015b sacute 1.4 U+015c Scircumflex 1.5 U+015d scircumflex 1.5 U+015e Scedilla original U+015f scedilla original U+0160 Scaron original U+0161 scaron original U+0162 Tcommaaccent 1.5 U+0163 tcommaaccent 1.5 U+0164 Tcaron 1.0 U+0165 tcaron 1.0 U+0166 Tbar 1.12 U+0167 tbar 1.12 U+0168 Utilde 1.5 U+0169 utilde 1.5 U+016a Umacron 1.5 U+016b umacron 1.5 U+016c Ubreve 1.5 U+016d ubreve 1.5 U+016e Uring 1.0 U+016f uring 1.0 U+0170 Uhungarumlaut 1.5 U+0171 uhungarumlaut 1.5 U+0172 Uogonek 1.11 U+0173 uogonek 1.11 U+0174 Wcircumflex 1.2 U+0175 wcircumflex 1.2 U+0176 Ycircumflex 1.2 U+0177 ycircumflex 1.2 U+0178 Ydieresis original U+0179 Zacute 1.4 U+017a zacute 1.4 U+017b Zdotaccent 1.4 U+017c zdotaccent 1.4 U+017d Zcaron original U+017e zcaron original U+017f longs 1.12 U+0180 uni0180 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.12 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0181 uni0181 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0182 uni0182 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0183 uni0183 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0184 uni0184 2.3 U+0185 uni0185 2.3 U+0186 uni0186 1.15 U+0187 uni0187 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0188 uni0188 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0189 uni0189 2.1 U+018a uni018A 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+018b uni018B 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+018c uni018C 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+018d uni018D 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+018e uni018E 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+018f uni018F 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0190 uni0190 1.15 U+0191 uni0191 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0192 florin original U+0193 uni0193 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0194 uni0194 1.14 U+0195 uni0195 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.6 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0196 uni0196 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0197 uni0197 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0198 uni0198 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0199 uni0199 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+019a uni019A 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+019b uni019B 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+019c uni019C 2.3 U+019d uni019D 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+019e uni019E 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+019f uni019F 2.3 U+01a0 Ohorn 2.3 U+01a1 ohorn 2.3 U+01a2 uni01A2 2.3 U+01a3 uni01A3 2.3 U+01a4 uni01A4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01a5 uni01A5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01a6 uni01A6 2.3 U+01a7 uni01A7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01a8 uni01A8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01a9 uni01A9 2.2 U+01aa uni01AA 2.3 U+01ab uni01AB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01ac uni01AC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01ad uni01AD 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01ae uni01AE 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01af Uhorn 2.3 U+01b0 uhorn 2.3 U+01b1 uni01B1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01b2 uni01B2 2.3 U+01b3 uni01B3 2.3 U+01b4 uni01B4 2.3 U+01b5 uni01B5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01b6 uni01B6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01b7 uni01B7 2.3 U+01b8 uni01B8 2.3 U+01b9 uni01B9 2.3 U+01ba uni01BA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+01bb uni01BB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01bc uni01BC 2.3 U+01bd uni01BD 2.3 U+01be uni01BE 2.3 U+01bf uni01BF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+01c0 uni01C0 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01c1 uni01C1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01c2 uni01C2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+01c3 uni01C3 2.2 U+01c4 uni01C4 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01c5 uni01C5 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01c6 uni01C6 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01c7 uni01C7 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01c8 uni01C8 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01c9 uni01C9 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01ca uni01CA 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01cb uni01CB 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01cc uni01CC 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01cd uni01CD 1.15 U+01ce uni01CE 1.15 U+01cf uni01CF 1.15 U+01d0 uni01D0 1.15 U+01d1 uni01D1 1.15 U+01d2 uni01D2 1.15 U+01d3 uni01D3 1.15 U+01d4 uni01D4 1.15 U+01d5 uni01D5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01d6 uni01D6 1.13 U+01d7 uni01D7 2.3 U+01d8 uni01D8 2.3 U+01d9 uni01D9 2.3 U+01da uni01DA 2.3 U+01db uni01DB 2.3 U+01dc uni01DC 2.3 U+01dd uni01DD 2.2 U+01de uni01DE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique) 2.23 (Serif Italic Condensed) U+01df uni01DF 1.13 U+01e0 uni01E0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01e1 uni01E1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01e2 uni01E2 1.5 U+01e3 uni01E3 1.5 U+01e4 uni01E4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+01e5 uni01E5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+01e6 Gcaron 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01e7 gcaron 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01e8 uni01E8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01e9 uni01E9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01ea uni01EA 1.9 U+01eb uni01EB 1.9 U+01ec uni01EC 1.9 U+01ed uni01ED 1.9 U+01ee uni01EE 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01ef uni01EF 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01f0 uni01F0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono) 2.22 (Sans Mono Bold) 2.23 (Serif Italic Condensed) U+01f1 uni01F1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01f2 uni01F2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01f3 uni01F3 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01f4 uni01F4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01f5 uni01F5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01f6 uni01F6 2.3 U+01f7 uni01F7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+01f8 uni01F8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01f9 uni01F9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01fa Aringacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01fb aringacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+01fc AEacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01fd aeacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01fe Oslashacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+01ff oslashacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0200 uni0200 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0201 uni0201 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0202 uni0202 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0203 uni0203 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0204 uni0204 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0205 uni0205 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0206 uni0206 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0207 uni0207 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0208 uni0208 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0209 uni0209 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+020a uni020A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+020b uni020B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+020c uni020C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+020d uni020D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+020e uni020E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+020f uni020F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0210 uni0210 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0211 uni0211 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0212 uni0212 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0213 uni0213 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0214 uni0214 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0215 uni0215 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0216 uni0216 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0217 uni0217 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0218 Scommaaccent 1.5 U+0219 scommaaccent 1.5 U+021a uni021A 1.5 U+021b uni021B 1.5 U+021c uni021C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+021d uni021D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+021e uni021E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+021f uni021F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0220 uni0220 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.16 (Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.17 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.18 (Sans Mono, Sans Mono Bold) 2.23 (Serif Italic Condensed) U+0221 uni0221 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0222 uni0222 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0223 uni0223 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0224 uni0224 2.3 U+0225 uni0225 2.3 U+0226 uni0226 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0227 uni0227 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0228 uni0228 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0229 uni0229 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+022a uni022A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+022b uni022B 1.13 U+022c uni022C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+022d uni022D 1.13 U+022e uni022E 1.10 U+022f uni022F 1.10 U+0230 uni0230 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0231 uni0231 1.13 U+0232 uni0232 1.5 U+0233 uni0233 1.5 U+0234 uni0234 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0235 uni0235 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0236 uni0236 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0237 dotlessj 1.5 U+0238 uni0238 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0239 uni0239 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+023a uni023A 2.3 U+023b uni023B 2.3 U+023c uni023C 2.3 U+023d uni023D 2.3 U+023e uni023E 2.3 U+023f uni023F 2.3 U+0240 uni0240 2.3 U+0241 uni0241 2.3 U+0242 uni0242 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+0243 uni0243 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0244 uni0244 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0245 uni0245 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0246 uni0246 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0247 uni0247 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0248 uni0248 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0249 uni0249 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+024a uni024A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+024b uni024B 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.26 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+024c uni024C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+024d uni024D 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+024e uni024E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+024f uni024F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0250 uni0250 1.14 U+0251 uni0251 1.14 U+0252 uni0252 1.14 U+0253 uni0253 1.14 U+0254 uni0254 1.14 U+0255 uni0255 1.14 U+0256 uni0256 1.14 U+0257 uni0257 1.14 U+0258 uni0258 1.14 U+0259 uni0259 1.14 U+025a uni025A 1.14 U+025b uni025B 1.14 U+025c uni025C 1.14 U+025d uni025D 1.14 U+025e uni025E 1.14 U+025f uni025F 1.14 U+0260 uni0260 1.14 U+0261 uni0261 1.14 U+0262 uni0262 1.14 U+0263 uni0263 1.14 U+0264 uni0264 1.14 U+0265 uni0265 1.14 U+0266 uni0266 1.14 U+0267 uni0267 1.14 U+0268 uni0268 1.14 U+0269 uni0269 1.14 U+026a uni026A 1.14 U+026b uni026B 1.14 U+026c uni026C 1.14 U+026d uni026D 1.14 U+026e uni026E 1.14 U+026f uni026F 1.14 U+0270 uni0270 1.14 U+0271 uni0271 1.14 U+0272 uni0272 1.14 U+0273 uni0273 1.14 U+0274 uni0274 1.14 U+0275 uni0275 1.14 U+0276 uni0276 1.14 U+0277 uni0277 1.14 U+0278 uni0278 1.14 U+0279 uni0279 1.14 U+027a uni027A 1.14 U+027b uni027B 1.14 U+027c uni027C 1.14 U+027d uni027D 1.14 U+027e uni027E 1.14 U+027f uni027F 1.14 U+0280 uni0280 1.14 U+0281 uni0281 1.14 U+0282 uni0282 1.14 U+0283 uni0283 1.14 U+0284 uni0284 1.14 U+0285 uni0285 1.14 U+0286 uni0286 1.14 U+0287 uni0287 1.14 U+0288 uni0288 1.14 U+0289 uni0289 1.14 U+028a uni028A 1.14 U+028b uni028B 1.14 U+028c uni028C 1.14 U+028d uni028D 1.14 U+028e uni028E 1.14 U+028f uni028F 1.14 U+0290 uni0290 1.14 U+0291 uni0291 1.14 U+0292 uni0292 1.14 U+0293 uni0293 1.14 U+0294 uni0294 1.14 U+0295 uni0295 1.14 U+0296 uni0296 1.14 U+0297 uni0297 1.14 U+0298 uni0298 1.14 U+0299 uni0299 1.14 U+029a uni029A 1.14 U+029b uni029B 1.14 U+029c uni029C 1.14 U+029d uni029D 1.14 U+029e uni029E 1.14 U+029f uni029F 1.14 U+02a0 uni02A0 1.14 U+02a1 uni02A1 1.14 U+02a2 uni02A2 1.14 U+02a3 uni02A3 1.14 U+02a4 uni02A4 1.14 U+02a5 uni02A5 1.14 U+02a6 uni02A6 1.14 U+02a7 uni02A7 1.14 U+02a8 uni02A8 1.14 U+02a9 uni02A9 1.14 U+02aa uni02AA 1.14 U+02ab uni02AB 1.14 U+02ac uni02AC 1.14 U+02ad uni02AD 1.14 U+02ae uni02AE 1.14 U+02af uni02AF 1.14 U+02b0 uni02B0 1.14 U+02b1 uni02B1 1.14 U+02b2 uni02B2 1.14 U+02b3 uni02B3 1.14 U+02b4 uni02B4 1.14 U+02b5 uni02B5 1.14 U+02b6 uni02B6 1.14 U+02b7 uni02B7 1.14 U+02b8 uni02B8 1.14 U+02b9 uni02B9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+02ba uni02BA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02bb uni02BB 1.5 U+02bc uni02BC 1.12 U+02bd uni02BD 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+02be uni02BE 2.2 U+02bf uni02BF 2.2 U+02c0 uni02C0 1.14 U+02c1 uni02C1 1.14 U+02c2 uni02C2 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02c3 uni02C3 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02c4 uni02C4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02c5 uni02C5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02c6 circumflex original U+02c7 caron original U+02c8 uni02C8 2.0 U+02c9 uni02C9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+02ca uni02CA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02cb uni02CB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02cc uni02CC 2.0 U+02cd uni02CD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02ce uni02CE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+02cf uni02CF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+02d0 uni02D0 1.14 U+02d1 uni02D1 1.14 U+02d2 uni02D2 2.0 U+02d3 uni02D3 2.2 U+02d4 uni02D4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+02d5 uni02D5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+02d6 uni02D6 2.0 U+02d7 uni02D7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02d8 breve original U+02d9 dotaccent original U+02da ring original U+02db ogonek original U+02dc tilde original U+02dd hungarumlaut original U+02de uni02DE 2.0 U+02df uni02DF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+02e0 uni02E0 1.14 U+02e1 uni02E1 1.14 U+02e2 uni02E2 1.14 U+02e3 uni02E3 1.14 U+02e4 uni02E4 1.14 U+02e5 uni02E5 2.0 U+02e6 uni02E6 2.0 U+02e7 uni02E7 2.0 U+02e8 uni02E8 2.0 U+02e9 uni02E9 2.0 U+02ec uni02EC 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02ed uni02ED 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+02ee uni02EE 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+02ef uni02EF 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02f0 uni02F0 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02f3 uni02F3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+02f7 uni02F7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0300 gravecomb 1.15 U+0301 acutecomb 1.15 U+0302 uni0302 1.15 U+0303 tildecomb 1.15 U+0304 uni0304 1.15 U+0305 uni0305 2.0 U+0306 uni0306 1.15 U+0307 uni0307 1.15 U+0308 uni0308 1.15 U+0309 hookabovecomb 2.1 U+030a uni030A 1.15 U+030b uni030B 1.15 U+030c uni030C 1.15 U+030d uni030D 2.0 U+030e uni030E 2.0 U+030f uni030F 2.0 U+0310 uni0310 2.0 U+0311 uni0311 2.0 U+0312 uni0312 1.11 U+0313 uni0313 2.1 U+0314 uni0314 2.1 U+0315 uni0315 2.0 U+0316 uni0316 2.0 U+0317 uni0317 2.0 U+0318 uni0318 2.0 U+0319 uni0319 2.0 U+031a uni031A 2.1 U+031b uni031B 2.1 U+031c uni031C 2.0 U+031d uni031D 2.0 U+031e uni031E 2.0 U+031f uni031F 2.0 U+0320 uni0320 2.0 U+0321 uni0321 1.15 U+0322 uni0322 1.15 U+0323 dotbelowcomb 2.1 U+0324 uni0324 2.0 U+0325 uni0325 2.0 U+0326 uni0326 1.5 U+0327 uni0327 2.1 U+0328 uni0328 2.1 U+0329 uni0329 2.0 U+032a uni032A 2.0 U+032b uni032B 2.1 U+032c uni032C 2.0 U+032d uni032D 2.0 U+032e uni032E 2.0 U+032f uni032F 2.0 U+0330 uni0330 2.0 U+0331 uni0331 2.0 U+0332 uni0332 2.0 U+0333 uni0333 2.1 U+0334 uni0334 2.3 U+0335 uni0335 2.3 U+0336 uni0336 2.3 U+0337 uni0337 2.3 U+0338 uni0338 2.3 U+0339 uni0339 2.0 U+033a uni033A 2.0 U+033b uni033B 2.0 U+033c uni033C 2.1 U+033d uni033D 2.0 U+033e uni033E 2.1 U+033f uni033F 2.1 U+0340 uni0340 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0341 uni0341 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0342 uni0342 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0343 uni0343 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0344 uni0344 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0345 uni0345 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0346 uni0346 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0347 uni0347 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0348 uni0348 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0349 uni0349 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+034a uni034A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+034b uni034B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+034c uni034C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+034d uni034D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+034e uni034E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+034f uni034F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0351 uni0351 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0352 uni0352 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique) 2.28 (Sans Condensed Oblique, Sans Oblique) U+0353 uni0353 2.5 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0357 uni0357 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0358 uni0358 2.3 U+035a uni035A 2.28 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+035c uni035C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+035d uni035D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+035e uni035E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+035f uni035F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0360 uni0360 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0361 uni0361 2.0 U+0362 uni0362 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0370 uni0370 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0371 uni0371 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0372 uni0372 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0373 uni0373 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0374 uni0374 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0375 uni0375 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0376 uni0376 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0377 uni0377 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+037a uni037A 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+037b uni037B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+037c uni037C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+037d uni037D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+037e uni037E 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0384 tonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0385 dieresistonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0386 Alphatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0387 anoteleia 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0388 Epsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0389 Etatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+038a Iotatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+038c Omicrontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+038e Upsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+038f Omegatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0390 iotadieresistonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0391 Alpha 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0392 Beta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0393 Gamma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0394 uni0394 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0395 Epsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0396 Zeta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0397 Eta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0398 Theta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0399 Iota 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+039a Kappa 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+039b Lambda 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+039c Mu 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+039d Nu 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+039e Xi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+039f Omicron 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a0 Pi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a1 Rho 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a3 Sigma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a4 Tau 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a5 Upsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a6 Phi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a7 Chi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a8 Psi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03a9 Omega original U+03aa Iotadieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ab Upsilondieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ac alphatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ad epsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ae etatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03af iotatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b0 upsilondieresistonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b1 alpha 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b2 beta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b3 gamma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b4 delta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b5 epsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b6 zeta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b7 eta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b8 theta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03b9 iota 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ba kappa 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03bb lambda 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03bc uni03BC 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03bd nu 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03be xi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03bf omicron 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c0 pi original U+03c1 rho 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c2 sigma1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c3 sigma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c4 tau 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c5 upsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c6 phi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c7 chi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c8 psi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03c9 omega 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ca iotadieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03cb upsilondieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03cc omicrontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03cd upsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ce omegatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03cf uni03CF 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+03d0 uni03D0 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03d1 theta1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03d2 Upsilon1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03d3 uni03D3 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03d4 uni03D4 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03d5 phi1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.18 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03d6 omega1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+03d7 uni03D7 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03d8 uni03D8 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+03d9 uni03D9 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+03da uni03DA 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03db uni03DB 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03dc uni03DC 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03dd uni03DD 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03de uni03DE 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03df uni03DF 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03e0 uni03E0 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03e1 uni03E1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03e2 uni03E2 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e3 uni03E3 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e4 uni03E4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e5 uni03E5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e6 uni03E6 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e7 uni03E7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e8 uni03E8 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03e9 uni03E9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03ea uni03EA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03eb uni03EB 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03ec uni03EC 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03ed uni03ED 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03ee uni03EE 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03ef uni03EF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+03f0 uni03F0 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03f1 uni03F1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+03f2 uni03F2 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f3 uni03F3 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f4 uni03F4 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f5 uni03F5 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f6 uni03F6 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f7 uni03F7 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f8 uni03F8 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03f9 uni03F9 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03fa uni03FA 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03fb uni03FB 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+03fc uni03FC 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+03fd uni03FD 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03fe uni03FE 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+03ff uni03FF 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0400 uni0400 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0401 uni0401 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0402 uni0402 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0403 uni0403 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0404 uni0404 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0405 uni0405 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0406 uni0406 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0407 uni0407 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0408 uni0408 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0409 uni0409 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+040a uni040A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+040b uni040B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+040c uni040C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+040d uni040D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+040e uni040E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+040f uni040F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0410 uni0410 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0411 uni0411 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0412 uni0412 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0413 uni0413 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0414 uni0414 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0415 uni0415 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0416 uni0416 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0417 uni0417 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0418 uni0418 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0419 uni0419 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+041a uni041A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+041b uni041B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+041c uni041C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+041d uni041D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+041e uni041E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+041f uni041F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0420 uni0420 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0421 uni0421 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0422 uni0422 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0423 uni0423 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0424 uni0424 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0425 uni0425 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0426 uni0426 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0427 uni0427 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0428 uni0428 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0429 uni0429 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+042a uni042A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+042b uni042B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+042c uni042C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+042d uni042D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+042e uni042E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+042f uni042F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0430 uni0430 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0431 uni0431 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0432 uni0432 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0433 uni0433 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0434 uni0434 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0435 uni0435 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0436 uni0436 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0437 uni0437 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0438 uni0438 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0439 uni0439 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+043a uni043A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+043b uni043B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+043c uni043C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+043d uni043D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+043e uni043E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+043f uni043F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0440 uni0440 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0441 uni0441 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0442 uni0442 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0443 uni0443 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0444 uni0444 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0445 uni0445 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0446 uni0446 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0447 uni0447 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0448 uni0448 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0449 uni0449 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+044a uni044A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+044b uni044B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+044c uni044C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+044d uni044D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+044e uni044E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+044f uni044F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0450 uni0450 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0451 uni0451 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0452 uni0452 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0453 uni0453 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0454 uni0454 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0455 uni0455 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0456 uni0456 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0457 uni0457 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0458 uni0458 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0459 uni0459 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+045a uni045A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+045b uni045B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+045c uni045C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+045d uni045D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+045e uni045E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+045f uni045F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+0460 uni0460 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0461 uni0461 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) U+0462 uni0462 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0463 uni0463 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0464 uni0464 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0465 uni0465 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0466 uni0466 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0467 uni0467 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0468 uni0468 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0469 uni0469 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+046a uni046A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.21 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+046b uni046B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.21 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+046c uni046C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+046d uni046D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+046e uni046E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+046f uni046F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0470 uni0470 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0471 uni0471 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0472 uni0472 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0473 uni0473 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0474 uni0474 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.12 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0475 uni0475 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.12 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0476 uni0476 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0477 uni0477 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0478 uni0478 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0479 uni0479 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+047a uni047A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+047b uni047B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+047c uni047C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+047d uni047D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+047e uni047E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+047f uni047F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0480 uni0480 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0481 uni0481 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0482 uni0482 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0483 uni0483 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0484 uni0484 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0485 uni0485 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0486 uni0486 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0487 uni0487 2.9 (Sans, Sans Condensed) 2.27 (Sans Bold, Sans Bold Oblique, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0488 uni0488 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0489 uni0489 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+048a uni048A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+048b uni048B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+048c uni048C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+048d uni048D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+048e uni048E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+048f uni048F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0490 uni0490 1.15 U+0491 uni0491 1.15 U+0492 uni0492 1.14 U+0493 uni0493 1.14 U+0494 uni0494 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0495 uni0495 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+0496 uni0496 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0497 uni0497 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0498 uni0498 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+0499 uni0499 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+049a uni049A 1.14 U+049b uni049B 1.14 U+049c uni049C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+049d uni049D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+049e uni049E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+049f uni049F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04a0 uni04A0 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+04a1 uni04A1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+04a2 uni04A2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04a3 uni04A3 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04a4 uni04A4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+04a5 uni04A5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+04a6 uni04A6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04a7 uni04A7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04a8 uni04A8 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04a9 uni04A9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04aa uni04AA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04ab uni04AB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04ac uni04AC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04ad uni04AD 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04ae uni04AE 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04af uni04AF 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04b0 uni04B0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+04b1 uni04B1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+04b2 uni04B2 1.14 U+04b3 uni04B3 1.14 U+04b4 uni04B4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04b5 uni04B5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04b6 uni04B6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04b7 uni04B7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04b8 uni04B8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04b9 uni04B9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04ba uni04BA 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04bb uni04BB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04bc uni04BC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04bd uni04BD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04be uni04BE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04bf uni04BF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04c0 uni04C0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04c1 uni04C1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04c2 uni04C2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04c3 uni04C3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+04c4 uni04C4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+04c5 uni04C5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04c6 uni04C6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04c7 uni04C7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+04c8 uni04C8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+04c9 uni04C9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04ca uni04CA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04cb uni04CB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04cc uni04CC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04cd uni04CD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04ce uni04CE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04cf uni04CF 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04d0 uni04D0 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d1 uni04D1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d2 uni04D2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d3 uni04D3 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d4 uni04D4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d5 uni04D5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d6 uni04D6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d7 uni04D7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04d8 uni04D8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04d9 uni04D9 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04da uni04DA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04db uni04DB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04dc uni04DC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04dd uni04DD 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04de uni04DE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04df uni04DF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04e0 uni04E0 2.3 U+04e1 uni04E1 2.3 U+04e2 uni04E2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04e3 uni04E3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04e4 uni04E4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04e5 uni04E5 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04e6 uni04E6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04e7 uni04E7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04e8 uni04E8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+04e9 uni04E9 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+04ea uni04EA 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+04eb uni04EB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+04ec uni04EC 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04ed uni04ED 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04ee uni04EE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04ef uni04EF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04f0 uni04F0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04f1 uni04F1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04f2 uni04F2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04f3 uni04F3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04f4 uni04F4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04f5 uni04F5 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04f6 uni04F6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04f7 uni04F7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04f8 uni04F8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+04f9 uni04F9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+04fa uni04FA 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04fb uni04FB 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04fc uni04FC 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04fd uni04FD 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+04fe uni04FE 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) U+04ff uni04FF 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) U+0500 uni0500 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) U+0501 uni0501 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) U+0502 uni0502 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0503 uni0503 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0504 uni0504 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0505 uni0505 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0506 uni0506 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0507 uni0507 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0508 uni0508 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0509 uni0509 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+050a uni050A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+050b uni050B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+050c uni050C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+050d uni050D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+050e uni050E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+050f uni050F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0510 uni0510 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0511 uni0511 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0512 uni0512 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0513 uni0513 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0514 uni0514 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0515 uni0515 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+0516 uni0516 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0517 uni0517 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0518 uni0518 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0519 uni0519 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+051a uni051A 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+051b uni051B 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+051c uni051C 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+051d uni051D 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+051e uni051E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+051f uni051F 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0520 uni0520 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0521 uni0521 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0522 uni0522 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0523 uni0523 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0524 uni0524 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0525 uni0525 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0531 uni0531 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0532 uni0532 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0533 uni0533 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0534 uni0534 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0535 uni0535 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0536 uni0536 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0537 uni0537 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0538 uni0538 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0539 uni0539 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+053a uni053A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+053b uni053B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+053c uni053C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+053d uni053D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+053e uni053E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+053f uni053F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0540 uni0540 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0541 uni0541 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0542 uni0542 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0543 uni0543 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0544 uni0544 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0545 uni0545 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0546 uni0546 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0547 uni0547 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0548 uni0548 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0549 uni0549 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+054a uni054A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+054b uni054B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+054c uni054C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+054d uni054D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+054e uni054E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+054f uni054F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0550 uni0550 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0551 uni0551 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0552 uni0552 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0553 uni0553 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0554 uni0554 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0555 uni0555 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0556 uni0556 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0559 uni0559 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+055a uni055A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+055b uni055B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+055c uni055C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+055d uni055D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+055e uni055E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+055f uni055F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0561 uni0561 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0562 uni0562 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0563 uni0563 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0564 uni0564 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0565 uni0565 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0566 uni0566 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0567 uni0567 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0568 uni0568 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0569 uni0569 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+056a uni056A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+056b uni056B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+056c uni056C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+056d uni056D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+056e uni056E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+056f uni056F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0570 uni0570 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0571 uni0571 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0572 uni0572 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0573 uni0573 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0574 uni0574 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0575 uni0575 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0576 uni0576 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0577 uni0577 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0578 uni0578 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0579 uni0579 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+057a uni057A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+057b uni057B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+057c uni057C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+057d uni057D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+057e uni057E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+057f uni057F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0580 uni0580 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0581 uni0581 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0582 uni0582 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0583 uni0583 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0584 uni0584 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0585 uni0585 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0586 uni0586 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0587 uni0587 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+0589 uni0589 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+058a uni058A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+05b0 uni05B0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b1 uni05B1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b2 uni05B2 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b3 uni05B3 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b4 uni05B4 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b5 uni05B5 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b6 uni05B6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b7 uni05B7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b8 uni05B8 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05b9 uni05B9 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05ba uni05BA 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+05bb uni05BB 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05bc uni05BC 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05bd uni05BD 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05be uni05BE 2.9 (Sans Condensed Oblique, Sans Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique) U+05bf uni05BF 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05c0 uni05C0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05c1 uni05C1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05c2 uni05C2 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05c3 uni05C3 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05c6 uni05C6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05c7 uni05C7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d0 uni05D0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d1 uni05D1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d2 uni05D2 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d3 uni05D3 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d4 uni05D4 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d5 uni05D5 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d6 uni05D6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d7 uni05D7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d8 uni05D8 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05d9 uni05D9 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05da uni05DA 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05db uni05DB 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05dc uni05DC 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05dd uni05DD 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05de uni05DE 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05df uni05DF 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e0 uni05E0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e1 uni05E1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e2 uni05E2 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e3 uni05E3 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e4 uni05E4 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e5 uni05E5 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e6 uni05E6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e7 uni05E7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e8 uni05E8 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05e9 uni05E9 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05ea uni05EA 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05f0 uni05F0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05f1 uni05F1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05f2 uni05F2 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+05f3 uni05F3 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+05f4 uni05F4 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0606 uni0606 2.26 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold) U+0607 uni0607 2.26 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold) U+0609 uni0609 2.26 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold) U+060a uni060A 2.26 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold) U+060c uni060C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0615 uni0615 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+061b uni061B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+061f uni061F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0621 uni0621 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0622 uni0622 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0623 uni0623 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0624 uni0624 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0625 uni0625 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0626 uni0626 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0627 uni0627 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0628 uni0628 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0629 uni0629 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+062a uni062A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+062b uni062B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+062c uni062C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+062d uni062D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+062e uni062E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+062f uni062F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0630 uni0630 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0631 uni0631 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0632 uni0632 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0633 uni0633 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0634 uni0634 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0635 uni0635 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0636 uni0636 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0637 uni0637 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0638 uni0638 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0639 uni0639 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+063a uni063A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0640 uni0640 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0641 uni0641 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0642 uni0642 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0643 uni0643 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0644 uni0644 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0645 uni0645 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0646 uni0646 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0647 uni0647 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0648 uni0648 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0649 uni0649 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+064a uni064A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+064b uni064B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+064c uni064C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+064d uni064D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+064e uni064E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+064f uni064F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0650 uni0650 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0651 uni0651 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0652 uni0652 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0653 uni0653 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0654 uni0654 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0655 uni0655 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0657 uni0657 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+065a uni065A 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0660 uni0660 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0661 uni0661 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0662 uni0662 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0663 uni0663 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0664 uni0664 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0665 uni0665 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0666 uni0666 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0667 uni0667 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0668 uni0668 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0669 uni0669 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+066a uni066A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+066b uni066B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+066c uni066C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+066d uni066D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+066e uni066E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+066f uni066F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0670 uni0670 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0674 uni0674 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans ExtraLight) 2.16 (Sans Mono, Sans Mono Bold) U+0679 uni0679 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+067a uni067A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+067b uni067B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+067c uni067C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+067d uni067D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+067e uni067E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+067f uni067F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0680 uni0680 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0681 uni0681 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0682 uni0682 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0683 uni0683 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0684 uni0684 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0685 uni0685 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0686 uni0686 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0687 uni0687 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0688 uni0688 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0689 uni0689 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+068a uni068A 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+068b uni068B 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+068c uni068C 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+068d uni068D 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+068e uni068E 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+068f uni068F 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0690 uni0690 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0691 uni0691 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0692 uni0692 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0693 uni0693 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0694 uni0694 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0695 uni0695 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0696 uni0696 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0697 uni0697 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0698 uni0698 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+0699 uni0699 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+069a uni069A 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+069b uni069B 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+069c uni069C 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+069d uni069D 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+069e uni069E 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+069f uni069F 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a0 uni06A0 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a1 uni06A1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06a2 uni06A2 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a3 uni06A3 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a4 uni06A4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06a5 uni06A5 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a6 uni06A6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a7 uni06A7 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a8 uni06A8 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06a9 uni06A9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06aa uni06AA 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06ab uni06AB 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06ac uni06AC 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06ad uni06AD 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06ae uni06AE 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06af uni06AF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06b0 uni06B0 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b1 uni06B1 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b2 uni06B2 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b3 uni06B3 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b4 uni06B4 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b5 uni06B5 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06b6 uni06B6 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b7 uni06B7 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b8 uni06B8 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06b9 uni06B9 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06ba uni06BA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06bb uni06BB 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06bc uni06BC 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06bd uni06BD 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06be uni06BE 2.16 (Sans Mono, Sans Mono Bold) 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06bf uni06BF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+06c6 uni06C6 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06cc uni06CC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06ce uni06CE 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06d5 uni06D5 2.10 (Sans, Sans Bold) 2.11 (Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f0 uni06F0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f1 uni06F1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f2 uni06F2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f3 uni06F3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f4 uni06F4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f5 uni06F5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f6 uni06F6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f7 uni06F7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f8 uni06F8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+06f9 uni06F9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+07c0 uni07C0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c1 uni07C1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c2 uni07C2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c3 uni07C3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c4 uni07C4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c5 uni07C5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c6 uni07C6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c7 uni07C7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c8 uni07C8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07c9 uni07C9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07ca uni07CA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07cb uni07CB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07cc uni07CC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07cd uni07CD 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07ce uni07CE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07cf uni07CF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d0 uni07D0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d1 uni07D1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d2 uni07D2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d3 uni07D3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d4 uni07D4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d5 uni07D5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d6 uni07D6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d7 uni07D7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d8 uni07D8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07d9 uni07D9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07da uni07DA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07db uni07DB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07dc uni07DC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07dd uni07DD 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07de uni07DE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07df uni07DF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e0 uni07E0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e1 uni07E1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e2 uni07E2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e3 uni07E3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e4 uni07E4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e5 uni07E5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e6 uni07E6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07e7 uni07E7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07eb uni07EB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07ec uni07EC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07ed uni07ED 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07ee uni07EE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07ef uni07EF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f0 uni07F0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f1 uni07F1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f2 uni07F2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f3 uni07F3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f4 uni07F4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f5 uni07F5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f8 uni07F8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07f9 uni07F9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+07fa uni07FA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+0e3f uni0E3F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0e81 uni0E81 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e82 uni0E82 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e84 uni0E84 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e87 uni0E87 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e88 uni0E88 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e8a uni0E8A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e8d uni0E8D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e94 uni0E94 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e95 uni0E95 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e96 uni0E96 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e97 uni0E97 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e99 uni0E99 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e9a uni0E9A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e9b uni0E9B 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e9c uni0E9C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e9d uni0E9D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e9e uni0E9E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0e9f uni0E9F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ea1 uni0EA1 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ea2 uni0EA2 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ea3 uni0EA3 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ea5 uni0EA5 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ea7 uni0EA7 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eaa uni0EAA 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eab uni0EAB 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ead uni0EAD 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eae uni0EAE 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eaf uni0EAF 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb0 uni0EB0 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb1 uni0EB1 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb2 uni0EB2 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb3 uni0EB3 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb4 uni0EB4 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb5 uni0EB5 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb6 uni0EB6 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb7 uni0EB7 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb8 uni0EB8 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eb9 uni0EB9 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ebb uni0EBB 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ebc uni0EBC 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ebd uni0EBD 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec0 uni0EC0 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec1 uni0EC1 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec2 uni0EC2 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec3 uni0EC3 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec4 uni0EC4 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec6 uni0EC6 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ec8 uni0EC8 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ec9 uni0EC9 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0eca uni0ECA 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ecb uni0ECB 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ecc uni0ECC 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ecd uni0ECD 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+0ed0 uni0ED0 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed1 uni0ED1 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed2 uni0ED2 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed3 uni0ED3 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed4 uni0ED4 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed5 uni0ED5 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed6 uni0ED6 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed7 uni0ED7 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0ed8 uni0ED8 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+0ed9 uni0ED9 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0edc uni0EDC 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+0edd uni0EDD 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+10a0 uni10A0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a1 uni10A1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a2 uni10A2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a3 uni10A3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a4 uni10A4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a5 uni10A5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a6 uni10A6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a7 uni10A7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a8 uni10A8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10a9 uni10A9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10aa uni10AA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10ab uni10AB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10ac uni10AC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10ad uni10AD 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10ae uni10AE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10af uni10AF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b0 uni10B0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b1 uni10B1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b2 uni10B2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b3 uni10B3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b4 uni10B4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b5 uni10B5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b6 uni10B6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b7 uni10B7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b8 uni10B8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10b9 uni10B9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10ba uni10BA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10bb uni10BB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10bc uni10BC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10bd uni10BD 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10be uni10BE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10bf uni10BF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10c0 uni10C0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10c1 uni10C1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10c2 uni10C2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10c3 uni10C3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10c4 uni10C4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10c5 uni10C5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+10d0 uni10D0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d1 uni10D1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d2 uni10D2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d3 uni10D3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d4 uni10D4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d5 uni10D5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d6 uni10D6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d7 uni10D7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d8 uni10D8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10d9 uni10D9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10da uni10DA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10db uni10DB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10dc uni10DC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10dd uni10DD 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10de uni10DE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10df uni10DF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e0 uni10E0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e1 uni10E1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e2 uni10E2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e3 uni10E3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e4 uni10E4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e5 uni10E5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e6 uni10E6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e7 uni10E7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e8 uni10E8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10e9 uni10E9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10ea uni10EA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10eb uni10EB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10ec uni10EC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10ed uni10ED 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10ee uni10EE 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10ef uni10EF 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f0 uni10F0 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f1 uni10F1 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f2 uni10F2 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f3 uni10F3 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f4 uni10F4 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f5 uni10F5 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f6 uni10F6 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f7 uni10F7 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f8 uni10F8 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10f9 uni10F9 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10fa uni10FA 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10fb uni10FB 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+10fc uni10FC 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Mono, Sans Mono Bold, Serif, Serif Bold, Serif Condensed, Serif Condensed Bold) 2.20 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+1401 uni1401 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1402 uni1402 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1403 uni1403 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1404 uni1404 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1405 uni1405 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1406 uni1406 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1407 uni1407 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1409 uni1409 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+140a uni140A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+140b uni140B 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+140c uni140C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+140d uni140D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+140e uni140E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+140f uni140F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1410 uni1410 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1411 uni1411 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1412 uni1412 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1413 uni1413 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1414 uni1414 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1415 uni1415 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1416 uni1416 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1417 uni1417 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1418 uni1418 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1419 uni1419 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+141a uni141A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+141b uni141B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+141d uni141D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+141e uni141E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+141f uni141F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1420 uni1420 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1421 uni1421 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1422 uni1422 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1423 uni1423 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1424 uni1424 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1425 uni1425 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1426 uni1426 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1427 uni1427 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1428 uni1428 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1429 uni1429 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+142a uni142A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+142b uni142B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+142c uni142C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+142d uni142D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+142e uni142E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+142f uni142F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1430 uni1430 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1431 uni1431 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1432 uni1432 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1433 uni1433 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1434 uni1434 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1435 uni1435 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1437 uni1437 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1438 uni1438 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1439 uni1439 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+143a uni143A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+143b uni143B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+143c uni143C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+143d uni143D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+143e uni143E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+143f uni143F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1440 uni1440 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1441 uni1441 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1442 uni1442 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1443 uni1443 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1444 uni1444 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1445 uni1445 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1446 uni1446 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1447 uni1447 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1448 uni1448 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1449 uni1449 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+144a uni144A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+144c uni144C 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+144d uni144D 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+144e uni144E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+144f uni144F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1450 uni1450 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1451 uni1451 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1452 uni1452 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1454 uni1454 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1455 uni1455 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1456 uni1456 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1457 uni1457 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1458 uni1458 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1459 uni1459 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+145a uni145A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+145b uni145B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+145c uni145C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+145d uni145D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+145e uni145E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+145f uni145F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1460 uni1460 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1461 uni1461 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1462 uni1462 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1463 uni1463 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1464 uni1464 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1465 uni1465 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1466 uni1466 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1467 uni1467 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1468 uni1468 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1469 uni1469 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+146a uni146A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+146b uni146B 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+146c uni146C 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+146d uni146D 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+146e uni146E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+146f uni146F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1470 uni1470 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1471 uni1471 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1472 uni1472 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1473 uni1473 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1474 uni1474 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1475 uni1475 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1476 uni1476 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1477 uni1477 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1478 uni1478 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1479 uni1479 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+147a uni147A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+147b uni147B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+147c uni147C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+147d uni147D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+147e uni147E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+147f uni147F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1480 uni1480 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1481 uni1481 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1482 uni1482 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1483 uni1483 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1484 uni1484 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1485 uni1485 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1486 uni1486 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1487 uni1487 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1488 uni1488 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1489 uni1489 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+148a uni148A 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+148b uni148B 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+148c uni148C 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+148d uni148D 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+148e uni148E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+148f uni148F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1490 uni1490 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1491 uni1491 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1492 uni1492 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1493 uni1493 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1494 uni1494 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1495 uni1495 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1496 uni1496 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1497 uni1497 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1498 uni1498 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1499 uni1499 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+149a uni149A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+149b uni149B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+149c uni149C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+149d uni149D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+149e uni149E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+149f uni149F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a0 uni14A0 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a1 uni14A1 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a2 uni14A2 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a3 uni14A3 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a4 uni14A4 2.13 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Oblique) 2.15 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+14a5 uni14A5 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a6 uni14A6 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a7 uni14A7 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a8 uni14A8 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14a9 uni14A9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14aa uni14AA 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ab uni14AB 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ac uni14AC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ad uni14AD 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ae uni14AE 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14af uni14AF 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b0 uni14B0 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b1 uni14B1 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b2 uni14B2 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b3 uni14B3 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b4 uni14B4 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b5 uni14B5 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b6 uni14B6 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b7 uni14B7 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b8 uni14B8 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14b9 uni14B9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ba uni14BA 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14bb uni14BB 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14bc uni14BC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14bd uni14BD 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c0 uni14C0 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c1 uni14C1 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c2 uni14C2 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c3 uni14C3 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c4 uni14C4 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c5 uni14C5 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c6 uni14C6 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c7 uni14C7 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c8 uni14C8 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14c9 uni14C9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ca uni14CA 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14cb uni14CB 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14cc uni14CC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14cd uni14CD 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ce uni14CE 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14cf uni14CF 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d0 uni14D0 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d1 uni14D1 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d2 uni14D2 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d3 uni14D3 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d4 uni14D4 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d5 uni14D5 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d6 uni14D6 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d7 uni14D7 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d8 uni14D8 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14d9 uni14D9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14da uni14DA 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14db uni14DB 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14dc uni14DC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14dd uni14DD 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14de uni14DE 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14df uni14DF 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e0 uni14E0 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e1 uni14E1 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e2 uni14E2 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e3 uni14E3 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e4 uni14E4 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e5 uni14E5 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e6 uni14E6 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e7 uni14E7 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e8 uni14E8 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14e9 uni14E9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ea uni14EA 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ec uni14EC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ed uni14ED 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ee uni14EE 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ef uni14EF 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f0 uni14F0 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f1 uni14F1 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f2 uni14F2 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f3 uni14F3 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f4 uni14F4 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f5 uni14F5 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f6 uni14F6 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f7 uni14F7 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f8 uni14F8 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14f9 uni14F9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14fa uni14FA 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14fb uni14FB 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14fc uni14FC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14fd uni14FD 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14fe uni14FE 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+14ff uni14FF 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1500 uni1500 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1501 uni1501 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1502 uni1502 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1503 uni1503 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1504 uni1504 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1505 uni1505 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1506 uni1506 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1507 uni1507 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1510 uni1510 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1511 uni1511 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1512 uni1512 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1513 uni1513 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1514 uni1514 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1515 uni1515 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1516 uni1516 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1517 uni1517 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1518 uni1518 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1519 uni1519 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+151a uni151A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+151b uni151B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+151c uni151C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+151d uni151D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+151e uni151E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+151f uni151F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1520 uni1520 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1521 uni1521 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1522 uni1522 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1523 uni1523 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1524 uni1524 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1525 uni1525 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1526 uni1526 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1527 uni1527 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1528 uni1528 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1529 uni1529 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+152a uni152A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+152b uni152B 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+152c uni152C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+152d uni152D 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+152e uni152E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+152f uni152F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1530 uni1530 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1531 uni1531 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1532 uni1532 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1533 uni1533 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1534 uni1534 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1535 uni1535 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1536 uni1536 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1537 uni1537 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1538 uni1538 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1539 uni1539 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+153a uni153A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+153b uni153B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+153c uni153C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+153d uni153D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+153e uni153E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1540 uni1540 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1541 uni1541 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1542 uni1542 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1543 uni1543 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1544 uni1544 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1545 uni1545 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1546 uni1546 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1547 uni1547 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1548 uni1548 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1549 uni1549 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+154a uni154A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+154b uni154B 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+154c uni154C 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+154d uni154D 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+154e uni154E 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+154f uni154F 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1550 uni1550 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1552 uni1552 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1553 uni1553 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1554 uni1554 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1555 uni1555 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1556 uni1556 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1557 uni1557 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1558 uni1558 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1559 uni1559 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+155a uni155A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+155b uni155B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+155c uni155C 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+155d uni155D 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+155e uni155E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+155f uni155F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1560 uni1560 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1561 uni1561 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1562 uni1562 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1563 uni1563 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1564 uni1564 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1565 uni1565 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1566 uni1566 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1567 uni1567 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1568 uni1568 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1569 uni1569 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+156a uni156A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1574 uni1574 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1575 uni1575 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1576 uni1576 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1577 uni1577 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1578 uni1578 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1579 uni1579 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+157a uni157A 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+157b uni157B 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+157c uni157C 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+157d uni157D 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+157e uni157E 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+157f uni157F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1580 uni1580 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1581 uni1581 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1582 uni1582 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1583 uni1583 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1584 uni1584 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1585 uni1585 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+158a uni158A 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+158b uni158B 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+158c uni158C 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+158d uni158D 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+158e uni158E 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+158f uni158F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1590 uni1590 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1591 uni1591 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1592 uni1592 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1593 uni1593 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1594 uni1594 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1595 uni1595 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1596 uni1596 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a0 uni15A0 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a1 uni15A1 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a2 uni15A2 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a3 uni15A3 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a4 uni15A4 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a5 uni15A5 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a6 uni15A6 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a7 uni15A7 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a8 uni15A8 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15a9 uni15A9 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15aa uni15AA 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15ab uni15AB 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15ac uni15AC 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15ad uni15AD 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15ae uni15AE 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15af uni15AF 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15de uni15DE 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+15e1 uni15E1 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1646 uni1646 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1647 uni1647 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+166e uni166E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+166f uni166F 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1670 uni1670 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1671 uni1671 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1672 uni1672 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1673 uni1673 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1674 uni1674 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1675 uni1675 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1676 uni1676 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1680 uni1680 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1681 uni1681 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1682 uni1682 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1683 uni1683 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1684 uni1684 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1685 uni1685 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1686 uni1686 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1687 uni1687 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1688 uni1688 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1689 uni1689 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+168a uni168A 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+168b uni168B 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+168c uni168C 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+168d uni168D 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+168e uni168E 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+168f uni168F 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1690 uni1690 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1691 uni1691 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1692 uni1692 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1693 uni1693 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1694 uni1694 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1695 uni1695 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1696 uni1696 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1697 uni1697 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1698 uni1698 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1699 uni1699 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+169a uni169A 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+169b uni169B 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+169c uni169C 2.22 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans ExtraLight) U+1d00 uni1D00 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d01 uni1D01 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d02 uni1D02 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1d03 uni1D03 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d04 uni1D04 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d05 uni1D05 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d06 uni1D06 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d07 uni1D07 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d08 uni1D08 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+1d09 uni1D09 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1d0a uni1D0A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d0b uni1D0B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d0c uni1D0C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d0d uni1D0D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d0e uni1D0E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d0f uni1D0F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d10 uni1D10 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d11 uni1D11 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d12 uni1D12 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d13 uni1D13 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d14 uni1D14 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1d15 uni1D15 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d16 uni1D16 2.3 U+1d17 uni1D17 2.3 U+1d18 uni1D18 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d19 uni1D19 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d1a uni1D1A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d1b uni1D1B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d1c uni1D1C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d1d uni1D1D 2.3 U+1d1e uni1D1E 2.3 U+1d1f uni1D1F 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+1d20 uni1D20 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d21 uni1D21 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d22 uni1D22 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d23 uni1D23 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d24 uni1D24 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d25 uni1D25 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d26 uni1D26 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d27 uni1D27 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d28 uni1D28 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d29 uni1D29 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d2a uni1D2A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d2b uni1D2B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d2c uni1D2C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d2d uni1D2D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d2e uni1D2E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d2f uni1D2F 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d30 uni1D30 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d31 uni1D31 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d32 uni1D32 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d33 uni1D33 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d34 uni1D34 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d35 uni1D35 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d36 uni1D36 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d37 uni1D37 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d38 uni1D38 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d39 uni1D39 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d3a uni1D3A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d3b uni1D3B 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d3c uni1D3C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d3d uni1D3D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d3e uni1D3E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d3f uni1D3F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d40 uni1D40 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d41 uni1D41 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d42 uni1D42 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d43 uni1D43 2.3 U+1d44 uni1D44 2.3 U+1d45 uni1D45 2.3 U+1d46 uni1D46 2.3 U+1d47 uni1D47 2.3 U+1d48 uni1D48 2.3 U+1d49 uni1D49 2.3 U+1d4a uni1D4A 2.3 U+1d4b uni1D4B 2.3 U+1d4c uni1D4C 2.3 U+1d4d uni1D4D 2.3 U+1d4e uni1D4E 2.3 U+1d4f uni1D4F 2.3 U+1d50 uni1D50 2.3 U+1d51 uni1D51 2.3 U+1d52 uni1D52 2.3 U+1d53 uni1D53 2.3 U+1d54 uni1D54 2.3 U+1d55 uni1D55 2.3 U+1d56 uni1D56 2.3 U+1d57 uni1D57 2.3 U+1d58 uni1D58 2.3 U+1d59 uni1D59 2.3 U+1d5a uni1D5A 2.3 U+1d5b uni1D5B 2.3 U+1d5c uni1D5C 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d5d uni1D5D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d5e uni1D5E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d5f uni1D5F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d60 uni1D60 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d61 uni1D61 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d62 uni1D62 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d63 uni1D63 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d64 uni1D64 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d65 uni1D65 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d66 uni1D66 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d67 uni1D67 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d68 uni1D68 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d69 uni1D69 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d6a uni1D6A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d6b uni1D6B 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d77 uni1D77 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1d78 uni1D78 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1d7b uni1D7B 2.3 U+1d7c uni1D7C 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d7d uni1D7D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d7e uni1D7E 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d7f uni1D7F 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1d85 uni1D85 2.3 U+1d9b uni1D9B 2.3 U+1d9c uni1D9C 2.3 U+1d9d uni1D9D 2.3 U+1d9e uni1D9E 2.3 U+1d9f uni1D9F 2.3 U+1da0 uni1DA0 2.3 U+1da1 uni1DA1 2.3 U+1da2 uni1DA2 2.3 U+1da3 uni1DA3 2.3 U+1da4 uni1DA4 2.3 U+1da5 uni1DA5 2.3 U+1da6 uni1DA6 2.3 U+1da7 uni1DA7 2.3 U+1da8 uni1DA8 2.3 U+1da9 uni1DA9 2.3 U+1daa uni1DAA 2.3 U+1dab uni1DAB 2.3 U+1dac uni1DAC 2.3 U+1dad uni1DAD 2.3 U+1dae uni1DAE 2.3 U+1daf uni1DAF 2.3 U+1db0 uni1DB0 2.3 U+1db1 uni1DB1 2.3 U+1db2 uni1DB2 2.3 U+1db3 uni1DB3 2.3 U+1db4 uni1DB4 2.3 U+1db5 uni1DB5 2.3 U+1db6 uni1DB6 2.3 U+1db7 uni1DB7 2.3 U+1db8 uni1DB8 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1db9 uni1DB9 2.3 U+1dba uni1DBA 2.3 U+1dbb uni1DBB 2.3 U+1dbc uni1DBC 2.3 U+1dbd uni1DBD 2.3 U+1dbe uni1DBE 2.3 U+1dbf uni1DBF 2.3 U+1dc4 uni1DC4 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1dc5 uni1DC5 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1dc6 uni1DC6 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1dc7 uni1DC7 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1dc8 uni1DC8 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1dc9 uni1DC9 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1e00 uni1E00 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e01 uni1E01 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e02 uni1E02 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e03 uni1E03 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e04 uni1E04 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e05 uni1E05 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e06 uni1E06 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e07 uni1E07 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e08 uni1E08 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e09 uni1E09 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e0a uni1E0A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e0b uni1E0B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e0c uni1E0C 2.1 U+1e0d uni1E0D 2.1 U+1e0e uni1E0E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e0f uni1E0F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e10 uni1E10 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e11 uni1E11 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e12 uni1E12 1.13 U+1e13 uni1E13 1.13 U+1e14 uni1E14 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e15 uni1E15 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e16 uni1E16 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e17 uni1E17 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e18 uni1E18 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e19 uni1E19 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e1a uni1E1A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e1b uni1E1B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e1c uni1E1C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.17 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1e1d uni1E1D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.17 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+1e1e uni1E1E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e1f uni1E1F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e20 uni1E20 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e21 uni1E21 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e22 uni1E22 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e23 uni1E23 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e24 uni1E24 2.1 U+1e25 uni1E25 2.1 U+1e26 uni1E26 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e27 uni1E27 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e28 uni1E28 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e29 uni1E29 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e2a uni1E2A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e2b uni1E2B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e2c uni1E2C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e2d uni1E2D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e2e uni1E2E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e2f uni1E2F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e30 uni1E30 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e31 uni1E31 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e32 uni1E32 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e33 uni1E33 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e34 uni1E34 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e35 uni1E35 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e36 uni1E36 2.1 U+1e37 uni1E37 2.1 U+1e38 uni1E38 2.1 U+1e39 uni1E39 2.1 U+1e3a uni1E3A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e3b uni1E3B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e3c uni1E3C 1.13 U+1e3d uni1E3D 1.13 U+1e3e uni1E3E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e3f uni1E3F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e40 uni1E40 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e41 uni1E41 2.1 U+1e42 uni1E42 2.1 U+1e43 uni1E43 2.1 U+1e44 uni1E44 1.13 U+1e45 uni1E45 1.13 U+1e46 uni1E46 2.1 U+1e47 uni1E47 2.1 U+1e48 uni1E48 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e49 uni1E49 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e4a uni1E4A 1.13 U+1e4b uni1E4B 1.13 U+1e4c uni1E4C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1e4d uni1E4D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1e4e uni1E4E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e4f uni1E4F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e50 uni1E50 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e51 uni1E51 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e52 uni1E52 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e53 uni1E53 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e54 uni1E54 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e55 uni1E55 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e56 uni1E56 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e57 uni1E57 2.1 U+1e58 uni1E58 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e59 uni1E59 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e5a uni1E5A 2.1 U+1e5b uni1E5B 2.1 U+1e5c uni1E5C 2.1 U+1e5d uni1E5D 2.1 U+1e5e uni1E5E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e5f uni1E5F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e60 uni1E60 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e61 uni1E61 2.1 U+1e62 uni1E62 2.1 U+1e63 uni1E63 2.1 U+1e64 uni1E64 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e65 uni1E65 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e66 uni1E66 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e67 uni1E67 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e68 uni1E68 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e69 uni1E69 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e6a uni1E6A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e6b uni1E6B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e6c uni1E6C 2.1 U+1e6d uni1E6D 2.1 U+1e6e uni1E6E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e6f uni1E6F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e70 uni1E70 1.13 U+1e71 uni1E71 1.13 U+1e72 uni1E72 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e73 uni1E73 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e74 uni1E74 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e75 uni1E75 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e76 uni1E76 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e77 uni1E77 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e78 uni1E78 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e79 uni1E79 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e7a uni1E7A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e7b uni1E7B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e7c uni1E7C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e7d uni1E7D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e7e uni1E7E 2.1 U+1e7f uni1E7F 2.1 U+1e80 Wgrave 1.2 U+1e81 wgrave 1.2 U+1e82 Wacute 1.2 U+1e83 wacute 1.2 U+1e84 Wdieresis 1.2 U+1e85 wdieresis 1.2 U+1e86 uni1E86 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e87 uni1E87 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e88 uni1E88 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e89 uni1E89 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e8a uni1E8A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e8b uni1E8B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e8c uni1E8C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e8d uni1E8D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e8e uni1E8E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e8f uni1E8F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e90 uni1E90 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e91 uni1E91 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e92 uni1E92 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e93 uni1E93 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e94 uni1E94 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e95 uni1E95 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e96 uni1E96 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e97 uni1E97 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e98 uni1E98 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e99 uni1E99 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1e9a uni1E9A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1e9b uni1E9B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1e9c uni1E9C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e9d uni1E9D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1e9e uni1E9E 2.28 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.32 (Sans ExtraLight) U+1e9f uni1E9F 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1ea0 uni1EA0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ea1 uni1EA1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ea2 uni1EA2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ea3 uni1EA3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ea4 uni1EA4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ea5 uni1EA5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ea6 uni1EA6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ea7 uni1EA7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ea8 uni1EA8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ea9 uni1EA9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eaa uni1EAA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eab uni1EAB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eac uni1EAC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1ead uni1EAD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1eae uni1EAE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eaf uni1EAF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eb0 uni1EB0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1eb1 uni1EB1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1eb2 uni1EB2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eb3 uni1EB3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eb4 uni1EB4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eb5 uni1EB5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eb6 uni1EB6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1eb7 uni1EB7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1eb8 uni1EB8 2.2 U+1eb9 uni1EB9 2.2 U+1eba uni1EBA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ebb uni1EBB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ebc uni1EBC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ebd uni1EBD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ebe uni1ebe 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ebf uni1ebF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec0 uni1EC0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec1 uni1EC1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec2 uni1EC2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec3 uni1EC3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec4 uni1EC4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec5 uni1EC5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ec6 uni1EC6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1ec7 uni1EC7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1ec8 uni1EC8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ec9 uni1EC9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1eca uni1ECA 2.2 U+1ecb uni1ECB 2.2 U+1ecc uni1ECC 2.2 U+1ecd uni1ECD 2.2 U+1ece uni1ECE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ecf uni1ECF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ed0 uni1ED0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed1 uni1ED1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed2 uni1ED2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed3 uni1ED3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed4 uni1ED4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed5 uni1ED5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed6 uni1ED6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed7 uni1ED7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ed8 uni1ED8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1ed9 uni1ED9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1eda uni1EDA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1edb uni1EDB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1edc uni1EDC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1edd uni1EDD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ede uni1EDE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1edf uni1EDF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ee0 uni1EE0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ee1 uni1EE1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ee2 uni1EE2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ee3 uni1EE3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ee4 uni1EE4 2.2 U+1ee5 uni1EE5 2.2 U+1ee6 uni1EE6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ee7 uni1EE7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ee8 uni1EE8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ee9 uni1EE9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eea uni1EEA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eeb uni1EEB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eec uni1EEC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eed uni1EED 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eee uni1EEE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1eef uni1EEF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ef0 uni1EF0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ef1 uni1EF1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1ef2 Ygrave 1.2 U+1ef3 ygrave 1.2 U+1ef4 uni1EF4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ef5 uni1EF5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ef6 uni1EF6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ef7 uni1EF7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ef8 uni1EF8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ef9 uni1EF9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1efa uni1EFA 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1efb uni1EFB 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+1f00 uni1F00 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f01 uni1F01 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f02 uni1F02 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f03 uni1F03 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f04 uni1F04 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f05 uni1F05 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f06 uni1F06 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f07 uni1F07 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f08 uni1F08 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f09 uni1F09 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f0a uni1F0A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f0b uni1F0B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f0c uni1F0C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f0d uni1F0D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f0e uni1F0E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f0f uni1F0F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f10 uni1F10 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f11 uni1F11 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f12 uni1F12 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f13 uni1F13 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f14 uni1F14 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f15 uni1F15 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f18 uni1F18 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f19 uni1F19 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f1a uni1F1A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f1b uni1F1B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f1c uni1F1C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f1d uni1F1D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f20 uni1F20 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f21 uni1F21 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f22 uni1F22 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f23 uni1F23 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f24 uni1F24 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f25 uni1F25 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f26 uni1F26 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f27 uni1F27 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f28 uni1F28 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f29 uni1F29 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f2a uni1F2A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f2b uni1F2B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f2c uni1F2C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f2d uni1F2D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f2e uni1F2E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f2f uni1F2F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f30 uni1F30 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f31 uni1F31 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f32 uni1F32 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f33 uni1F33 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f34 uni1F34 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f35 uni1F35 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f36 uni1F36 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f37 uni1F37 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f38 uni1F38 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f39 uni1F39 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f3a uni1F3A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f3b uni1F3B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f3c uni1F3C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f3d uni1F3D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f3e uni1F3E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f3f uni1F3F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f40 uni1F40 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f41 uni1F41 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f42 uni1F42 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f43 uni1F43 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f44 uni1F44 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f45 uni1F45 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f48 uni1F48 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f49 uni1F49 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f4a uni1F4A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f4b uni1F4B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f4c uni1F4C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f4d uni1F4D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f50 uni1F50 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f51 uni1F51 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f52 uni1F52 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f53 uni1F53 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f54 uni1F54 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f55 uni1F55 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f56 uni1F56 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f57 uni1F57 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f59 uni1F59 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f5b uni1F5B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f5d uni1F5D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f5f uni1F5F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f60 uni1F60 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f61 uni1F61 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f62 uni1F62 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f63 uni1F63 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f64 uni1F64 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f65 uni1F65 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f66 uni1F66 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f67 uni1F67 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f68 uni1F68 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f69 uni1F69 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f6a uni1F6A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f6b uni1F6B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f6c uni1F6C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f6d uni1F6D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f6e uni1F6E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f6f uni1F6F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f70 uni1F70 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f71 uni1F71 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f72 uni1F72 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f73 uni1F73 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f74 uni1F74 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f75 uni1F75 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f76 uni1F76 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f77 uni1F77 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f78 uni1F78 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f79 uni1F79 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1f7a uni1F7A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f7b uni1F7B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f7c uni1F7C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f7d uni1F7D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f80 uni1F80 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f81 uni1F81 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f82 uni1F82 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f83 uni1F83 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f84 uni1F84 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f85 uni1F85 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f86 uni1F86 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f87 uni1F87 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f88 uni1F88 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f89 uni1F89 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f8a uni1F8A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f8b uni1F8B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f8c uni1F8C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f8d uni1F8D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f8e uni1F8E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f8f uni1F8F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f90 uni1F90 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f91 uni1F91 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f92 uni1F92 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f93 uni1F93 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f94 uni1F94 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f95 uni1F95 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f96 uni1F96 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f97 uni1F97 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f98 uni1F98 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f99 uni1F99 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f9a uni1F9A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f9b uni1F9B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f9c uni1F9C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f9d uni1F9D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f9e uni1F9E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1f9f uni1F9F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa0 uni1FA0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa1 uni1FA1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa2 uni1FA2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa3 uni1FA3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa4 uni1FA4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa5 uni1FA5 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa6 uni1FA6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa7 uni1FA7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa8 uni1FA8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fa9 uni1FA9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1faa uni1FAA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fab uni1FAB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fac uni1FAC 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fad uni1FAD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fae uni1FAE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1faf uni1FAF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb0 uni1FB0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb1 uni1FB1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb2 uni1FB2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb3 uni1FB3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb4 uni1FB4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb6 uni1FB6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb7 uni1FB7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fb8 uni1FB8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fb9 uni1FB9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fba uni1FBA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fbb uni1FBB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fbc uni1FBC 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fbd uni1FBD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fbe uni1FBE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fbf uni1FBF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fc0 uni1FC0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fc1 uni1FC1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fc2 uni1FC2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fc3 uni1FC3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fc4 uni1FC4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fc6 uni1FC6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fc7 uni1FC7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fc8 uni1FC8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fc9 uni1FC9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fca uni1FCA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fcb uni1FCB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fcc uni1FCC 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fcd uni1FCD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fce uni1FCE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fcf uni1FCF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd0 uni1FD0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd1 uni1FD1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd2 uni1FD2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd3 uni1FD3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd6 uni1FD6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd7 uni1FD7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fd8 uni1FD8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fd9 uni1FD9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fda uni1FDA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fdb uni1FDB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fdd uni1FDD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fde uni1FDE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fdf uni1FDF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe0 uni1FE0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe1 uni1FE1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe2 uni1FE2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe3 uni1FE3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe4 uni1FE4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe5 uni1FE5 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe6 uni1FE6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe7 uni1FE7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fe8 uni1FE8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fe9 uni1FE9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fea uni1FEA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1feb uni1FEB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fec uni1FEC 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1fed uni1FED 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fee uni1FEE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1fef uni1FEF 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ff2 uni1FF2 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ff3 uni1FF3 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ff4 uni1FF4 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ff6 uni1FF6 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ff7 uni1FF7 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ff8 uni1FF8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ff9 uni1FF9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ffa uni1FFA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ffb uni1FFB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ffc uni1FFC 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+1ffd uni1FFD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+1ffe uni1FFE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+2000 uni2000 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2001 uni2001 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2002 uni2002 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2003 uni2003 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2004 uni2004 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2005 uni2005 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2006 uni2006 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2007 uni2007 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2008 uni2008 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2009 uni2009 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+200a uni200A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+200b uni200B 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.8 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+200c uni200C 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.8 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+200d uni200D 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.8 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+200e uni200E 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.8 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+200f uni200F 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.8 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2010 uni2010 1.5 U+2011 uni2011 1.5 U+2012 figuredash 1.5 U+2013 endash original U+2014 emdash original U+2015 uni2015 1.5 U+2016 uni2016 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2017 underscoredbl 2.3 U+2018 quoteleft original U+2019 quoteright original U+201a quotesinglbase original U+201b quotereversed 2.3 U+201c quotedblleft original U+201d quotedblright original U+201e quotedblbase original U+201f uni201F 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+2020 dagger original U+2021 daggerdbl original U+2022 bullet original U+2023 uni2023 2.2 U+2024 onedotenleader 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2025 twodotenleader 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2026 ellipsis original U+2027 uni2027 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2028 uni2028 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2029 uni2029 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+202a uni202A 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+202b uni202B 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+202c uni202C 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+202d uni202D 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+202e uni202E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+202f uni202F 2.11 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.23 (Serif Italic Condensed) U+2030 perthousand original U+2031 uni2031 2.1 U+2032 minute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2033 second 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2034 uni2034 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2035 uni2035 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2036 uni2036 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2037 uni2037 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2038 uni2038 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2039 guilsinglleft original U+203a guilsinglright original U+203b uni203B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+203c exclamdbl 2.0 U+203d uni203D 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.11 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.14 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+203e uni203E 2.3 U+203f uni203F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2040 uni2040 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2041 uni2041 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2042 uni2042 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2043 uni2043 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2044 fraction 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2045 uni2045 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2046 uni2046 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2047 uni2047 2.0 U+2048 uni2048 2.0 U+2049 uni2049 2.0 U+204a uni204A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+204b uni204B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+204c uni204C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+204d uni204D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+204e uni204E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+204f uni204F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2050 uni2050 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2051 uni2051 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2052 uni2052 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2053 uni2053 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2054 uni2054 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2055 uni2055 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2056 uni2056 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2057 uni2057 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2058 uni2058 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2059 uni2059 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+205a uni205A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+205b uni205B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+205c uni205C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+205d uni205D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+205e uni205E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+205f uni205F 2.14 U+2060 uni2060 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2061 uni2061 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2062 uni2062 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2063 uni2063 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2064 uni2064 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+206a uni206A 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+206b uni206B 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+206c uni206C 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+206d uni206D 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+206e uni206E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+206f uni206F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2070 uni2070 2.2 U+2071 uni2071 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2074 uni2074 2.2 U+2075 uni2075 2.2 U+2076 uni2076 2.2 U+2077 uni2077 2.2 U+2078 uni2078 2.2 U+2079 uni2079 2.2 U+207a uni207A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+207b uni207B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+207c uni207C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+207d uni207D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+207e uni207E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+207f uni207F 1.14 U+2080 uni2080 2.4 U+2081 uni2081 2.4 U+2082 uni2082 2.4 U+2083 uni2083 2.4 U+2084 uni2084 2.4 U+2085 uni2085 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2086 uni2086 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2087 uni2087 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2088 uni2088 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2089 uni2089 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+208a uni208A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+208b uni208B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+208c uni208C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+208d uni208D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+208e uni208E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2090 uni2090 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2091 uni2091 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2092 uni2092 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2093 uni2093 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2094 uni2094 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.17 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.18 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2095 uni2095 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2096 uni2096 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2097 uni2097 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2098 uni2098 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2099 uni2099 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+209a uni209A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+209b uni209B 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+209c uni209C 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+20a0 uni20A0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a1 colonmonetary 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a2 uni20A2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a3 franc 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a4 lira 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a5 uni20A5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a6 uni20A6 2.3 U+20a7 peseta 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a8 uni20A8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20a9 uni20A9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20aa uni20AA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20ab dong 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20ac Euro original U+20ad uni20AD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20ae uni20AE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20af uni20AF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20b0 uni20B0 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20b1 uni20B1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.14 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+20b2 uni20B2 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20b3 uni20B3 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+20b4 uni20B4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+20b5 uni20B5 2.2 U+20b8 uni20B8 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+20b9 uni20B9 2.32 U+20ba uni20BA 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+20d0 uni20D0 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+20d1 uni20D1 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+20d6 uni20D6 2.8 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+20d7 uni20D7 2.8 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+20db uni20DB 2.23 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+20dc uni20DC 2.23 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+20e1 uni20E1 2.23 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2100 uni2100 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2101 uni2101 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2102 uni2102 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.16 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Condensed) U+2103 uni2103 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2104 uni2104 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2105 uni2105 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2106 uni2106 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2107 uni2107 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2108 uni2108 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2109 uni2109 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+210b uni210B 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+210c uni210C 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+210d uni210D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+210e uni210E 2.5 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight) U+210f uni210F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.28 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2110 uni2110 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2111 Ifraktur 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2112 uni2112 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2113 uni2113 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2114 uni2114 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2115 uni2115 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2116 uni2116 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2117 uni2117 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2118 weierstrass 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2119 uni2119 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+211a uni211A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+211b uni211B 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+211c Rfraktur 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+211d uni211D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+211e prescription 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+211f uni211F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2120 uni2120 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2121 uni2121 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2122 trademark original U+2123 uni2123 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2124 uni2124 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2125 uni2125 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2126 uni2126 2.2 U+2127 uni2127 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2128 uni2128 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2129 uni2129 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+212a uni212A 2.2 U+212b uni212B 2.2 U+212c uni212C 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+212d uni212D 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+212e estimated 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+212f uni212F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2130 uni2130 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2131 uni2131 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2132 uni2132 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2133 uni2133 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2134 uni2134 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2135 aleph 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2136 uni2136 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2137 uni2137 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2138 uni2138 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2139 uni2139 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+213a uni213A 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+213b uni213B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+213c uni213C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+213d uni213D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+213e uni213E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+213f uni213F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+2140 uni2140 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+2141 uni2141 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans ExtraLight) U+2142 uni2142 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans ExtraLight) U+2143 uni2143 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans ExtraLight) U+2144 uni2144 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans ExtraLight) U+2145 uni2145 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+2146 uni2146 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+2147 uni2147 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+2148 uni2148 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2149 uni2149 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.22 (Serif, Serif Condensed) U+214b uni214B 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+214e uni214E 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2150 uni2150 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2151 uni2151 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2152 uni2152 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2153 onethird 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2154 twothirds 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2155 uni2155 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2156 uni2156 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2157 uni2157 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2158 uni2158 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2159 uni2159 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+215a uni215A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+215b oneeighth 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+215c threeeighths 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+215d fiveeighths 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+215e seveneighths 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+215f uni215F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.6 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2160 uni2160 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2161 uni2161 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2162 uni2162 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2163 uni2163 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2164 uni2164 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2165 uni2165 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2166 uni2166 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2167 uni2167 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2168 uni2168 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2169 uni2169 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+216a uni216A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+216b uni216B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+216c uni216C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+216d uni216D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+216e uni216E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+216f uni216F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2170 uni2170 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2171 uni2171 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2172 uni2172 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2173 uni2173 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2174 uni2174 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2175 uni2175 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2176 uni2176 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2177 uni2177 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2178 uni2178 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2179 uni2179 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+217a uni217A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+217b uni217B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+217c uni217C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+217d uni217D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+217e uni217E 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+217f uni217F 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2180 uni2180 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2181 uni2181 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+2182 uni2182 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans ExtraLight) U+2183 uni2183 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2184 uni2184 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2185 uni2185 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2189 uni2189 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2190 arrowleft 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2191 arrowup 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2192 arrowright 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2193 arrowdown 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2194 arrowboth 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2195 arrowupdn 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2196 uni2196 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2197 uni2197 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2198 uni2198 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2199 uni2199 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+219a uni219A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+219b uni219B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+219c uni219C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+219d uni219D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+219e uni219E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+219f uni219F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a0 uni21A0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a1 uni21A1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a2 uni21A2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a3 uni21A3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a4 uni21A4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a5 uni21A5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a6 uni21A6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a7 uni21A7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a8 arrowupdnbse 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21a9 uni21A9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21aa uni21AA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ab uni21AB 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ac uni21AC 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ad uni21AD 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ae uni21AE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21af uni21AF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b0 uni21B0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b1 uni21B1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b2 uni21B2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b3 uni21B3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b4 uni21B4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b5 carriagereturn 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b6 uni21B6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b7 uni21B7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b8 uni21B8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21b9 uni21B9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ba uni21BA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21bb uni21BB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21bc uni21BC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21bd uni21BD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21be uni21BE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21bf uni21BF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c0 uni21C0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c1 uni21C1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c2 uni21C2 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c3 uni21C3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c4 uni21C4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c5 uni21C5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c6 uni21C6 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c7 uni21C7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c8 uni21C8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21c9 uni21C9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ca uni21CA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21cb uni21CB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21cc uni21CC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21cd uni21CD 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ce uni21CE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21cf uni21CF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d0 arrowdblleft 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d1 arrowdblup 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d2 arrowdblright 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d3 arrowdbldown 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d4 arrowdblboth 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d5 uni21D5 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d6 uni21D6 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d7 uni21D7 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d8 uni21D8 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21d9 uni21D9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21da uni21DA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21db uni21DB 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21dc uni21DC 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21dd uni21DD 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21de uni21DE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21df uni21DF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e0 uni21E0 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e1 uni21E1 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e2 uni21E2 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e3 uni21E3 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e4 uni21E4 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e5 uni21E5 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e6 uni21E6 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e7 uni21E7 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e8 uni21E8 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21e9 uni21E9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ea uni21EA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21eb uni21EB 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ec uni21EC 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ed uni21ED 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ee uni21EE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ef uni21EF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f0 uni21F0 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f1 uni21F1 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f2 uni21F2 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f3 uni21F3 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f4 uni21F4 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f5 uni21F5 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f6 uni21F6 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f7 uni21F7 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f8 uni21F8 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21f9 uni21F9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21fa uni21FA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21fb uni21FB 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21fc uni21FC 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21fd uni21FD 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21fe uni21FE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+21ff uni21FF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2200 universal 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2201 uni2201 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2202 partialdiff original U+2203 existential 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2204 uni2204 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2205 emptyset 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2206 Delta original U+2207 gradient 2.1 U+2208 element 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2209 notelement 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+220a uni220A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+220b suchthat 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+220c uni220C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+220d uni220D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+220e uni220E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+220f product original U+2210 uni2210 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2211 summation original U+2212 minus original U+2213 uni2213 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2214 uni2214 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2215 uni2215 original U+2216 uni2216 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2217 asteriskmath 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2218 uni2218 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2219 uni2219 original U+221a radical original U+221b uni221B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+221c uni221C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+221d proportional 2.1 U+221e infinity original U+221f orthogonal 2.1 U+2220 angle 2.3 U+2221 uni2221 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2222 uni2222 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2223 uni2223 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2224 uni2224 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2225 uni2225 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2226 uni2226 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2227 logicaland 2.1 U+2228 logicalor 2.1 U+2229 intersection 2.1 U+222a union 2.1 U+222b integral original U+222c uni222C 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+222d uni222D 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+222e uni222E 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+222f uni222F 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2230 uni2230 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2231 uni2231 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2232 uni2232 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2233 uni2233 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2234 therefore 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2235 uni2235 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2236 uni2236 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2237 uni2237 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2238 uni2238 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2239 uni2239 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+223a uni223A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+223b uni223B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+223c similar 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+223d uni223D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+223e uni223E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+223f uni223F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2240 uni2240 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2241 uni2241 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2242 uni2242 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2243 uni2243 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2244 uni2244 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2245 congruent 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2246 uni2246 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2247 uni2247 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2248 approxequal original U+2249 uni2249 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+224a uni224A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+224b uni224B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+224c uni224C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+224d uni224D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+224e uni224E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+224f uni224F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2250 uni2250 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2251 uni2251 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2252 uni2252 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2253 uni2253 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2254 uni2254 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2255 uni2255 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2256 uni2256 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2257 uni2257 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2258 uni2258 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2259 uni2259 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+225a uni225A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+225b uni225B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+225c uni225C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+225d uni225D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+225e uni225E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+225f uni225F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2260 notequal original U+2261 equivalence 2.1 U+2262 uni2262 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2263 uni2263 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2264 lessequal original U+2265 greaterequal original U+2266 uni2266 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2267 uni2267 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2268 uni2268 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2269 uni2269 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+226a uni226A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+226b uni226B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+226c uni226C 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+226d uni226D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+226e uni226E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+226f uni226F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2270 uni2270 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2271 uni2271 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2272 uni2272 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2273 uni2273 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2274 uni2274 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2275 uni2275 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2276 uni2276 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2277 uni2277 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2278 uni2278 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2279 uni2279 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+227a uni227A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+227b uni227B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+227c uni227C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+227d uni227D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+227e uni227E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+227f uni227F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2280 uni2280 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2281 uni2281 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2282 propersubset 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2283 propersuperset 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2284 notsubset 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2285 uni2285 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2286 reflexsubset 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2287 reflexsuperset 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2288 uni2288 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2289 uni2289 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+228a uni228A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+228b uni228B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.6 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+228c uni228C 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+228d uni228D 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+228e uni228E 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+228f uni228F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2290 uni2290 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2291 uni2291 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2292 uni2292 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2293 uni2293 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2294 uni2294 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2295 circleplus 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2296 uni2296 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2297 circlemultiply 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2298 uni2298 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2299 uni2299 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+229a uni229A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+229b uni229B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+229c uni229C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+229d uni229D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+229e uni229E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+229f uni229F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22a0 uni22A0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22a1 uni22A1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22a2 uni22A2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+22a3 uni22A3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+22a4 uni22A4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+22a5 perpendicular 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.32 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+22a6 uni22A6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22a7 uni22A7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22a8 uni22A8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22a9 uni22A9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22aa uni22AA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22ab uni22AB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22ac uni22AC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22ad uni22AD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22ae uni22AE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22af uni22AF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22b0 uni22B0 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b1 uni22B1 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b2 uni22B2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b3 uni22B3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b4 uni22B4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b5 uni22B5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b6 uni22B6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b7 uni22B7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b8 uni22B8 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22b9 uni22B9 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ba uni22BA 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22bb uni22BB 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22bc uni22BC 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22bd uni22BD 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22be uni22BE 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+22bf uni22BF 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+22c0 uni22C0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c1 uni22C1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c2 uni22C2 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c3 uni22C3 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c4 uni22C4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c5 dotmath 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+22c6 uni22C6 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+22c7 uni22C7 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c8 uni22C8 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22c9 uni22C9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ca uni22CA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22cb uni22CB 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22cc uni22CC 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22cd uni22CD 2.6 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.7 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+22ce uni22CE 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22cf uni22CF 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d0 uni22D0 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d1 uni22D1 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d2 uni22D2 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d3 uni22D3 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d4 uni22D4 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d5 uni22D5 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d6 uni22D6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d7 uni22D7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22d8 uni22D8 2.6 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+22d9 uni22D9 2.6 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+22da uni22DA 2.6 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.7 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+22db uni22DB 2.6 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.7 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+22dc uni22DC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22dd uni22DD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22de uni22DE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22df uni22DF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e0 uni22E0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e1 uni22E1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e2 uni22E2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e3 uni22E3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e4 uni22E4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e5 uni22E5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e6 uni22E6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e7 uni22E7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e8 uni22E8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22e9 uni22E9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+22ea uni22EA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22eb uni22EB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ec uni22EC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ed uni22ED 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ee uni22EE 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ef uni22EF 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f0 uni22F0 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f1 uni22F1 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f2 uni22F2 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f3 uni22F3 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f4 uni22F4 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f5 uni22F5 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f6 uni22F6 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f7 uni22F7 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f8 uni22F8 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22f9 uni22F9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22fa uni22FA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22fb uni22FB 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22fc uni22FC 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22fd uni22FD 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22fe uni22FE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+22ff uni22FF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2300 uni2300 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2301 uni2301 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2302 house 1.14 U+2303 uni2303 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2304 uni2304 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2305 uni2305 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2306 uni2306 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2307 uni2307 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2308 uni2308 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2309 uni2309 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+230a uni230A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+230b uni230B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+230c uni230C 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+230d uni230D 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+230e uni230E 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+230f uni230F 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2310 revlogicalnot 1.14 U+2311 uni2311 1.15 U+2312 uni2312 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2313 uni2313 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2314 uni2314 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2315 uni2315 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2318 uni2318 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2319 uni2319 1.14 U+231c uni231C 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+231d uni231D 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+231e uni231E 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+231f uni231F 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2320 integraltp 2.3 U+2321 integralbt 2.3 U+2324 uni2324 2.16 (Sans, Sans Bold, Sans Bold Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique) 2.19 (Sans Condensed Oblique, Sans Oblique) U+2325 uni2325 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2326 uni2326 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2327 uni2327 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2328 uni2328 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2329 angleleft 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) U+232a angleright 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) U+232b uni232B 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+232c uni232C 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2335 uni2335 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2337 uni2337 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2338 uni2338 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2339 uni2339 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+233a uni233A 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+233b uni233B 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+233c uni233C 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+233d uni233D 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+233e uni233E 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2341 uni2341 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2342 uni2342 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2343 uni2343 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2344 uni2344 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2347 uni2347 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2348 uni2348 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2349 uni2349 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+234b uni234B 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+234c uni234C 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+234d uni234D 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2350 uni2350 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2352 uni2352 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2353 uni2353 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2354 uni2354 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2357 uni2357 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2358 uni2358 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2359 uni2359 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+235a uni235A 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+235b uni235B 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+235c uni235C 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+235e uni235E 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+235f uni235F 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2360 uni2360 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2363 uni2363 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2364 uni2364 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2365 uni2365 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2368 uni2368 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2369 uni2369 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+236b uni236B 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+236c uni236C 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+236d uni236D 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+236e uni236E 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+236f uni236F 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2370 uni2370 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2373 uni2373 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2374 uni2374 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2375 uni2375 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2376 uni2376 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2377 uni2377 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2378 uni2378 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2379 uni2379 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+237a uni237A 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+237d uni237D 1.15 U+2380 uni2380 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2381 uni2381 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2382 uni2382 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2383 uni2383 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2387 uni2387 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2388 uni2388 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2389 uni2389 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+238a uni238A 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+238b uni238B 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2394 uni2394 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2395 uni2395 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+239b uni239B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+239c uni239C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+239d uni239D 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+239e uni239E 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+239f uni239F 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a0 uni23A0 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a1 uni23A1 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a2 uni23A2 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a3 uni23A3 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a4 uni23A4 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a5 uni23A5 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a6 uni23A6 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a7 uni23A7 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a8 uni23A8 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23a9 uni23A9 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23aa uni23AA 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23ab uni23AB 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23ac uni23AC 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23ad uni23AD 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+23ae uni23AE 2.3 U+23ce uni23CE 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+23cf uni23CF 2.3 U+23e3 uni23E3 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+23e5 uni23E5 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+23e8 uni23E8 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2422 uni2422 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2423 uni2423 1.6 U+2460 uni2460 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2461 uni2461 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2462 uni2462 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2463 uni2463 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2464 uni2464 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2465 uni2465 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2466 uni2466 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2467 uni2467 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2468 uni2468 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2469 uni2469 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2500 SF100000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2501 uni2501 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2502 SF110000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2503 uni2503 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2504 uni2504 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2505 uni2505 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2506 uni2506 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2507 uni2507 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2508 uni2508 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2509 uni2509 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+250a uni250A 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+250b uni250B 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+250c SF010000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+250d uni250D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+250e uni250E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+250f uni250F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2510 SF030000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2511 uni2511 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2512 uni2512 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2513 uni2513 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2514 SF020000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2515 uni2515 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2516 uni2516 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2517 uni2517 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2518 SF040000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2519 uni2519 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+251a uni251A 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+251b uni251B 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+251c SF080000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+251d uni251D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+251e uni251E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+251f uni251F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2520 uni2520 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2521 uni2521 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2522 uni2522 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2523 uni2523 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2524 SF090000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2525 uni2525 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2526 uni2526 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2527 uni2527 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2528 uni2528 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2529 uni2529 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+252a uni252A 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+252b uni252B 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+252c SF060000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+252d uni252D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+252e uni252E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+252f uni252F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2530 uni2530 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2531 uni2531 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2532 uni2532 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2533 uni2533 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2534 SF070000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2535 uni2535 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2536 uni2536 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2537 uni2537 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2538 uni2538 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2539 uni2539 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+253a uni253A 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+253b uni253B 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+253c SF050000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+253d uni253D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+253e uni253E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+253f uni253F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2540 uni2540 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2541 uni2541 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2542 uni2542 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2543 uni2543 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2544 uni2544 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2545 uni2545 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2546 uni2546 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2547 uni2547 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2548 uni2548 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2549 uni2549 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+254a uni254A 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+254b uni254B 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+254c uni254C 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+254d uni254D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+254e uni254E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+254f uni254F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2550 SF430000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2551 SF240000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2552 SF510000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2553 SF520000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2554 SF390000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2555 SF220000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2556 SF210000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2557 SF250000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2558 SF500000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2559 SF490000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+255a SF380000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+255b SF280000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+255c SF270000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+255d SF260000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+255e SF360000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+255f SF370000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2560 SF420000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2561 SF190000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2562 SF200000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2563 SF230000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2564 SF470000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2565 SF480000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2566 SF410000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2567 SF450000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2568 SF460000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2569 SF400000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+256a SF540000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+256b SF530000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+256c SF440000 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+256d uni256D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+256e uni256E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+256f uni256F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2570 uni2570 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2571 uni2571 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2572 uni2572 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2573 uni2573 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2574 uni2574 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2575 uni2575 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2576 uni2576 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2577 uni2577 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2578 uni2578 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2579 uni2579 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+257a uni257A 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+257b uni257B 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+257c uni257C 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+257d uni257D 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+257e uni257E 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+257f uni257F 1.12 (Sans Mono, Sans Mono Oblique) 2.21 (Sans, Sans Condensed, Sans Condensed Oblique, Sans Oblique, Serif, Serif Condensed, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2580 upblock 1.14 U+2581 uni2581 1.14 U+2582 uni2582 1.14 U+2583 uni2583 1.14 U+2584 dnblock 1.14 U+2585 uni2585 1.14 U+2586 uni2586 1.14 U+2587 uni2587 1.14 U+2588 block 1.14 U+2589 uni2589 1.14 U+258a uni258A 1.14 U+258b uni258B 1.14 U+258c lfblock 1.14 U+258d uni258D 1.14 U+258e uni258E 1.14 U+258f uni258F 1.14 U+2590 rtblock 1.14 U+2591 ltshade 1.15 U+2592 shade 1.15 U+2593 dkshade 1.15 U+2594 uni2594 1.14 U+2595 uni2595 1.14 U+2596 uni2596 1.14 U+2597 uni2597 1.14 U+2598 uni2598 1.14 U+2599 uni2599 1.14 U+259a uni259A 1.14 U+259b uni259B 1.14 U+259c uni259C 1.14 U+259d uni259D 1.14 U+259e uni259E 1.14 U+259f uni259F 1.14 U+25a0 filledbox 2.3 U+25a1 H22073 2.3 U+25a2 uni25A2 2.3 U+25a3 uni25A3 2.3 U+25a4 uni25A4 2.3 U+25a5 uni25A5 2.3 U+25a6 uni25A6 2.3 U+25a7 uni25A7 2.3 U+25a8 uni25A8 2.3 U+25a9 uni25A9 2.3 U+25aa H18543 2.3 U+25ab H18551 2.3 U+25ac filledrect 2.3 U+25ad uni25AD 2.3 U+25ae uni25AE 2.3 U+25af uni25AF 2.3 U+25b0 uni25B0 2.3 U+25b1 uni25B1 2.3 U+25b2 triagup 2.3 U+25b3 uni25B3 2.3 U+25b4 uni25B4 2.3 U+25b5 uni25B5 2.3 U+25b6 uni25B6 2.3 U+25b7 uni25B7 2.3 U+25b8 uni25B8 2.3 U+25b9 uni25B9 2.3 U+25ba triagrt 2.3 U+25bb uni25BB 2.3 U+25bc triagdn 2.3 U+25bd uni25BD 2.3 U+25be uni25BE 2.3 U+25bf uni25BF 2.3 U+25c0 uni25C0 2.3 U+25c1 uni25C1 2.3 U+25c2 uni25C2 2.3 U+25c3 uni25C3 2.3 U+25c4 triaglf 2.3 U+25c5 uni25C5 2.3 U+25c6 uni25C6 2.3 U+25c7 uni25C7 2.3 U+25c8 uni25C8 2.3 U+25c9 uni25C9 2.3 U+25ca lozenge original U+25cb circle 2.3 U+25cc uni25CC 2.3 U+25cd uni25CD 2.3 U+25ce uni25CE 2.3 U+25cf H18533 2.3 U+25d0 uni25D0 2.3 U+25d1 uni25D1 2.3 U+25d2 uni25D2 2.3 U+25d3 uni25D3 2.3 U+25d4 uni25D4 2.3 U+25d5 uni25D5 2.3 U+25d6 uni25D6 2.3 U+25d7 uni25D7 2.3 U+25d8 invbullet 2.2 U+25d9 invcircle 2.3 U+25da uni25DA 2.3 U+25db uni25DB 2.3 U+25dc uni25DC 2.3 U+25dd uni25DD 2.3 U+25de uni25DE 2.3 U+25df uni25DF 2.3 U+25e0 uni25E0 2.3 U+25e1 uni25E1 2.3 U+25e2 uni25E2 2.3 U+25e3 uni25E3 2.3 U+25e4 uni25E4 2.3 U+25e5 uni25E5 2.3 U+25e6 openbullet 2.2 U+25e7 uni25E7 2.3 U+25e8 uni25E8 2.3 U+25e9 uni25E9 2.3 U+25ea uni25EA 2.3 U+25eb uni25EB 2.3 U+25ec uni25EC 2.3 U+25ed uni25ED 2.3 U+25ee uni25EE 2.3 U+25ef uni25EF 2.3 U+25f0 uni25F0 2.3 U+25f1 uni25F1 2.3 U+25f2 uni25F2 2.3 U+25f3 uni25F3 2.3 U+25f4 uni25F4 2.3 U+25f5 uni25F5 2.3 U+25f6 uni25F6 2.3 U+25f7 uni25F7 2.3 U+25f8 uni25F8 2.3 U+25f9 uni25F9 2.3 U+25fa uni25FA 2.3 U+25fb uni25FB 2.3 U+25fc uni25FC 2.3 U+25fd uni25FD 2.3 U+25fe uni25FE 2.3 U+25ff uni25FF 2.3 U+2600 uni2600 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2601 uni2601 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2602 uni2602 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2603 uni2603 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2604 uni2604 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2605 uni2605 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2606 uni2606 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2607 uni2607 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2608 uni2608 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2609 uni2609 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+260a uni260A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+260b uni260B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+260c uni260C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+260d uni260D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+260e uni260E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+260f uni260F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2610 uni2610 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2611 uni2611 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2612 uni2612 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2613 uni2613 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2614 uni2614 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2615 uni2615 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2616 uni2616 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2617 uni2617 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2618 uni2618 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2619 uni2619 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+261a uni261A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+261b uni261B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+261c uni261C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+261d uni261D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+261e uni261E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+261f uni261F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2620 uni2620 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2621 uni2621 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2622 uni2622 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2623 uni2623 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2624 uni2624 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2625 uni2625 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2626 uni2626 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2627 uni2627 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2628 uni2628 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2629 uni2629 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+262a uni262A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+262b uni262B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+262c uni262C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+262d uni262D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+262e uni262E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+262f uni262F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2630 uni2630 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2631 uni2631 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2632 uni2632 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2633 uni2633 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2634 uni2634 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2635 uni2635 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2636 uni2636 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2637 uni2637 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2638 uni2638 1.15 U+2639 uni2639 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+263a smileface 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+263b invsmileface 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+263c sun 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+263d uni263D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+263e uni263E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+263f uni263F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2640 female 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2641 uni2641 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2642 male 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2643 uni2643 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2644 uni2644 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2645 uni2645 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2646 uni2646 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2647 uni2647 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2648 uni2648 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2649 uni2649 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+264a uni264A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+264b uni264B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+264c uni264C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+264d uni264D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+264e uni264E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+264f uni264F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2650 uni2650 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2651 uni2651 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2652 uni2652 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2653 uni2653 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2654 uni2654 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2655 uni2655 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2656 uni2656 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2657 uni2657 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2658 uni2658 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2659 uni2659 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+265a uni265A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+265b uni265B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+265c uni265C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+265d uni265D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+265e uni265E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+265f uni265F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2660 spade 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2661 uni2661 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2662 uni2662 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2663 club 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2664 uni2664 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2665 heart 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2666 diamond 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2667 uni2667 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2668 uni2668 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2669 uni2669 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+266a musicalnote 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+266b musicalnotedbl 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+266c uni266C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+266d uni266D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+266e uni266E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+266f uni266F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2670 uni2670 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2671 uni2671 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2672 uni2672 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2673 uni2673 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2674 uni2674 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2675 uni2675 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2676 uni2676 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2677 uni2677 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2678 uni2678 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2679 uni2679 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+267a uni267A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+267b uni267B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+267c uni267C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+267d uni267D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+267e uni267E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+267f uni267F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2680 uni2680 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold) U+2681 uni2681 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold) U+2682 uni2682 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold) U+2683 uni2683 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold) U+2684 uni2684 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold) U+2685 uni2685 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.7 (Sans Mono, Sans Mono Bold) U+2686 uni2686 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2687 uni2687 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2688 uni2688 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2689 uni2689 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+268a uni268A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+268b uni268B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+268c uni268C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+268d uni268D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+268e uni268E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+268f uni268F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+2690 uni2690 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2691 uni2691 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2692 uni2692 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2693 uni2693 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2694 uni2694 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2695 uni2695 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2696 uni2696 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2697 uni2697 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2698 uni2698 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2699 uni2699 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+269a uni269A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+269b uni269B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+269c uni269C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+26a0 uni26A0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+26a1 uni26A1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+26a2 uni26A2 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a3 uni26A3 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a4 uni26A4 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a5 uni26A5 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a6 uni26A6 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a7 uni26A7 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a8 uni26A8 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26a9 uni26A9 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26aa uni26AA 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26ab uni26AB 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26ac uni26AC 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26ad uni26AD 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26ae uni26AE 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26af uni26AF 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+26b0 uni26B0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+26b1 uni26B1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+26b2 uni26B2 2.12 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26b3 uni26B3 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26b4 uni26B4 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26b5 uni26B5 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26b6 uni26B6 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26b7 uni26B7 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26b8 uni26B8 2.29 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26c0 uni26C0 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26c1 uni26C1 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26c2 uni26C2 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26c3 uni26C3 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+26e2 uni26E2 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2701 uni2701 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2702 uni2702 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2703 uni2703 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2704 uni2704 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2706 uni2706 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2707 uni2707 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2708 uni2708 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2709 uni2709 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+270c uni270C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+270d uni270D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+270e uni270E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+270f uni270F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2710 uni2710 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2711 uni2711 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2712 uni2712 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2713 uni2713 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2714 uni2714 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2715 uni2715 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2716 uni2716 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2717 uni2717 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2718 uni2718 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2719 uni2719 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+271a uni271A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+271b uni271B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+271c uni271C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+271d uni271D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+271e uni271E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+271f uni271F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2720 uni2720 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2721 uni2721 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2722 uni2722 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2723 uni2723 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2724 uni2724 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2725 uni2725 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2726 uni2726 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2727 uni2727 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2729 uni2729 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+272a uni272A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+272b uni272B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+272c uni272C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+272d uni272D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+272e uni272E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+272f uni272F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2730 uni2730 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2731 uni2731 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2732 uni2732 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2733 uni2733 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2734 uni2734 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2735 uni2735 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2736 uni2736 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2737 uni2737 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2738 uni2738 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2739 uni2739 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+273a uni273A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+273b uni273B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+273c uni273C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+273d uni273D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+273e uni273E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+273f uni273F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2740 uni2740 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2741 uni2741 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2742 uni2742 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2743 uni2743 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2744 uni2744 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2745 uni2745 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2746 uni2746 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2747 uni2747 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2748 uni2748 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2749 uni2749 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+274a uni274A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+274b uni274B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+274d uni274D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+274f uni274F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2750 uni2750 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2751 uni2751 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2752 uni2752 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2756 uni2756 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2758 uni2758 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2759 uni2759 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+275a uni275A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+275b uni275B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+275c uni275C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+275d uni275D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+275e uni275E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2761 uni2761 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2762 uni2762 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2763 uni2763 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2764 uni2764 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2765 uni2765 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2766 uni2766 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2767 uni2767 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2768 uni2768 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2769 uni2769 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+276a uni276A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+276b uni276B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+276c uni276C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+276d uni276D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+276e uni276E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+276f uni276F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2770 uni2770 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2771 uni2771 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2772 uni2772 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2773 uni2773 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2774 uni2774 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2775 uni2775 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Sans Mono, Sans Mono Bold) U+2776 uni2776 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2777 uni2777 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2778 uni2778 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2779 uni2779 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+277a uni277A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+277b uni277B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+277c uni277C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+277d uni277D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+277e uni277E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+277f uni277F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2780 uni2780 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2781 uni2781 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2782 uni2782 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2783 uni2783 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2784 uni2784 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2785 uni2785 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2786 uni2786 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2787 uni2787 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2788 uni2788 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2789 uni2789 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+278a uni278A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+278b uni278B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+278c uni278C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+278d uni278D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+278e uni278E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+278f uni278F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2790 uni2790 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2791 uni2791 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2792 uni2792 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2793 uni2793 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2794 uni2794 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2798 uni2798 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+2799 uni2799 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+279a uni279A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+279b uni279B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+279c uni279C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+279d uni279D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+279e uni279E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+279f uni279F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a0 uni27A0 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a1 uni27A1 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27a2 uni27A2 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a3 uni27A3 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a4 uni27A4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a5 uni27A5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a6 uni27A6 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a7 uni27A7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a8 uni27A8 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27a9 uni27A9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27aa uni27AA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27ab uni27AB 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27ac uni27AC 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27ad uni27AD 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27ae uni27AE 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27af uni27AF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b1 uni27B1 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b2 uni27B2 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b3 uni27B3 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b4 uni27B4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b5 uni27B5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b6 uni27B6 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b7 uni27B7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b8 uni27B8 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27b9 uni27B9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27ba uni27BA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27bb uni27BB 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27bc uni27BC 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27bd uni27BD 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27be uni27BE 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold) U+27bf uni27BF 2.7 (Sans Mono Bold) U+27c2 uni27C2 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+27c5 uni27C5 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+27c6 uni27C6 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+27e0 uni27E0 2.3 U+27e6 uni27E6 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+27e7 uni27E7 2.15 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+27e8 uni27E8 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27e9 uni27E9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27ea uni27EA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+27eb uni27EB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+27f0 uni27F0 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f1 uni27F1 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f2 uni27F2 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f3 uni27F3 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f4 uni27F4 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f5 uni27F5 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f6 uni27F6 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f7 uni27F7 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f8 uni27F8 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27f9 uni27F9 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27fa uni27FA 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27fb uni27FB 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27fc uni27FC 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27fd uni27FD 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27fe uni27FE 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+27ff uni27FF 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2800 uni2800 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2801 uni2801 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2802 uni2802 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2803 uni2803 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2804 uni2804 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2805 uni2805 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2806 uni2806 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2807 uni2807 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2808 uni2808 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2809 uni2809 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+280a uni280A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+280b uni280B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+280c uni280C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+280d uni280D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+280e uni280E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+280f uni280F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2810 uni2810 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2811 uni2811 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2812 uni2812 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2813 uni2813 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2814 uni2814 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2815 uni2815 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2816 uni2816 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2817 uni2817 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2818 uni2818 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2819 uni2819 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+281a uni281A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+281b uni281B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+281c uni281C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+281d uni281D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+281e uni281E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+281f uni281F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2820 uni2820 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2821 uni2821 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2822 uni2822 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2823 uni2823 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2824 uni2824 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2825 uni2825 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2826 uni2826 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2827 uni2827 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2828 uni2828 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2829 uni2829 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+282a uni282A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+282b uni282B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+282c uni282C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+282d uni282D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+282e uni282E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+282f uni282F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2830 uni2830 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2831 uni2831 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2832 uni2832 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2833 uni2833 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2834 uni2834 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2835 uni2835 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2836 uni2836 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2837 uni2837 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2838 uni2838 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2839 uni2839 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+283a uni283A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+283b uni283B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+283c uni283C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+283d uni283D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+283e uni283E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+283f uni283F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2840 uni2840 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2841 uni2841 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2842 uni2842 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2843 uni2843 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2844 uni2844 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2845 uni2845 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2846 uni2846 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2847 uni2847 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2848 uni2848 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2849 uni2849 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+284a uni284A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+284b uni284B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+284c uni284C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+284d uni284D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+284e uni284E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+284f uni284F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2850 uni2850 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2851 uni2851 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2852 uni2852 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2853 uni2853 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2854 uni2854 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2855 uni2855 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2856 uni2856 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2857 uni2857 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2858 uni2858 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2859 uni2859 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+285a uni285A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+285b uni285B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+285c uni285C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+285d uni285D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+285e uni285E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+285f uni285F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2860 uni2860 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2861 uni2861 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2862 uni2862 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2863 uni2863 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2864 uni2864 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2865 uni2865 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2866 uni2866 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2867 uni2867 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2868 uni2868 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2869 uni2869 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+286a uni286A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+286b uni286B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+286c uni286C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+286d uni286D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+286e uni286E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+286f uni286F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2870 uni2870 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2871 uni2871 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2872 uni2872 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2873 uni2873 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2874 uni2874 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2875 uni2875 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2876 uni2876 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2877 uni2877 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2878 uni2878 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2879 uni2879 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+287a uni287A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+287b uni287B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+287c uni287C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+287d uni287D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+287e uni287E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+287f uni287F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2880 uni2880 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2881 uni2881 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2882 uni2882 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2883 uni2883 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2884 uni2884 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2885 uni2885 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2886 uni2886 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2887 uni2887 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2888 uni2888 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2889 uni2889 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+288a uni288A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+288b uni288B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+288c uni288C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+288d uni288D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+288e uni288E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+288f uni288F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2890 uni2890 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2891 uni2891 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2892 uni2892 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2893 uni2893 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2894 uni2894 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2895 uni2895 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2896 uni2896 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2897 uni2897 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2898 uni2898 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2899 uni2899 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+289a uni289A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+289b uni289B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+289c uni289C 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+289d uni289D 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+289e uni289E 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+289f uni289F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a0 uni28A0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a1 uni28A1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a2 uni28A2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a3 uni28A3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a4 uni28A4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a5 uni28A5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a6 uni28A6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a7 uni28A7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a8 uni28A8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28a9 uni28A9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28aa uni28AA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ab uni28AB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ac uni28AC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ad uni28AD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ae uni28AE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28af uni28AF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b0 uni28B0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b1 uni28B1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b2 uni28B2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b3 uni28B3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b4 uni28B4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b5 uni28B5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b6 uni28B6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b7 uni28B7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b8 uni28B8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28b9 uni28B9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ba uni28BA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28bb uni28BB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28bc uni28BC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28bd uni28BD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28be uni28BE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28bf uni28BF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c0 uni28C0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c1 uni28C1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c2 uni28C2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c3 uni28C3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c4 uni28C4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c5 uni28C5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c6 uni28C6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c7 uni28C7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c8 uni28C8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28c9 uni28C9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ca uni28CA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28cb uni28CB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28cc uni28CC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28cd uni28CD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ce uni28CE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28cf uni28CF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d0 uni28D0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d1 uni28D1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d2 uni28D2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d3 uni28D3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d4 uni28D4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d5 uni28D5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d6 uni28D6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d7 uni28D7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d8 uni28D8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28d9 uni28D9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28da uni28DA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28db uni28DB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28dc uni28DC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28dd uni28DD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28de uni28DE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28df uni28DF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e0 uni28E0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e1 uni28E1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e2 uni28E2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e3 uni28E3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e4 uni28E4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e5 uni28E5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e6 uni28E6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e7 uni28E7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e8 uni28E8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28e9 uni28E9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ea uni28EA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28eb uni28EB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ec uni28EC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ed uni28ED 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ee uni28EE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ef uni28EF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f0 uni28F0 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f1 uni28F1 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f2 uni28F2 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f3 uni28F3 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f4 uni28F4 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f5 uni28F5 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f6 uni28F6 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f7 uni28F7 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f8 uni28F8 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28f9 uni28F9 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28fa uni28FA 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28fb uni28FB 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28fc uni28FC 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28fd uni28FD 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28fe uni28FE 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+28ff uni28FF 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2900 uni2900 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2901 uni2901 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2902 uni2902 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2903 uni2903 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2904 uni2904 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2905 uni2905 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2906 uni2906 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2907 uni2907 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2908 uni2908 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2909 uni2909 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+290a uni290A 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+290b uni290B 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+290c uni290C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+290d uni290D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+290e uni290E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+290f uni290F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2910 uni2910 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2911 uni2911 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2912 uni2912 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2913 uni2913 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2914 uni2914 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2915 uni2915 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2916 uni2916 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2917 uni2917 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2918 uni2918 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2919 uni2919 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+291a uni291A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+291b uni291B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+291c uni291C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+291d uni291D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+291e uni291E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+291f uni291F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2920 uni2920 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2921 uni2921 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2922 uni2922 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2923 uni2923 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2924 uni2924 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2925 uni2925 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2926 uni2926 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2927 uni2927 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2928 uni2928 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2929 uni2929 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+292a uni292A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+292b uni292B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+292c uni292C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+292d uni292D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+292e uni292E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+292f uni292F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2930 uni2930 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2931 uni2931 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2932 uni2932 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2933 uni2933 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2934 uni2934 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2935 uni2935 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2936 uni2936 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2937 uni2937 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2938 uni2938 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2939 uni2939 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+293a uni293A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+293b uni293B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+293c uni293C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+293d uni293D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+293e uni293E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+293f uni293F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2940 uni2940 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2941 uni2941 2.13 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2942 uni2942 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2943 uni2943 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2944 uni2944 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2945 uni2945 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2946 uni2946 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2947 uni2947 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2948 uni2948 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2949 uni2949 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+294a uni294A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+294b uni294B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+294c uni294C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+294d uni294D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+294e uni294E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+294f uni294F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2950 uni2950 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2951 uni2951 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2952 uni2952 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2953 uni2953 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2954 uni2954 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2955 uni2955 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2956 uni2956 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2957 uni2957 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2958 uni2958 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2959 uni2959 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+295a uni295A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+295b uni295B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+295c uni295C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+295d uni295D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+295e uni295E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+295f uni295F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2960 uni2960 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2961 uni2961 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2962 uni2962 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2963 uni2963 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2964 uni2964 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2965 uni2965 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2966 uni2966 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2967 uni2967 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2968 uni2968 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2969 uni2969 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+296a uni296A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+296b uni296B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+296c uni296C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+296d uni296D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+296e uni296E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+296f uni296F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2970 uni2970 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2971 uni2971 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2972 uni2972 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2973 uni2973 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2974 uni2974 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2975 uni2975 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2976 uni2976 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2977 uni2977 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2978 uni2978 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2979 uni2979 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+297a uni297A 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+297b uni297B 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+297c uni297C 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+297d uni297D 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+297e uni297E 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+297f uni297F 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2983 uni2983 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2984 uni2984 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+29ce uni29CE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29cf uni29CF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29d0 uni29D0 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29d1 uni29D1 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29d2 uni29D2 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29d3 uni29D3 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29d4 uni29D4 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29d5 uni29D5 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+29eb uni29EB 2.2 U+29fa uni29FA 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+29fb uni29FB 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+2a00 uni2A00 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a01 uni2A01 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a02 uni2A02 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a0c uni2A0C 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2a0d uni2A0D 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2a0e uni2A0E 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.9 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2a0f uni2A0F 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a10 uni2A10 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a11 uni2A11 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a12 uni2A12 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a13 uni2A13 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a14 uni2A14 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a15 uni2A15 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a16 uni2A16 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a17 uni2A17 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a18 uni2A18 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a19 uni2A19 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a1a uni2A1A 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a1b uni2A1B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a1c uni2A1C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a2f uni2A2F 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2a6a uni2A6A 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2a6b uni2A6B 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2a7d uni2A7D 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a7e uni2A7E 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a7f uni2A7F 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a80 uni2A80 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a81 uni2A81 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a82 uni2A82 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a83 uni2A83 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a84 uni2A84 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a85 uni2A85 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a86 uni2A86 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a87 uni2A87 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a88 uni2A88 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a89 uni2A89 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a8a uni2A8A 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a8b uni2A8B 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a8c uni2A8C 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a8d uni2A8D 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a8e uni2A8E 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a8f uni2A8F 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a90 uni2A90 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a91 uni2A91 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a92 uni2A92 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a93 uni2A93 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a94 uni2A94 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a95 uni2A95 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a96 uni2A96 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a97 uni2A97 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a98 uni2A98 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a99 uni2A99 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a9a uni2A9A 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a9b uni2A9B 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a9c uni2A9C 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a9d uni2A9D 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a9e uni2A9E 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2a9f uni2A9F 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2aa0 uni2AA0 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2aae uni2AAE 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2aaf uni2AAF 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab0 uni2AB0 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab1 uni2AB1 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab2 uni2AB2 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab3 uni2AB3 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab4 uni2AB4 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab5 uni2AB5 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab6 uni2AB6 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab7 uni2AB7 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab8 uni2AB8 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2ab9 uni2AB9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2aba uni2ABA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2af9 uni2AF9 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2afa uni2AFA 2.7 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2b00 uni2B00 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b01 uni2B01 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b02 uni2B02 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b03 uni2B03 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b04 uni2B04 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b05 uni2B05 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b06 uni2B06 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b07 uni2B07 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b08 uni2B08 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b09 uni2B09 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b0a uni2B0A 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b0b uni2B0B 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b0c uni2B0C 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b0d uni2B0D 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+2b0e uni2B0E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b0f uni2B0F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b10 uni2B10 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b11 uni2B11 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2b12 uni2B12 2.3 U+2b13 uni2B13 2.3 U+2b14 uni2B14 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b15 uni2B15 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b16 uni2B16 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b17 uni2B17 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b18 uni2B18 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b19 uni2B19 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b1a uni2B1A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+2b1f uni2B1F 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+2b20 uni2B20 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2b21 uni2B21 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2b22 uni2B22 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2b23 uni2B23 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2b24 uni2B24 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+2b53 uni2B53 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+2b54 uni2B54 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+2c60 uni2C60 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c61 uni2C61 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c62 uni2C62 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2c63 uni2C63 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c64 uni2C64 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2c65 uni2C65 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2c66 uni2C66 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2c67 uni2C67 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2c68 uni2C68 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2c69 uni2C69 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2c6a uni2C6A 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2c6b uni2C6B 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2c6c uni2C6C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+2c6d uni2C6D 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c6e uni2C6E 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+2c6f uni2C6F 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2c70 uni2C70 2.31 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c71 uni2C71 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.31 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c72 uni2C72 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.31 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c73 uni2C73 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.31 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c74 uni2C74 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+2c75 uni2C75 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2c76 uni2C76 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2c77 uni2C77 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.18 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) U+2c79 uni2C79 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2c7a uni2C7A 2.27 U+2c7b uni2C7B 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c7c uni2C7C 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2c7d uni2C7D 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic) U+2c7e uni2C7E 2.31 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2c7f uni2C7F 2.31 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2d00 uni2D00 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d01 uni2D01 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d02 uni2D02 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d03 uni2D03 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d04 uni2D04 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d05 uni2D05 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d06 uni2D06 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d07 uni2D07 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d08 uni2D08 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d09 uni2D09 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d0a uni2D0A 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d0b uni2D0B 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d0c uni2D0C 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d0d uni2D0D 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d0e uni2D0E 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d0f uni2D0F 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d10 uni2D10 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d11 uni2D11 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d12 uni2D12 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d13 uni2D13 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d14 uni2D14 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d15 uni2D15 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d16 uni2D16 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d17 uni2D17 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d18 uni2D18 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d19 uni2D19 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d1a uni2D1A 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d1b uni2D1B 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d1c uni2D1C 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d1d uni2D1D 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d1e uni2D1E 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d1f uni2D1F 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d20 uni2D20 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d21 uni2D21 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d22 uni2D22 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d23 uni2D23 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d24 uni2D24 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d25 uni2D25 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+2d30 uni2D30 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d31 uni2D31 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d32 uni2D32 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d33 uni2D33 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d34 uni2D34 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d35 uni2D35 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d36 uni2D36 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d37 uni2D37 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d38 uni2D38 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d39 uni2D39 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d3a uni2D3A 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d3b uni2D3B 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d3c uni2D3C 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d3d uni2D3D 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d3e uni2D3E 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d3f uni2D3F 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d40 uni2D40 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d41 uni2D41 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d42 uni2D42 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d43 uni2D43 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d44 uni2D44 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d45 uni2D45 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d46 uni2D46 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d47 uni2D47 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d48 uni2D48 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d49 uni2D49 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d4a uni2D4A 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d4b uni2D4B 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d4c uni2D4C 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d4d uni2D4D 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d4e uni2D4E 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d4f uni2D4F 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d50 uni2D50 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d51 uni2D51 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d52 uni2D52 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d53 uni2D53 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d54 uni2D54 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d55 uni2D55 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d56 uni2D56 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d57 uni2D57 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d58 uni2D58 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d59 uni2D59 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d5a uni2D5A 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d5b uni2D5B 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d5c uni2D5C 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d5d uni2D5D 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d5e uni2D5E 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d5f uni2D5F 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d60 uni2D60 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d61 uni2D61 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d62 uni2D62 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d63 uni2D63 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d64 uni2D64 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d65 uni2D65 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2d6f uni2D6F 2.18 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+2e18 uni2E18 2.26 U+2e1e uni2E1E 2.34 (Sans, Sans Condensed) U+2e1f uni2E1F 2.34 (Sans Bold, Sans Bold Oblique, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+2e22 uni2E22 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.30 (Sans Bold) 2.31 (Serif Condensed Italic) U+2e23 uni2E23 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.30 (Sans Bold) 2.31 (Serif Condensed Italic) U+2e24 uni2E24 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.30 (Sans Bold) 2.31 (Serif Condensed Italic) U+2e25 uni2E25 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.30 (Sans Bold) 2.31 (Serif Condensed Italic) U+2e2e uni2E2E 2.26 U+4dc0 uni4DC0 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc1 uni4DC1 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc2 uni4DC2 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc3 uni4DC3 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc4 uni4DC4 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc5 uni4DC5 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc6 uni4DC6 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc7 uni4DC7 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc8 uni4DC8 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dc9 uni4DC9 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dca uni4DCA 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dcb uni4DCB 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dcc uni4DCC 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dcd uni4DCD 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dce uni4DCE 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dcf uni4DCF 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd0 uni4DD0 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd1 uni4DD1 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd2 uni4DD2 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd3 uni4DD3 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd4 uni4DD4 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd5 uni4DD5 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd6 uni4DD6 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd7 uni4DD7 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd8 uni4DD8 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dd9 uni4DD9 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dda uni4DDA 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4ddb uni4DDB 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4ddc uni4DDC 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4ddd uni4DDD 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dde uni4DDE 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4ddf uni4DDF 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de0 uni4DE0 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de1 uni4DE1 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de2 uni4DE2 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de3 uni4DE3 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de4 uni4DE4 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de5 uni4DE5 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de6 uni4DE6 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de7 uni4DE7 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de8 uni4DE8 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4de9 uni4DE9 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dea uni4DEA 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4deb uni4DEB 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dec uni4DEC 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4ded uni4DED 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dee uni4DEE 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4def uni4DEF 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df0 uni4DF0 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df1 uni4DF1 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df2 uni4DF2 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df3 uni4DF3 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df4 uni4DF4 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df5 uni4DF5 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df6 uni4DF6 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df7 uni4DF7 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df8 uni4DF8 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4df9 uni4DF9 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dfa uni4DFA 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dfb uni4DFB 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dfc uni4DFC 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dfd uni4DFD 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dfe uni4DFE 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+4dff uni4DFF 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a4d0 uniA4D0 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d1 uniA4D1 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d2 uniA4D2 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d3 uniA4D3 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d4 uniA4D4 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d5 uniA4D5 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d6 uniA4D6 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d7 uniA4D7 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d8 uniA4D8 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4d9 uniA4D9 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4da uniA4DA 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4db uniA4DB 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4dc uniA4DC 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4dd uniA4DD 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4de uniA4DE 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4df uniA4DF 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e0 uniA4E0 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e1 uniA4E1 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e2 uniA4E2 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e3 uniA4E3 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e4 uniA4E4 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e5 uniA4E5 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e6 uniA4E6 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e7 uniA4E7 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e8 uniA4E8 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4e9 uniA4E9 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4ea uniA4EA 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4eb uniA4EB 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4ec uniA4EC 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4ed uniA4ED 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4ee uniA4EE 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4ef uniA4EF 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f0 uniA4F0 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f1 uniA4F1 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f2 uniA4F2 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f3 uniA4F3 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f4 uniA4F4 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f5 uniA4F5 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f6 uniA4F6 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f7 uniA4F7 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f8 uniA4F8 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4f9 uniA4F9 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4fa uniA4FA 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4fb uniA4FB 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4fc uniA4FC 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4fd uniA4FD 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4fe uniA4FE 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a4ff uniA4FF 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a644 uniA644 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a645 uniA645 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a646 uniA646 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a647 uniA647 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a64c uniA64C 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a64d uniA64D 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a650 uniA650 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a651 uniA651 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a654 uniA654 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a655 uniA655 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a656 uniA656 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a657 uniA657 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a662 uniA662 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a663 uniA663 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a664 uniA664 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a665 uniA665 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a666 uniA666 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a667 uniA667 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a668 uniA668 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a669 uniA669 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a66a uniA66A 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a66b uniA66B 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a66c uniA66C 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a66d uniA66D 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a66e uniA66E 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a68a uniA68A 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a68b uniA68B 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a68c uniA68C 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a68d uniA68D 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a694 uniA694 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a695 uniA695 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+a708 uniA708 2.27 U+a709 uniA709 2.27 U+a70a uniA70A 2.27 U+a70b uniA70B 2.27 U+a70c uniA70C 2.27 U+a70d uniA70D 2.27 U+a70e uniA70E 2.27 U+a70f uniA70F 2.27 U+a710 uniA710 2.27 U+a711 uniA711 2.27 U+a712 uniA712 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a713 uniA713 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a714 uniA714 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a715 uniA715 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a716 uniA716 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+a71b uniA71B 2.27 U+a71c uniA71C 2.27 U+a71d uniA71D 2.27 U+a71e uniA71E 2.27 U+a71f uniA71F 2.27 U+a722 uniA722 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a723 uniA723 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a724 uniA724 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a725 uniA725 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a726 uniA726 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a727 uniA727 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a728 uniA728 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a729 uniA729 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a72a uniA72A 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a72b uniA72B 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a72c uniA72C 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a72d uniA72D 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a72e uniA72E 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a72f uniA72F 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a730 uniA730 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a731 uniA731 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a732 uniA732 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a733 uniA733 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a734 uniA734 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a735 uniA735 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a736 uniA736 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a737 uniA737 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a738 uniA738 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a739 uniA739 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a73a uniA73A 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a73b uniA73B 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a73c uniA73C 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a73d uniA73D 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a73e uniA73E 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a73f uniA73F 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a740 uniA740 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a741 uniA741 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a746 uniA746 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a747 uniA747 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a748 uniA748 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a749 uniA749 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a74a uniA74A 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a74b uniA74B 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a74e uniA74E 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a74f uniA74F 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a750 uniA750 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a751 uniA751 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a752 uniA752 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a753 uniA753 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a756 uniA756 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a757 uniA757 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a764 uniA764 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a765 uniA765 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a766 uniA766 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a767 uniA767 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a768 uniA768 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a769 uniA769 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a77b uniA77B 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a77c uniA77C 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a780 uniA780 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a781 uniA781 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a782 uniA782 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a783 uniA783 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a784 uniA784 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a785 uniA785 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a786 uniA786 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a787 uniA787 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a789 uniA789 2.28 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a78a uniA78A 2.28 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a78b uniA78B 2.26 U+a78c uniA78C 2.26 U+a78d uniA78D 2.31 U+a78e uniA78E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique) U+a790 uniA790 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a791 uniA791 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7a0 uniA7A0 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a1 uniA7A1 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a2 uniA7A2 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a3 uniA7A3 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a4 uniA7A4 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a5 uniA7A5 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a6 uniA7A6 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a7 uniA7A7 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a8 uniA7A8 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7a9 uniA7A9 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+a7aa uniA7AA 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7fa uniA7FA 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7fb uniA7FB 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7fc uniA7FC 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7fd uniA7FD 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7fe uniA7FE 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+a7ff uniA7FF 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) U+e000 uniE000 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e001 uniE001 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e002 uniE002 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e003 uniE003 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e004 uniE004 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e005 uniE005 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e006 uniE006 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e007 uniE007 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e008 uniE008 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+e009 uniE009 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e00a uniE00A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e00b uniE00B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e00c uniE00C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e00d uniE00D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e00e uniE00E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e00f uniE00F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e010 uniE010 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e011 uniE011 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e012 uniE012 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e013 uniE013 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e014 uniE014 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) U+e015 uniE015 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e016 uniE016 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e017 uniE017 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e018 uniE018 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e019 uniE019 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e01a uniE01A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e01b uniE01B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e01c uniE01C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+e01d uniE01D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef00 uni02E5.5 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef01 uni02E6.5 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef02 uni02E7.5 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef03 uni02E8.5 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef04 uni02E9.5 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef05 uni02E5.4 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef06 uni02E6.4 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef07 uni02E7.4 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef08 uni02E8.4 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef09 uni02E9.4 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef0a uni02E5.3 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef0b uni02E6.3 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef0c uni02E7.3 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef0d uni02E8.3 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef0e uni02E9.3 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef0f uni02E5.2 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef10 uni02E6.2 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef11 uni02E7.2 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef12 uni02E8.2 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef13 uni02E9.2 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef14 uni02E5.1 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef15 uni02E6.1 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef16 uni02E7.1 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef17 uni02E8.1 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef18 uni02E9.1 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+ef19 stem 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f000 uniF000 2.10 (Sans) 2.11 (Sans Condensed) U+f001 uniF001 2.10 (Sans) 2.11 (Sans Condensed) U+f002 uniF002 2.33 (Sans, Sans Condensed) U+f003 uniF003 2.33 (Sans, Sans Condensed) U+f208 uniF208 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f20a uniF20A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f215 uniF215 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f216 uniF216 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f217 uniF217 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f21a uniF21A 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f21b uniF21B 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f25f uniF25F 2.6 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f400 uniF400 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f401 uniF401 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f402 uniF402 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f403 uniF403 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f404 uniF404 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f405 uniF405 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f406 uniF406 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f407 uniF407 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f408 uniF408 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f409 uniF409 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f40a uniF40A 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f40b uniF40B 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f40c uniF40C 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f40d uniF40D 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f40e uniF40E 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f40f uniF40F 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f410 uniF410 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f411 uniF411 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f412 uniF412 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f413 uniF413 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f414 uniF414 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f415 uniF415 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f416 uniF416 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f417 uniF417 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f418 uniF418 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f419 uniF419 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f41a uniF41A 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f41b uniF41B 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f41c uniF41C 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f41d uniF41D 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f41e uniF41E 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f41f uniF41F 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f420 uniF420 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f421 uniF421 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f422 uniF422 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f423 uniF423 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f424 uniF424 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f425 uniF425 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) U+f426 uniF426 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f428 uniF428 2.28 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f429 uniF429 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f42a uniF42A 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f42b uniF42B 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f42c uniF42C 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f42d uniF42D 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f42e uniF42E 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f42f uniF42F 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f430 uniF430 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f431 uniF431 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f432 uniF432 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f433 uniF433 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f434 uniF434 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f435 uniF435 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f436 uniF436 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f437 uniF437 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f438 uniF438 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f439 uniF439 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f43a uniF43A 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f43b uniF43B 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f43c uniF43C 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f43d uniF43D 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f43e uniF43E 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f43f uniF43F 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f440 uniF440 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f441 uniF441 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+f5c5 uniF5C5 2.9 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+f6c4 uniF6C4 2.10 (Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed) U+f6c5 uniF6C5 2.5 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.9 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold, Sans Condensed Oblique, Sans Oblique) 2.18 (Sans ExtraLight) 2.23 (Serif Italic Condensed) U+f6c6 uniF6C6 2.5 (Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+f6c7 uniF6C7 2.11 (Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+f6c8 uniF6C8 2.11 (Serif Bold Italic, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+f6d1 cyrBreve 2.5 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+f6d4 cyrbreve 2.5 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fb00 uniFB00 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.8 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fb01 fi original U+fb02 fl original U+fb03 uniFB03 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.8 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fb04 uniFB04 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.8 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fb05 uniFB05 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fb06 uniFB06 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.8 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fb13 uniFB13 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb14 uniFB14 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb15 uniFB15 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb16 uniFB16 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb17 uniFB17 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb1d uniFB1D 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb1e uniFB1E 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb1f uniFB1F 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb20 uniFB20 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb21 uniFB21 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb22 uniFB22 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb23 uniFB23 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb24 uniFB24 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb25 uniFB25 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb26 uniFB26 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb27 uniFB27 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb28 uniFB28 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb29 uniFB29 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb2a uniFB2A 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb2b uniFB2B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb2c uniFB2C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb2d uniFB2D 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb2e uniFB2E 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb2f uniFB2F 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb30 uniFB30 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb31 uniFB31 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb32 uniFB32 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb33 uniFB33 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb34 uniFB34 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb35 uniFB35 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb36 uniFB36 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb37 uniFB37 2.11 (Sans Condensed Oblique, Sans Oblique) 2.33 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+fb38 uniFB38 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb39 uniFB39 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb3a uniFB3A 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb3b uniFB3B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb3c uniFB3C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb3d uniFB3D 2.33 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb3e uniFB3E 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb3f uniFB3F 2.33 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb40 uniFB40 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb41 uniFB41 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb42 uniFB42 2.33 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb43 uniFB43 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb44 uniFB44 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb45 uniFB45 2.33 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb46 uniFB46 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb47 uniFB47 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb48 uniFB48 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb49 uniFB49 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb4a uniFB4A 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb4b uniFB4B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb4c uniFB4C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb4d uniFB4D 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb4e uniFB4E 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fb4f uniFB4F 2.16 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.17 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) U+fb52 uniFB52 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb53 uniFB53 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb54 uniFB54 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb55 uniFB55 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb56 uniFB56 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb57 uniFB57 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb58 uniFB58 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb59 uniFB59 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb5a uniFB5A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb5b uniFB5B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb5c uniFB5C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb5d uniFB5D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb5e uniFB5E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb5f uniFB5F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb60 uniFB60 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb61 uniFB61 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb62 uniFB62 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb63 uniFB63 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb64 uniFB64 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb65 uniFB65 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb66 uniFB66 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb67 uniFB67 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb68 uniFB68 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb69 uniFB69 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb6a uniFB6A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb6b uniFB6B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb6c uniFB6C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb6d uniFB6D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb6e uniFB6E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb6f uniFB6F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb70 uniFB70 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb71 uniFB71 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb72 uniFB72 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb73 uniFB73 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb74 uniFB74 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb75 uniFB75 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb76 uniFB76 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb77 uniFB77 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb78 uniFB78 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb79 uniFB79 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb7a uniFB7A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb7b uniFB7B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb7c uniFB7C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb7d uniFB7D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb7e uniFB7E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb7f uniFB7F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb80 uniFB80 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb81 uniFB81 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb82 uniFB82 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb83 uniFB83 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb84 uniFB84 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb85 uniFB85 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb86 uniFB86 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb87 uniFB87 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb88 uniFB88 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb89 uniFB89 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb8a uniFB8A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb8b uniFB8B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb8c uniFB8C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb8d uniFB8D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb8e uniFB8E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb8f uniFB8F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb90 uniFB90 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb91 uniFB91 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb92 uniFB92 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb93 uniFB93 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb94 uniFB94 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb95 uniFB95 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb96 uniFB96 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb97 uniFB97 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb98 uniFB98 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb99 uniFB99 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb9a uniFB9A 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb9b uniFB9B 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb9c uniFB9C 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb9d uniFB9D 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fb9e uniFB9E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fb9f uniFB9F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fba0 uniFBA0 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fba1 uniFBA1 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fba2 uniFBA2 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fba3 uniFBA3 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbaa uniFBAA 2.16 (Sans Mono, Sans Mono Bold) 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbab uniFBAB 2.16 (Sans Mono, Sans Mono Bold) 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbac uniFBAC 2.16 (Sans Mono, Sans Mono Bold) 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbad uniFBAD 2.16 (Sans Mono, Sans Mono Bold) 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbd3 uniFBD3 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbd4 uniFBD4 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbd5 uniFBD5 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbd6 uniFBD6 2.31 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbd9 uniFBD9 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbda uniFBDA 2.7 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) U+fbe8 uniFBE8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fbe9 uniFBE9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fbfc uniFBFC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fbfd uniFBFD 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fbfe uniFBFE 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fbff uniFBFF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe00 uniFE00 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe01 uniFE01 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe02 uniFE02 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe03 uniFE03 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe04 uniFE04 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe05 uniFE05 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe06 uniFE06 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe07 uniFE07 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe08 uniFE08 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe09 uniFE09 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe0a uniFE0A 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe0b uniFE0B 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe0c uniFE0C 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe0d uniFE0D 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe0e uniFE0E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe0f uniFE0F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fe20 uniFE20 2.21 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fe21 uniFE21 2.21 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fe22 uniFE22 2.21 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fe23 uniFE23 2.21 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+fe70 uniFE70 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe71 uniFE71 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe72 uniFE72 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe73 uniFE73 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe74 uniFE74 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe76 uniFE76 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe77 uniFE77 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe78 uniFE78 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe79 uniFE79 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe7a uniFE7A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe7b uniFE7B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe7c uniFE7C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe7d uniFE7D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe7e uniFE7E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe7f uniFE7F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe80 uniFE80 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe81 uniFE81 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe82 uniFE82 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe83 uniFE83 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe84 uniFE84 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe85 uniFE85 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe86 uniFE86 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe87 uniFE87 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe88 uniFE88 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe89 uniFE89 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe8a uniFE8A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe8b uniFE8B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe8c uniFE8C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe8d uniFE8D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe8e uniFE8E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe8f uniFE8F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe90 uniFE90 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe91 uniFE91 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe92 uniFE92 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe93 uniFE93 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe94 uniFE94 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe95 uniFE95 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe96 uniFE96 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe97 uniFE97 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe98 uniFE98 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe99 uniFE99 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe9a uniFE9A 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe9b uniFE9B 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe9c uniFE9C 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe9d uniFE9D 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe9e uniFE9E 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fe9f uniFE9F 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea0 uniFEA0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea1 uniFEA1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea2 uniFEA2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea3 uniFEA3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea4 uniFEA4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea5 uniFEA5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea6 uniFEA6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea7 uniFEA7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea8 uniFEA8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fea9 uniFEA9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feaa uniFEAA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feab uniFEAB 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feac uniFEAC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fead uniFEAD 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feae uniFEAE 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feaf uniFEAF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb0 uniFEB0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb1 uniFEB1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb2 uniFEB2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb3 uniFEB3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb4 uniFEB4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb5 uniFEB5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb6 uniFEB6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb7 uniFEB7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb8 uniFEB8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feb9 uniFEB9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feba uniFEBA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+febb uniFEBB 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+febc uniFEBC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+febd uniFEBD 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+febe uniFEBE 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+febf uniFEBF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec0 uniFEC0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec1 uniFEC1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec2 uniFEC2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec3 uniFEC3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec4 uniFEC4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec5 uniFEC5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec6 uniFEC6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec7 uniFEC7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec8 uniFEC8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fec9 uniFEC9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feca uniFECA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fecb uniFECB 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fecc uniFECC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fecd uniFECD 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fece uniFECE 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fecf uniFECF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed0 uniFED0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed1 uniFED1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed2 uniFED2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed3 uniFED3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed4 uniFED4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed5 uniFED5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed6 uniFED6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed7 uniFED7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed8 uniFED8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fed9 uniFED9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feda uniFEDA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fedb uniFEDB 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fedc uniFEDC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fedd uniFEDD 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fede uniFEDE 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fedf uniFEDF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee0 uniFEE0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee1 uniFEE1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee2 uniFEE2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee3 uniFEE3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee4 uniFEE4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee5 uniFEE5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee6 uniFEE6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee7 uniFEE7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee8 uniFEE8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fee9 uniFEE9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feea uniFEEA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feeb uniFEEB 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feec uniFEEC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feed uniFEED 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feee uniFEEE 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feef uniFEEF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef0 uniFEF0 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef1 uniFEF1 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef2 uniFEF2 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef3 uniFEF3 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef4 uniFEF4 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef5 uniFEF5 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef6 uniFEF6 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef7 uniFEF7 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef8 uniFEF8 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fef9 uniFEF9 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fefa uniFEFA 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fefb uniFEFB 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fefc uniFEFC 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+feff uniFEFF 2.4 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.16 (Sans Mono, Sans Mono Bold) U+fff9 uniFFF9 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fffa uniFFFA 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fffb uniFFFB 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fffc uniFFFC 2.22 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) U+fffd uniFFFD 1.12 U+10300 u10300 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10301 u10301 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10302 u10302 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10303 u10303 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10304 u10304 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10305 u10305 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10306 u10306 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10307 u10307 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10308 u10308 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10309 u10309 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1030a u1030A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1030b u1030B 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1030c u1030C 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1030d u1030D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1030e u1030E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1030f u1030F 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10310 u10310 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10311 u10311 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10312 u10312 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10313 u10313 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10314 u10314 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10315 u10315 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10316 u10316 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10317 u10317 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10318 u10318 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10319 u10319 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1031a u1031A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1031b u1031B 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1031c u1031C 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1031d u1031D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1031e u1031E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10320 u10320 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10321 u10321 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10322 u10322 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+10323 u10323 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d300 u1D300 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d301 u1D301 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d302 u1D302 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d303 u1D303 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d304 u1D304 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d305 u1D305 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d306 u1D306 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d307 u1D307 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d308 u1D308 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d309 u1D309 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d30a u1D30A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d30b u1D30B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d30c u1D30C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d30d u1D30D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d30e u1D30E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d30f u1D30F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d310 u1D310 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d311 u1D311 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d312 u1D312 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d313 u1D313 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d314 u1D314 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d315 u1D315 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d316 u1D316 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d317 u1D317 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d318 u1D318 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d319 u1D319 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d31a u1D31A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d31b u1D31B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d31c u1D31C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d31d u1D31D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d31e u1D31E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d31f u1D31F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d320 u1D320 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d321 u1D321 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d322 u1D322 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d323 u1D323 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d324 u1D324 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d325 u1D325 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d326 u1D326 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d327 u1D327 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d328 u1D328 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d329 u1D329 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d32a u1D32A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d32b u1D32B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d32c u1D32C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d32d u1D32D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d32e u1D32E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d32f u1D32F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d330 u1D330 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d331 u1D331 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d332 u1D332 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d333 u1D333 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d334 u1D334 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d335 u1D335 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d336 u1D336 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d337 u1D337 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d338 u1D338 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d339 u1D339 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d33a u1D33A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d33b u1D33B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d33c u1D33C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d33d u1D33D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d33e u1D33E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d33f u1D33F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d340 u1D340 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d341 u1D341 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d342 u1D342 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d343 u1D343 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d344 u1D344 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d345 u1D345 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d346 u1D346 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d347 u1D347 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d348 u1D348 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d349 u1D349 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d34a u1D34A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d34b u1D34B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d34c u1D34C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d34d u1D34D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d34e u1D34E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d34f u1D34F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d350 u1D350 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d351 u1D351 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d352 u1D352 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d353 u1D353 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d354 u1D354 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d355 u1D355 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d356 u1D356 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1d400 u1D400 2.23 (Serif Bold, Serif Condensed Bold) U+1d401 u1D401 2.23 (Serif Bold, Serif Condensed Bold) U+1d402 u1D402 2.23 (Serif Bold, Serif Condensed Bold) U+1d403 u1D403 2.23 (Serif Bold, Serif Condensed Bold) U+1d404 u1D404 2.23 (Serif Bold, Serif Condensed Bold) U+1d405 u1D405 2.23 (Serif Bold, Serif Condensed Bold) U+1d406 u1D406 2.23 (Serif Bold, Serif Condensed Bold) U+1d407 u1D407 2.23 (Serif Bold, Serif Condensed Bold) U+1d408 u1D408 2.23 (Serif Bold, Serif Condensed Bold) U+1d409 u1D409 2.23 (Serif Bold, Serif Condensed Bold) U+1d40a u1D40A 2.23 (Serif Bold, Serif Condensed Bold) U+1d40b u1D40B 2.23 (Serif Bold, Serif Condensed Bold) U+1d40c u1D40C 2.23 (Serif Bold, Serif Condensed Bold) U+1d40d u1D40D 2.23 (Serif Bold, Serif Condensed Bold) U+1d40e u1D40E 2.23 (Serif Bold, Serif Condensed Bold) U+1d40f u1D40F 2.23 (Serif Bold, Serif Condensed Bold) U+1d410 u1D410 2.23 (Serif Bold, Serif Condensed Bold) U+1d411 u1D411 2.23 (Serif Bold, Serif Condensed Bold) U+1d412 u1D412 2.23 (Serif Bold, Serif Condensed Bold) U+1d413 u1D413 2.23 (Serif Bold, Serif Condensed Bold) U+1d414 u1D414 2.23 (Serif Bold, Serif Condensed Bold) U+1d415 u1D415 2.23 (Serif Bold, Serif Condensed Bold) U+1d416 u1D416 2.23 (Serif Bold, Serif Condensed Bold) U+1d417 u1D417 2.23 (Serif Bold, Serif Condensed Bold) U+1d418 u1D418 2.23 (Serif Bold, Serif Condensed Bold) U+1d419 u1D419 2.23 (Serif Bold, Serif Condensed Bold) U+1d41a u1D41A 2.23 (Serif Bold, Serif Condensed Bold) U+1d41b u1D41B 2.23 (Serif Bold, Serif Condensed Bold) U+1d41c u1D41C 2.23 (Serif Bold, Serif Condensed Bold) U+1d41d u1D41D 2.23 (Serif Bold, Serif Condensed Bold) U+1d41e u1D41E 2.23 (Serif Bold, Serif Condensed Bold) U+1d41f u1D41F 2.23 (Serif Bold, Serif Condensed Bold) U+1d420 u1D420 2.23 (Serif Bold, Serif Condensed Bold) U+1d421 u1D421 2.23 (Serif Bold, Serif Condensed Bold) U+1d422 u1D422 2.23 (Serif Bold, Serif Condensed Bold) U+1d423 u1D423 2.23 (Serif Bold, Serif Condensed Bold) U+1d424 u1D424 2.23 (Serif Bold, Serif Condensed Bold) U+1d425 u1D425 2.23 (Serif Bold, Serif Condensed Bold) U+1d426 u1D426 2.23 (Serif Bold, Serif Condensed Bold) U+1d427 u1D427 2.23 (Serif Bold, Serif Condensed Bold) U+1d428 u1D428 2.23 (Serif Bold, Serif Condensed Bold) U+1d429 u1D429 2.23 (Serif Bold, Serif Condensed Bold) U+1d42a u1D42A 2.23 (Serif Bold, Serif Condensed Bold) U+1d42b u1D42B 2.23 (Serif Bold, Serif Condensed Bold) U+1d42c u1D42C 2.23 (Serif Bold, Serif Condensed Bold) U+1d42d u1D42D 2.23 (Serif Bold, Serif Condensed Bold) U+1d42e u1D42E 2.23 (Serif Bold, Serif Condensed Bold) U+1d42f u1D42F 2.23 (Serif Bold, Serif Condensed Bold) U+1d430 u1D430 2.23 (Serif Bold, Serif Condensed Bold) U+1d431 u1D431 2.23 (Serif Bold, Serif Condensed Bold) U+1d432 u1D432 2.23 (Serif Bold, Serif Condensed Bold) U+1d433 u1D433 2.23 (Serif Bold, Serif Condensed Bold) U+1d434 u1D434 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d435 u1D435 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d436 u1D436 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d437 u1D437 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d438 u1D438 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d439 u1D439 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d43a u1D43A 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d43b u1D43B 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d43c u1D43C 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d43d u1D43D 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d43e u1D43E 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d43f u1D43F 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d440 u1D440 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d441 u1D441 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d442 u1D442 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d443 u1D443 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d444 u1D444 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d445 u1D445 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d446 u1D446 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d447 u1D447 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d448 u1D448 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d449 u1D449 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d44a u1D44A 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d44b u1D44B 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d44c u1D44C 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d44d u1D44D 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d44e u1D44E 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d44f u1D44F 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d450 u1D450 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d451 u1D451 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d452 u1D452 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d453 u1D453 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d454 u1D454 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d456 u1D456 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d457 u1D457 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d458 u1D458 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d459 u1D459 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d45a u1D45A 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d45b u1D45B 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d45c u1D45C 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d45d u1D45D 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d45e u1D45E 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d45f u1D45F 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d460 u1D460 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d461 u1D461 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d462 u1D462 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d463 u1D463 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d464 u1D464 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d465 u1D465 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d466 u1D466 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d467 u1D467 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d468 u1D468 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d469 u1D469 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d46a u1D46A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d46b u1D46B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d46c u1D46C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d46d u1D46D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d46e u1D46E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d46f u1D46F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d470 u1D470 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d471 u1D471 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d472 u1D472 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d473 u1D473 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d474 u1D474 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d475 u1D475 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d476 u1D476 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d477 u1D477 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d478 u1D478 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d479 u1D479 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d47a u1D47A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d47b u1D47B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d47c u1D47C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d47d u1D47D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d47e u1D47E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d47f u1D47F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d480 u1D480 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d481 u1D481 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d482 u1D482 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d483 u1D483 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d484 u1D484 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d485 u1D485 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d486 u1D486 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d487 u1D487 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d488 u1D488 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d489 u1D489 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d48a u1D48A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d48b u1D48B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d48c u1D48C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d48d u1D48D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d48e u1D48E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d48f u1D48F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d490 u1D490 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d491 u1D491 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d492 u1D492 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d493 u1D493 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d494 u1D494 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d495 u1D495 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d496 u1D496 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d497 u1D497 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d498 u1D498 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d499 u1D499 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d49a u1D49A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d49b u1D49B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d538 u1D538 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d539 u1D539 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d53b u1D53B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d53c u1D53C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d53d u1D53D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d53e u1D53E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d540 u1D540 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d541 u1D541 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d542 u1D542 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d543 u1D543 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d544 u1D544 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d546 u1D546 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d54a u1D54A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d54b u1D54B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d54c u1D54C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d54d u1D54D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d54e u1D54E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d54f u1D54F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d550 u1D550 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d552 u1D552 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d553 u1D553 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d554 u1D554 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d555 u1D555 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d556 u1D556 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d557 u1D557 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d558 u1D558 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d559 u1D559 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d55a u1D55A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) U+1d55b u1D55B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d55c u1D55C 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d55d u1D55D 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d55e u1D55E 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d55f u1D55F 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d560 u1D560 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d561 u1D561 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d562 u1D562 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d563 u1D563 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d564 u1D564 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d565 u1D565 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d566 u1D566 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d567 u1D567 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d568 u1D568 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d569 u1D569 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d56a u1D56A 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d56b u1D56B 2.18 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.22 (Serif, Serif Condensed) U+1d5a0 u1D5A0 2.23 (Sans, Sans Condensed) U+1d5a1 u1D5A1 2.23 (Sans, Sans Condensed) U+1d5a2 u1D5A2 2.23 (Sans, Sans Condensed) U+1d5a3 u1D5A3 2.23 (Sans, Sans Condensed) U+1d5a4 u1D5A4 2.23 (Sans, Sans Condensed) U+1d5a5 u1D5A5 2.23 (Sans, Sans Condensed) U+1d5a6 u1D5A6 2.23 (Sans, Sans Condensed) U+1d5a7 u1D5A7 2.23 (Sans, Sans Condensed) U+1d5a8 u1D5A8 2.23 (Sans, Sans Condensed) U+1d5a9 u1D5A9 2.23 (Sans, Sans Condensed) U+1d5aa u1D5AA 2.23 (Sans, Sans Condensed) U+1d5ab u1D5AB 2.23 (Sans, Sans Condensed) U+1d5ac u1D5AC 2.23 (Sans, Sans Condensed) U+1d5ad u1D5AD 2.23 (Sans, Sans Condensed) U+1d5ae u1D5AE 2.23 (Sans, Sans Condensed) U+1d5af u1D5AF 2.23 (Sans, Sans Condensed) U+1d5b0 u1D5B0 2.23 (Sans, Sans Condensed) U+1d5b1 u1D5B1 2.23 (Sans, Sans Condensed) U+1d5b2 u1D5B2 2.23 (Sans, Sans Condensed) U+1d5b3 u1D5B3 2.23 (Sans, Sans Condensed) U+1d5b4 u1D5B4 2.23 (Sans, Sans Condensed) U+1d5b5 u1D5B5 2.23 (Sans, Sans Condensed) U+1d5b6 u1D5B6 2.23 (Sans, Sans Condensed) U+1d5b7 u1D5B7 2.23 (Sans, Sans Condensed) U+1d5b8 u1D5B8 2.23 (Sans, Sans Condensed) U+1d5b9 u1D5B9 2.23 (Sans, Sans Condensed) U+1d5ba u1D5BA 2.23 (Sans, Sans Condensed) U+1d5bb u1D5BB 2.23 (Sans, Sans Condensed) U+1d5bc u1D5BC 2.23 (Sans, Sans Condensed) U+1d5bd u1D5BD 2.23 (Sans, Sans Condensed) U+1d5be u1D5BE 2.23 (Sans, Sans Condensed) U+1d5bf u1D5BF 2.23 (Sans, Sans Condensed) U+1d5c0 u1D5C0 2.23 (Sans, Sans Condensed) U+1d5c1 u1D5C1 2.23 (Sans, Sans Condensed) U+1d5c2 u1D5C2 2.23 (Sans, Sans Condensed) U+1d5c3 u1D5C3 2.23 (Sans, Sans Condensed) U+1d5c4 u1D5C4 2.23 (Sans, Sans Condensed) U+1d5c5 u1D5C5 2.23 (Sans, Sans Condensed) U+1d5c6 u1D5C6 2.23 (Sans, Sans Condensed) U+1d5c7 u1D5C7 2.23 (Sans, Sans Condensed) U+1d5c8 u1D5C8 2.23 (Sans, Sans Condensed) U+1d5c9 u1D5C9 2.23 (Sans, Sans Condensed) U+1d5ca u1D5CA 2.23 (Sans, Sans Condensed) U+1d5cb u1D5CB 2.23 (Sans, Sans Condensed) U+1d5cc u1D5CC 2.23 (Sans, Sans Condensed) U+1d5cd u1D5CD 2.23 (Sans, Sans Condensed) U+1d5ce u1D5CE 2.23 (Sans, Sans Condensed) U+1d5cf u1D5CF 2.23 (Sans, Sans Condensed) U+1d5d0 u1D5D0 2.23 (Sans, Sans Condensed) U+1d5d1 u1D5D1 2.23 (Sans, Sans Condensed) U+1d5d2 u1D5D2 2.23 (Sans, Sans Condensed) U+1d5d3 u1D5D3 2.23 (Sans, Sans Condensed) U+1d5d4 u1D5D4 2.23 (Sans Bold, Sans Condensed Bold) U+1d5d5 u1D5D5 2.23 (Sans Bold, Sans Condensed Bold) U+1d5d6 u1D5D6 2.23 (Sans Bold, Sans Condensed Bold) U+1d5d7 u1D5D7 2.23 (Sans Bold, Sans Condensed Bold) U+1d5d8 u1D5D8 2.23 (Sans Bold, Sans Condensed Bold) U+1d5d9 u1D5D9 2.23 (Sans Bold, Sans Condensed Bold) U+1d5da u1D5DA 2.23 (Sans Bold, Sans Condensed Bold) U+1d5db u1D5DB 2.23 (Sans Bold, Sans Condensed Bold) U+1d5dc u1D5DC 2.23 (Sans Bold, Sans Condensed Bold) U+1d5dd u1D5DD 2.23 (Sans Bold, Sans Condensed Bold) U+1d5de u1D5DE 2.23 (Sans Bold, Sans Condensed Bold) U+1d5df u1D5DF 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e0 u1D5E0 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e1 u1D5E1 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e2 u1D5E2 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e3 u1D5E3 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e4 u1D5E4 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e5 u1D5E5 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e6 u1D5E6 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e7 u1D5E7 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e8 u1D5E8 2.23 (Sans Bold, Sans Condensed Bold) U+1d5e9 u1D5E9 2.23 (Sans Bold, Sans Condensed Bold) U+1d5ea u1D5EA 2.23 (Sans Bold, Sans Condensed Bold) U+1d5eb u1D5EB 2.23 (Sans Bold, Sans Condensed Bold) U+1d5ec u1D5EC 2.23 (Sans Bold, Sans Condensed Bold) U+1d5ed u1D5ED 2.23 (Sans Bold, Sans Condensed Bold) U+1d5ee u1D5EE 2.23 (Sans Bold, Sans Condensed Bold) U+1d5ef u1D5EF 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f0 u1D5F0 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f1 u1D5F1 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f2 u1D5F2 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f3 u1D5F3 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f4 u1D5F4 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f5 u1D5F5 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f6 u1D5F6 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f7 u1D5F7 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f8 u1D5F8 2.23 (Sans Bold, Sans Condensed Bold) U+1d5f9 u1D5F9 2.23 (Sans Bold, Sans Condensed Bold) U+1d5fa u1D5FA 2.23 (Sans Bold, Sans Condensed Bold) U+1d5fb u1D5FB 2.23 (Sans Bold, Sans Condensed Bold) U+1d5fc u1D5FC 2.23 (Sans Bold, Sans Condensed Bold) U+1d5fd u1D5FD 2.23 (Sans Bold, Sans Condensed Bold) U+1d5fe u1D5FE 2.23 (Sans Bold, Sans Condensed Bold) U+1d5ff u1D5FF 2.23 (Sans Bold, Sans Condensed Bold) U+1d600 u1D600 2.23 (Sans Bold, Sans Condensed Bold) U+1d601 u1D601 2.23 (Sans Bold, Sans Condensed Bold) U+1d602 u1D602 2.23 (Sans Bold, Sans Condensed Bold) U+1d603 u1D603 2.23 (Sans Bold, Sans Condensed Bold) U+1d604 u1D604 2.23 (Sans Bold, Sans Condensed Bold) U+1d605 u1D605 2.23 (Sans Bold, Sans Condensed Bold) U+1d606 u1D606 2.23 (Sans Bold, Sans Condensed Bold) U+1d607 u1D607 2.23 (Sans Bold, Sans Condensed Bold) U+1d608 u1D608 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d609 u1D609 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d60a u1D60A 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d60b u1D60B 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d60c u1D60C 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d60d u1D60D 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d60e u1D60E 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d60f u1D60F 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d610 u1D610 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d611 u1D611 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d612 u1D612 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d613 u1D613 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d614 u1D614 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d615 u1D615 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d616 u1D616 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d617 u1D617 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d618 u1D618 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d619 u1D619 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d61a u1D61A 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d61b u1D61B 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d61c u1D61C 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d61d u1D61D 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d61e u1D61E 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d61f u1D61F 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d620 u1D620 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d621 u1D621 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d622 u1D622 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d623 u1D623 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d624 u1D624 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d625 u1D625 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d626 u1D626 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d627 u1D627 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d628 u1D628 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d629 u1D629 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d62a u1D62A 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d62b u1D62B 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d62c u1D62C 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d62d u1D62D 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d62e u1D62E 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d62f u1D62F 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d630 u1D630 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d631 u1D631 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d632 u1D632 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d633 u1D633 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d634 u1D634 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d635 u1D635 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d636 u1D636 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d637 u1D637 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d638 u1D638 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d639 u1D639 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d63a u1D63A 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d63b u1D63B 2.23 (Sans Condensed Oblique, Sans Oblique) U+1d63c u1D63C 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d63d u1D63D 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d63e u1D63E 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d63f u1D63F 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d640 u1D640 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d641 u1D641 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d642 u1D642 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d643 u1D643 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d644 u1D644 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d645 u1D645 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d646 u1D646 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d647 u1D647 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d648 u1D648 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d649 u1D649 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d64a u1D64A 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d64b u1D64B 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d64c u1D64C 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d64d u1D64D 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d64e u1D64E 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d64f u1D64F 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d650 u1D650 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d651 u1D651 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d652 u1D652 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d653 u1D653 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d654 u1D654 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d655 u1D655 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d656 u1D656 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d657 u1D657 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d658 u1D658 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d659 u1D659 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d65a u1D65A 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d65b u1D65B 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d65c u1D65C 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d65d u1D65D 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d65e u1D65E 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d65f u1D65F 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d660 u1D660 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d661 u1D661 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d662 u1D662 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d663 u1D663 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d664 u1D664 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d665 u1D665 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d666 u1D666 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d667 u1D667 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d668 u1D668 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d669 u1D669 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d66a u1D66A 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d66b u1D66B 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d66c u1D66C 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d66d u1D66D 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d66e u1D66E 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d66f u1D66F 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d670 u1D670 2.23 (Sans Mono) U+1d671 u1D671 2.23 (Sans Mono) U+1d672 u1D672 2.23 (Sans Mono) U+1d673 u1D673 2.23 (Sans Mono) U+1d674 u1D674 2.23 (Sans Mono) U+1d675 u1D675 2.23 (Sans Mono) U+1d676 u1D676 2.23 (Sans Mono) U+1d677 u1D677 2.23 (Sans Mono) U+1d678 u1D678 2.23 (Sans Mono) U+1d679 u1D679 2.23 (Sans Mono) U+1d67a u1D67A 2.23 (Sans Mono) U+1d67b u1D67B 2.23 (Sans Mono) U+1d67c u1D67C 2.23 (Sans Mono) U+1d67d u1D67D 2.23 (Sans Mono) U+1d67e u1D67E 2.23 (Sans Mono) U+1d67f u1D67F 2.23 (Sans Mono) U+1d680 u1D680 2.23 (Sans Mono) U+1d681 u1D681 2.23 (Sans Mono) U+1d682 u1D682 2.23 (Sans Mono) U+1d683 u1D683 2.23 (Sans Mono) U+1d684 u1D684 2.23 (Sans Mono) U+1d685 u1D685 2.23 (Sans Mono) U+1d686 u1D686 2.23 (Sans Mono) U+1d687 u1D687 2.23 (Sans Mono) U+1d688 u1D688 2.23 (Sans Mono) U+1d689 u1D689 2.23 (Sans Mono) U+1d68a u1D68A 2.23 (Sans Mono) U+1d68b u1D68B 2.23 (Sans Mono) U+1d68c u1D68C 2.23 (Sans Mono) U+1d68d u1D68D 2.23 (Sans Mono) U+1d68e u1D68E 2.23 (Sans Mono) U+1d68f u1D68F 2.23 (Sans Mono) U+1d690 u1D690 2.23 (Sans Mono) U+1d691 u1D691 2.23 (Sans Mono) U+1d692 u1D692 2.23 (Sans Mono) U+1d693 u1D693 2.23 (Sans Mono) U+1d694 u1D694 2.23 (Sans Mono) U+1d695 u1D695 2.23 (Sans Mono) U+1d696 u1D696 2.23 (Sans Mono) U+1d697 u1D697 2.23 (Sans Mono) U+1d698 u1D698 2.23 (Sans Mono) U+1d699 u1D699 2.23 (Sans Mono) U+1d69a u1D69A 2.23 (Sans Mono) U+1d69b u1D69B 2.23 (Sans Mono) U+1d69c u1D69C 2.23 (Sans Mono) U+1d69d u1D69D 2.23 (Sans Mono) U+1d69e u1D69E 2.23 (Sans Mono) U+1d69f u1D69F 2.23 (Sans Mono) U+1d6a0 u1D6A0 2.23 (Sans Mono) U+1d6a1 u1D6A1 2.23 (Sans Mono) U+1d6a2 u1D6A2 2.23 (Sans Mono) U+1d6a3 u1D6A3 2.23 (Sans Mono) U+1d6a4 u1D6A4 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6a5 u1D6A5 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6a8 u1D6A8 2.23 (Serif Bold, Serif Condensed Bold) U+1d6a9 u1D6A9 2.23 (Serif Bold, Serif Condensed Bold) U+1d6aa u1D6AA 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ab u1D6AB 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ac u1D6AC 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ad u1D6AD 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ae u1D6AE 2.23 (Serif Bold, Serif Condensed Bold) U+1d6af u1D6AF 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b0 u1D6B0 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b1 u1D6B1 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b2 u1D6B2 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b3 u1D6B3 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b4 u1D6B4 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b5 u1D6B5 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b6 u1D6B6 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b7 u1D6B7 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b8 u1D6B8 2.23 (Serif Bold, Serif Condensed Bold) U+1d6b9 u1D6B9 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ba u1D6BA 2.23 (Serif Bold, Serif Condensed Bold) U+1d6bb u1D6BB 2.23 (Serif Bold, Serif Condensed Bold) U+1d6bc u1D6BC 2.23 (Serif Bold, Serif Condensed Bold) U+1d6bd u1D6BD 2.23 (Serif Bold, Serif Condensed Bold) U+1d6be u1D6BE 2.23 (Serif Bold, Serif Condensed Bold) U+1d6bf u1D6BF 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c0 u1D6C0 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c1 u1D6C1 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c2 u1D6C2 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c3 u1D6C3 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c4 u1D6C4 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c5 u1D6C5 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c6 u1D6C6 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c7 u1D6C7 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c8 u1D6C8 2.23 (Serif Bold, Serif Condensed Bold) U+1d6c9 u1D6C9 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ca u1D6CA 2.23 (Serif Bold, Serif Condensed Bold) U+1d6cb u1D6CB 2.23 (Serif Bold, Serif Condensed Bold) U+1d6cc u1D6CC 2.23 (Serif Bold, Serif Condensed Bold) U+1d6cd u1D6CD 2.23 (Serif Bold, Serif Condensed Bold) U+1d6ce u1D6CE 2.23 (Serif Bold, Serif Condensed Bold) U+1d6cf u1D6CF 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d0 u1D6D0 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d1 u1D6D1 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d2 u1D6D2 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d3 u1D6D3 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d4 u1D6D4 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d5 u1D6D5 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d6 u1D6D6 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d7 u1D6D7 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d8 u1D6D8 2.23 (Serif Bold, Serif Condensed Bold) U+1d6d9 u1D6D9 2.23 (Serif Bold, Serif Condensed Bold) U+1d6da u1D6DA 2.23 (Serif Bold, Serif Condensed Bold) U+1d6db u1D6DB 2.23 (Serif Bold, Serif Condensed Bold) U+1d6dc u1D6DC 2.23 (Serif Bold, Serif Condensed Bold) U+1d6dd u1D6DD 2.23 (Serif Bold, Serif Condensed Bold) U+1d6de u1D6DE 2.23 (Serif Bold, Serif Condensed Bold) U+1d6df u1D6DF 2.23 (Serif Bold, Serif Condensed Bold) U+1d6e0 u1D6E0 2.23 (Serif Bold, Serif Condensed Bold) U+1d6e1 u1D6E1 2.23 (Serif Bold, Serif Condensed Bold) U+1d6e2 u1D6E2 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e3 u1D6E3 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e4 u1D6E4 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e5 u1D6E5 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e6 u1D6E6 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e7 u1D6E7 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e8 u1D6E8 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6e9 u1D6E9 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6ea u1D6EA 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6eb u1D6EB 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6ec u1D6EC 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6ed u1D6ED 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6ee u1D6EE 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6ef u1D6EF 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f0 u1D6F0 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f1 u1D6F1 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f2 u1D6F2 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f3 u1D6F3 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f4 u1D6F4 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f5 u1D6F5 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f6 u1D6F6 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f7 u1D6F7 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f8 u1D6F8 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6f9 u1D6F9 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6fa u1D6FA 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6fb u1D6FB 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6fc u1D6FC 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6fd u1D6FD 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6fe u1D6FE 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d6ff u1D6FF 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d700 u1D700 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d701 u1D701 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d702 u1D702 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d703 u1D703 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d704 u1D704 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d705 u1D705 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d706 u1D706 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d707 u1D707 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d708 u1D708 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d709 u1D709 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d70a u1D70A 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d70b u1D70B 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d70c u1D70C 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d70d u1D70D 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d70e u1D70E 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d70f u1D70F 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d710 u1D710 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d711 u1D711 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d712 u1D712 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d713 u1D713 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d714 u1D714 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d715 u1D715 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d716 u1D716 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d717 u1D717 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d718 u1D718 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d719 u1D719 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d71a u1D71A 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d71b u1D71B 2.23 (Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic) U+1d71c u1D71C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d71d u1D71D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d71e u1D71E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d71f u1D71F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d720 u1D720 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d721 u1D721 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d722 u1D722 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d723 u1D723 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d724 u1D724 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d725 u1D725 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d726 u1D726 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d727 u1D727 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d728 u1D728 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d729 u1D729 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d72a u1D72A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d72b u1D72B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d72c u1D72C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d72d u1D72D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d72e u1D72E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d72f u1D72F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d730 u1D730 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d731 u1D731 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d732 u1D732 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d733 u1D733 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d734 u1D734 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d735 u1D735 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d736 u1D736 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d737 u1D737 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d738 u1D738 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d739 u1D739 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d73a u1D73A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d73b u1D73B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d73c u1D73C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d73d u1D73D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d73e u1D73E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d73f u1D73F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d740 u1D740 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d741 u1D741 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d742 u1D742 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d743 u1D743 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d744 u1D744 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d745 u1D745 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d746 u1D746 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d747 u1D747 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d748 u1D748 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d749 u1D749 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d74a u1D74A 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d74b u1D74B 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d74c u1D74C 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d74d u1D74D 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d74e u1D74E 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d74f u1D74F 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d750 u1D750 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d751 u1D751 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d752 u1D752 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d753 u1D753 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d754 u1D754 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d755 u1D755 2.23 (Serif Bold Italic, Serif Condensed Bold Italic) U+1d756 u1D756 2.23 (Sans Bold, Sans Condensed Bold) U+1d757 u1D757 2.23 (Sans Bold, Sans Condensed Bold) U+1d758 u1D758 2.23 (Sans Bold, Sans Condensed Bold) U+1d759 u1D759 2.23 (Sans Bold, Sans Condensed Bold) U+1d75a u1D75A 2.23 (Sans Bold, Sans Condensed Bold) U+1d75b u1D75B 2.23 (Sans Bold, Sans Condensed Bold) U+1d75c u1D75C 2.23 (Sans Bold, Sans Condensed Bold) U+1d75d u1D75D 2.23 (Sans Bold, Sans Condensed Bold) U+1d75e u1D75E 2.23 (Sans Bold, Sans Condensed Bold) U+1d75f u1D75F 2.23 (Sans Bold, Sans Condensed Bold) U+1d760 u1D760 2.23 (Sans Bold, Sans Condensed Bold) U+1d761 u1D761 2.23 (Sans Bold, Sans Condensed Bold) U+1d762 u1D762 2.23 (Sans Bold, Sans Condensed Bold) U+1d763 u1D763 2.23 (Sans Bold, Sans Condensed Bold) U+1d764 u1D764 2.23 (Sans Bold, Sans Condensed Bold) U+1d765 u1D765 2.23 (Sans Bold, Sans Condensed Bold) U+1d766 u1D766 2.23 (Sans Bold, Sans Condensed Bold) U+1d767 u1D767 2.23 (Sans Bold, Sans Condensed Bold) U+1d768 u1D768 2.23 (Sans Bold, Sans Condensed Bold) U+1d769 u1D769 2.23 (Sans Bold, Sans Condensed Bold) U+1d76a u1D76A 2.23 (Sans Bold, Sans Condensed Bold) U+1d76b u1D76B 2.23 (Sans Bold, Sans Condensed Bold) U+1d76c u1D76C 2.23 (Sans Bold, Sans Condensed Bold) U+1d76d u1D76D 2.23 (Sans Bold, Sans Condensed Bold) U+1d76e u1D76E 2.23 (Sans Bold, Sans Condensed Bold) U+1d76f u1D76F 2.23 (Sans Bold, Sans Condensed Bold) U+1d770 u1D770 2.23 (Sans Bold, Sans Condensed Bold) U+1d771 u1D771 2.23 (Sans Bold, Sans Condensed Bold) U+1d772 u1D772 2.23 (Sans Bold, Sans Condensed Bold) U+1d773 u1D773 2.23 (Sans Bold, Sans Condensed Bold) U+1d774 u1D774 2.23 (Sans Bold, Sans Condensed Bold) U+1d775 u1D775 2.23 (Sans Bold, Sans Condensed Bold) U+1d776 u1D776 2.23 (Sans Bold, Sans Condensed Bold) U+1d777 u1D777 2.23 (Sans Bold, Sans Condensed Bold) U+1d778 u1D778 2.23 (Sans Bold, Sans Condensed Bold) U+1d779 u1D779 2.23 (Sans Bold, Sans Condensed Bold) U+1d77a u1D77A 2.23 (Sans Bold, Sans Condensed Bold) U+1d77b u1D77B 2.23 (Sans Bold, Sans Condensed Bold) U+1d77c u1D77C 2.23 (Sans Bold, Sans Condensed Bold) U+1d77d u1D77D 2.23 (Sans Bold, Sans Condensed Bold) U+1d77e u1D77E 2.23 (Sans Bold, Sans Condensed Bold) U+1d77f u1D77F 2.23 (Sans Bold, Sans Condensed Bold) U+1d780 u1D780 2.23 (Sans Bold, Sans Condensed Bold) U+1d781 u1D781 2.23 (Sans Bold, Sans Condensed Bold) U+1d782 u1D782 2.23 (Sans Bold, Sans Condensed Bold) U+1d783 u1D783 2.23 (Sans Bold, Sans Condensed Bold) U+1d784 u1D784 2.23 (Sans Bold, Sans Condensed Bold) U+1d785 u1D785 2.23 (Sans Bold, Sans Condensed Bold) U+1d786 u1D786 2.23 (Sans Bold, Sans Condensed Bold) U+1d787 u1D787 2.23 (Sans Bold, Sans Condensed Bold) U+1d788 u1D788 2.23 (Sans Bold, Sans Condensed Bold) U+1d789 u1D789 2.23 (Sans Bold, Sans Condensed Bold) U+1d78a u1D78A 2.23 (Sans Bold, Sans Condensed Bold) U+1d78b u1D78B 2.23 (Sans Bold, Sans Condensed Bold) U+1d78c u1D78C 2.23 (Sans Bold, Sans Condensed Bold) U+1d78d u1D78D 2.23 (Sans Bold, Sans Condensed Bold) U+1d78e u1D78E 2.23 (Sans Bold, Sans Condensed Bold) U+1d78f u1D78F 2.23 (Sans Bold, Sans Condensed Bold) U+1d790 u1D790 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d791 u1D791 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d792 u1D792 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d793 u1D793 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d794 u1D794 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d795 u1D795 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d796 u1D796 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d797 u1D797 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d798 u1D798 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d799 u1D799 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d79a u1D79A 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d79b u1D79B 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d79c u1D79C 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d79d u1D79D 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d79e u1D79E 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d79f u1D79F 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a0 u1D7A0 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a1 u1D7A1 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a2 u1D7A2 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a3 u1D7A3 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a4 u1D7A4 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a5 u1D7A5 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a6 u1D7A6 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a7 u1D7A7 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a8 u1D7A8 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7a9 u1D7A9 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7aa u1D7AA 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7ab u1D7AB 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7ac u1D7AC 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7ad u1D7AD 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7ae u1D7AE 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7af u1D7AF 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b0 u1D7B0 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b1 u1D7B1 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b2 u1D7B2 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b3 u1D7B3 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b4 u1D7B4 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b5 u1D7B5 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b6 u1D7B6 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b7 u1D7B7 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b8 u1D7B8 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7b9 u1D7B9 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7ba u1D7BA 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7bb u1D7BB 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7bc u1D7BC 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7bd u1D7BD 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7be u1D7BE 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7bf u1D7BF 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c0 u1D7C0 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c1 u1D7C1 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c2 u1D7C2 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c3 u1D7C3 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c4 u1D7C4 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c5 u1D7C5 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c6 u1D7C6 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c7 u1D7C7 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c8 u1D7C8 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7c9 u1D7C9 2.23 (Sans Bold Oblique, Sans Condensed Bold Oblique) U+1d7ca u1D7CA 2.23 (Serif Bold, Serif Condensed Bold) U+1d7cb u1D7CB 2.23 (Serif Bold, Serif Condensed Bold) U+1d7ce u1D7CE 2.23 (Serif Bold, Serif Condensed Bold) U+1d7cf u1D7CF 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d0 u1D7D0 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d1 u1D7D1 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d2 u1D7D2 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d3 u1D7D3 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d4 u1D7D4 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d5 u1D7D5 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d6 u1D7D6 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d7 u1D7D7 2.23 (Serif Bold, Serif Condensed Bold) U+1d7d8 u1D7D8 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7d9 u1D7D9 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7da u1D7DA 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7db u1D7DB 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7dc u1D7DC 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7dd u1D7DD 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7de u1D7DE 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7df u1D7DF 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7e0 u1D7E0 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7e1 u1D7E1 2.22 (Serif, Serif Condensed) 2.29 (Sans, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.30 (Sans Bold) U+1d7e2 u1D7E2 2.23 (Sans, Sans Condensed) U+1d7e3 u1D7E3 2.23 (Sans, Sans Condensed) U+1d7e4 u1D7E4 2.23 (Sans, Sans Condensed) U+1d7e5 u1D7E5 2.23 (Sans, Sans Condensed) U+1d7e6 u1D7E6 2.23 (Sans, Sans Condensed) U+1d7e7 u1D7E7 2.23 (Sans, Sans Condensed) U+1d7e8 u1D7E8 2.23 (Sans, Sans Condensed) U+1d7e9 u1D7E9 2.23 (Sans, Sans Condensed) U+1d7ea u1D7EA 2.23 (Sans, Sans Condensed) U+1d7eb u1D7EB 2.23 (Sans, Sans Condensed) U+1d7ec u1D7EC 2.23 (Sans Bold, Sans Condensed Bold) U+1d7ed u1D7ED 2.23 (Sans Bold, Sans Condensed Bold) U+1d7ee u1D7EE 2.23 (Sans Bold, Sans Condensed Bold) U+1d7ef u1D7EF 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f0 u1D7F0 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f1 u1D7F1 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f2 u1D7F2 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f3 u1D7F3 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f4 u1D7F4 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f5 u1D7F5 2.23 (Sans Bold, Sans Condensed Bold) U+1d7f6 u1D7F6 2.23 (Sans Mono) U+1d7f7 u1D7F7 2.23 (Sans Mono) U+1d7f8 u1D7F8 2.23 (Sans Mono) U+1d7f9 u1D7F9 2.23 (Sans Mono) U+1d7fa u1D7FA 2.23 (Sans Mono) U+1d7fb u1D7FB 2.23 (Sans Mono) U+1d7fc u1D7FC 2.23 (Sans Mono) U+1d7fd u1D7FD 2.23 (Sans Mono) U+1d7fe u1D7FE 2.23 (Sans Mono) U+1d7ff u1D7FF 2.23 (Sans Mono) U+1f030 u1F030 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f031 u1F031 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f032 u1F032 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f033 u1F033 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f034 u1F034 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f035 u1F035 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f036 u1F036 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f037 u1F037 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f038 u1F038 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f039 u1F039 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f03a u1F03A 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f03b u1F03B 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f03c u1F03C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f03d u1F03D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f03e u1F03E 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f03f u1F03F 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f040 u1F040 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f041 u1F041 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f042 u1F042 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f043 u1F043 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f044 u1F044 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f045 u1F045 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f046 u1F046 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f047 u1F047 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f048 u1F048 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f049 u1F049 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f04a u1F04A 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f04b u1F04B 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f04c u1F04C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f04d u1F04D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f04e u1F04E 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f04f u1F04F 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f050 u1F050 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f051 u1F051 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f052 u1F052 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f053 u1F053 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f054 u1F054 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f055 u1F055 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f056 u1F056 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f057 u1F057 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f058 u1F058 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f059 u1F059 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f05a u1F05A 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f05b u1F05B 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f05c u1F05C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f05d u1F05D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f05e u1F05E 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f05f u1F05F 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f060 u1F060 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f061 u1F061 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f062 u1F062 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f063 u1F063 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f064 u1F064 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f065 u1F065 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f066 u1F066 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f067 u1F067 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f068 u1F068 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f069 u1F069 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f06a u1F06A 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f06b u1F06B 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f06c u1F06C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f06d u1F06D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f06e u1F06E 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f06f u1F06F 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f070 u1F070 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f071 u1F071 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f072 u1F072 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f073 u1F073 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f074 u1F074 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f075 u1F075 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f076 u1F076 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f077 u1F077 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f078 u1F078 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f079 u1F079 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f07a u1F07A 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f07b u1F07B 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f07c u1F07C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f07d u1F07D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f07e u1F07E 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f07f u1F07F 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f080 u1F080 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f081 u1F081 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f082 u1F082 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f083 u1F083 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f084 u1F084 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f085 u1F085 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f086 u1F086 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f087 u1F087 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f088 u1F088 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f089 u1F089 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f08a u1F08A 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f08b u1F08B 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f08c u1F08C 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f08d u1F08D 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f08e u1F08E 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f08f u1F08F 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f090 u1F090 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f091 u1F091 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f092 u1F092 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f093 u1F093 2.32 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a0 u1F0A0 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a1 u1F0A1 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a2 u1F0A2 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a3 u1F0A3 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a4 u1F0A4 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a5 u1F0A5 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a6 u1F0A6 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a7 u1F0A7 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a8 u1F0A8 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0a9 u1F0A9 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0aa u1F0AA 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ab u1F0AB 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ac u1F0AC 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ad u1F0AD 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ae u1F0AE 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b1 u1F0B1 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b2 u1F0B2 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b3 u1F0B3 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b4 u1F0B4 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b5 u1F0B5 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b6 u1F0B6 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b7 u1F0B7 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b8 u1F0B8 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0b9 u1F0B9 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ba u1F0BA 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0bb u1F0BB 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0bc u1F0BC 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0bd u1F0BD 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0be u1F0BE 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c1 u1F0C1 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c2 u1F0C2 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c3 u1F0C3 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c4 u1F0C4 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c5 u1F0C5 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c6 u1F0C6 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c7 u1F0C7 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c8 u1F0C8 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0c9 u1F0C9 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ca u1F0CA 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0cb u1F0CB 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0cc u1F0CC 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0cd u1F0CD 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0ce u1F0CE 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0cf u1F0CF 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d1 u1F0D1 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d2 u1F0D2 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d3 u1F0D3 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d4 u1F0D4 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d5 u1F0D5 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d6 u1F0D6 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d7 u1F0D7 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d8 u1F0D8 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0d9 u1F0D9 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0da u1F0DA 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0db u1F0DB 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0dc u1F0DC 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0dd u1F0DD 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0de u1F0DE 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f0df u1F0DF 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f42d u1F42D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f42e u1F42E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f431 u1F431 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f435 u1F435 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f600 u1F600 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f601 u1F601 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f602 u1F602 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f603 u1F603 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f604 u1F604 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f605 u1F605 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f606 u1F606 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f607 u1F607 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f608 u1F608 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f609 u1F609 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f60a u1F60A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f60b u1F60B 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f60c u1F60C 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f60d u1F60D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f60e u1F60E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f60f u1F60F 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f610 u1F610 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f611 u1F611 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f612 u1F612 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f613 u1F613 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f614 u1F614 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f615 u1F615 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f616 u1F616 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f617 u1F617 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f618 u1F618 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f619 u1F619 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f61a u1F61A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f61b u1F61B 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f61c u1F61C 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f61d u1F61D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f61e u1F61E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f61f u1F61F 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f620 u1F620 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f621 u1F621 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f622 u1F622 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f623 u1F623 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f625 u1F625 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f626 u1F626 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f627 u1F627 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f628 u1F628 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f629 u1F629 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f62a u1F62A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f62b u1F62B 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f62d u1F62D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f62e u1F62E 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f62f u1F62F 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f630 u1F630 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f631 u1F631 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f632 u1F632 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f633 u1F633 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f634 u1F634 2.34 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f635 u1F635 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f636 u1F636 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f637 u1F637 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f638 u1F638 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f639 u1F639 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f63a u1F63A 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f63b u1F63B 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f63c u1F63C 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f63d u1F63D 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f63e u1F63E 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f63f u1F63F 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) U+1f640 u1F640 2.33 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/unicover.txt000064400000055624151502156020022276 0ustar00This is the Unicode coverage file for DejaVu fonts ($Id: unicover.txt 2538 2013-08-25 16:02:56Z moyogo $) Control and similar characters are discounted from totals. Sans Serif Sans Mono U+0000 Basic Latin 100% (95/95) 100% (95/95) 100% (95/95) U+0080 Latin-1 Supplement 100% (96/96) 100% (96/96) 100% (96/96) U+0100 Latin Extended-A 100% (128/128) 100% (128/128) 100% (128/128) U+0180 Latin Extended-B 100% (208/208) 100% (208/208) 86% (180/208) U+0250 IPA Extensions 100% (96/96) 100% (96/96) 100% (96/96) U+02b0 Spacing Modifier Letters 78% (63/80) 73% (59/80) 62% (50/80) U+0300 Combining Diacritical Marks 83% (93/112) 61% (69/112) 59% (67/112) U+0370 Greek and Coptic 100% (134/134) 89% (120/134) 82% (110/134) U+0400 Cyrillic 100% (256/256) 79% (204/256) 70% (180/256) U+0500 Cyrillic Supplement 95% (38/40) 25% (10/40) 15% (6/40) U+0530 Armenian 98% (86/87) 98% (86/87) 98% (86/87) U+0590 Hebrew 62% (54/87) (0/87) (0/87) U+0600 Arabic 63% (161/253) (0/253) 39% (99/253) U+0700 Syriac (0/77) (0/77) (0/77) U+0750 Arabic Supplement (0/48) (0/48) (0/48) U+0780 Thaana (0/50) (0/50) (0/50) U+07c0 NKo 91% (54/59) (0/59) (0/59) U+0800 Samaritan (0/61) (0/61) (0/61) U+0840 Mandaic (0/29) (0/29) (0/29) U+08a0 Arabic Extended-A (0/39) (0/39) (0/39) U+0900 Devanagari (0/127) (0/127) (0/127) U+0980 Bengali (0/92) (0/92) (0/92) U+0a00 Gurmukhi (0/79) (0/79) (0/79) U+0a80 Gujarati (0/84) (0/84) (0/84) U+0b00 Oriya (0/90) (0/90) (0/90) U+0b80 Tamil (0/72) (0/72) (0/72) U+0c00 Telugu (0/93) (0/93) (0/93) U+0c80 Kannada (0/86) (0/86) (0/86) U+0d00 Malayalam (0/98) (0/98) (0/98) U+0d80 Sinhala (0/80) (0/80) (0/80) U+0e00 Thai 1% (1/87) (0/87) (0/87) U+0e80 Lao 97% (65/67) (0/67) 68% (46/67) U+0f00 Tibetan (0/211) (0/211) (0/211) U+1000 Myanmar (0/160) (0/160) (0/160) U+10a0 Georgian 94% (83/88) 94% (83/88) 51% (45/88) U+1100 Hangul Jamo (0/256) (0/256) (0/256) U+1200 Ethiopic (0/358) (0/358) (0/358) U+1380 Ethiopic Supplement (0/26) (0/26) (0/26) U+13a0 Cherokee (0/85) (0/85) (0/85) U+1400 Unified Canadian Aboriginal Syllabics 63% (404/640) (0/640) (0/640) U+1680 Ogham 100% (29/29) (0/29) (0/29) U+16a0 Runic (0/81) (0/81) (0/81) U+1700 Tagalog (0/20) (0/20) (0/20) U+1720 Hanunoo (0/23) (0/23) (0/23) U+1740 Buhid (0/20) (0/20) (0/20) U+1760 Tagbanwa (0/18) (0/18) (0/18) U+1780 Khmer (0/114) (0/114) (0/114) U+1800 Mongolian (0/156) (0/156) (0/156) U+18b0 Unified Canadian Aboriginal Syllabics Extended (0/70) (0/70) (0/70) U+1900 Limbu (0/66) (0/66) (0/66) U+1950 Tai Le (0/35) (0/35) (0/35) U+1980 New Tai Lue (0/83) (0/83) (0/83) U+19e0 Khmer Symbols (0/32) (0/32) (0/32) U+1a00 Buginese (0/30) (0/30) (0/30) U+1a20 Tai Tham (0/127) (0/127) (0/127) U+1b00 Balinese (0/121) (0/121) (0/121) U+1b80 Sundanese (0/64) (0/64) (0/64) U+1bc0 Batak (0/56) (0/56) (0/56) U+1c00 Lepcha (0/74) (0/74) (0/74) U+1c50 Ol Chiki (0/48) (0/48) (0/48) U+1cc0 Sundanese Supplement (0/8) (0/8) (0/8) U+1cd0 Vedic Extensions (0/39) (0/39) (0/39) U+1d00 Phonetic Extensions 82% (106/128) 89% (115/128) 48% (62/128) U+1d80 Phonetic Extensions Supplement 59% (38/64) 59% (38/64) 57% (37/64) U+1dc0 Combining Diacritical Marks Supplement 13% (6/43) 13% (6/43) (0/43) U+1e00 Latin Extended Additional 98% (252/256) 98% (252/256) 71% (182/256) U+1f00 Greek Extended 100% (233/233) 100% (233/233) 100% (233/233) U+2000 General Punctuation 100% (107/107) 81% (87/107) 49% (53/107) U+2070 Superscripts and Subscripts 100% (42/42) 100% (42/42) 100% (42/42) U+20a0 Currency Symbols 92% (25/27) 29% (8/27) 88% (24/27) U+20d0 Combining Diacritical Marks for Symbols 21% (7/33) (0/33) (0/33) U+2100 Letterlike Symbols 93% (75/80) 42% (34/80) 22% (18/80) U+2150 Number Forms 94% (55/58) 94% (55/58) 22% (13/58) U+2190 Arrows 100% (112/112) 100% (112/112) 100% (112/112) U+2200 Mathematical Operators 100% (256/256) 39% (100/256) 62% (159/256) U+2300 Miscellaneous Technical 26% (65/244) 14% (35/244) 47% (117/244) U+2400 Control Pictures 5% (2/39) 2% (1/39) 2% (1/39) U+2440 Optical Character Recognition (0/11) (0/11) (0/11) U+2460 Enclosed Alphanumerics 6% (10/160) (0/160) (0/160) U+2500 Box Drawing 100% (128/128) 100% (128/128) 100% (128/128) U+2580 Block Elements 100% (32/32) 100% (32/32) 100% (32/32) U+25a0 Geometric Shapes 100% (96/96) 100% (96/96) 100% (96/96) U+2600 Miscellaneous Symbols 73% (187/256) 11% (30/256) 58% (149/256) U+2700 Dingbats 91% (174/191) 0% (1/191) 75% (144/191) U+27c0 Miscellaneous Mathematical Symbols-A 18% (9/48) 10% (5/48) 16% (8/48) U+27f0 Supplemental Arrows-A 100% (16/16) 100% (16/16) (0/16) U+2800 Braille Patterns 100% (256/256) 100% (256/256) (0/256) U+2900 Supplemental Arrows-B 4% (6/128) 100% (128/128) (0/128) U+2980 Miscellaneous Mathematical Symbols-B 10% (13/128) 0% (1/128) 2% (3/128) U+2a00 Supplemental Mathematical Operators 28% (74/256) 2% (6/256) 1% (3/256) U+2b00 Miscellaneous Symbols and Arrows 40% (35/87) 31% (27/87) 20% (18/87) U+2c00 Glagolitic (0/94) (0/94) (0/94) U+2c60 Latin Extended-C 96% (31/32) 84% (27/32) 43% (14/32) U+2c80 Coptic (0/123) (0/123) (0/123) U+2d00 Georgian Supplement 95% (38/40) 95% (38/40) (0/40) U+2d30 Tifinagh 93% (55/59) (0/59) (0/59) U+2d80 Ethiopic Extended (0/79) (0/79) (0/79) U+2de0 Cyrillic Extended-A (0/32) (0/32) (0/32) U+2e00 Supplemental Punctuation 11% (7/60) 11% (7/60) 11% (7/60) U+2e80 CJK Radicals Supplement (0/115) (0/115) (0/115) U+2f00 Kangxi Radicals (0/214) (0/214) (0/214) U+2ff0 Ideographic Description Characters (0/12) (0/12) (0/12) U+3000 CJK Symbols and Punctuation (0/64) (0/64) (0/64) U+3040 Hiragana (0/93) (0/93) (0/93) U+30a0 Katakana (0/96) (0/96) (0/96) U+3100 Bopomofo (0/41) (0/41) (0/41) U+3130 Hangul Compatibility Jamo (0/94) (0/94) (0/94) U+3190 Kanbun (0/16) (0/16) (0/16) U+31a0 Bopomofo Extended (0/27) (0/27) (0/27) U+31c0 CJK Strokes (0/36) (0/36) (0/36) U+31f0 Katakana Phonetic Extensions (0/16) (0/16) (0/16) U+3200 Enclosed CJK Letters and Months (0/254) (0/254) (0/254) U+3300 CJK Compatibility (0/256) (0/256) (0/256) U+3400 CJK Unified Ideographs Extension A (0/0) (0/0) (0/0) U+4dc0 Yijing Hexagram Symbols 100% (64/64) (0/64) (0/64) U+4e00 CJK Unified Ideographs (0/0) (0/0) (0/0) U+a000 Yi Syllables (0/1165) (0/1165) (0/1165) U+a490 Yi Radicals (0/55) (0/55) (0/55) U+a4d0 Lisu 100% (48/48) (0/48) (0/48) U+a500 Vai (0/300) (0/300) (0/300) U+a640 Cyrillic Extended-B 34% (31/89) 11% (10/89) (0/89) U+a6a0 Bamum (0/88) (0/88) (0/88) U+a700 Modifier Tone Letters 62% (20/32) 62% (20/32) 62% (20/32) U+a720 Latin Extended-D 55% (75/134) 43% (58/134) 11% (15/134) U+a800 Syloti Nagri (0/44) (0/44) (0/44) U+a830 Common Indic Number Forms (0/10) (0/10) (0/10) U+a840 Phags-pa (0/56) (0/56) (0/56) U+a880 Saurashtra (0/81) (0/81) (0/81) U+a8e0 Devanagari Extended (0/28) (0/28) (0/28) U+a900 Kayah Li (0/48) (0/48) (0/48) U+a930 Rejang (0/37) (0/37) (0/37) U+a960 Hangul Jamo Extended-A (0/29) (0/29) (0/29) U+a980 Javanese (0/91) (0/91) (0/91) U+aa00 Cham (0/83) (0/83) (0/83) U+aa60 Myanmar Extended-A (0/28) (0/28) (0/28) U+aa80 Tai Viet (0/72) (0/72) (0/72) U+aae0 Meetei Mayek Extensions (0/23) (0/23) (0/23) U+ab00 Ethiopic Extended-A (0/32) (0/32) (0/32) U+abc0 Meetei Mayek (0/56) (0/56) (0/56) U+ac00 Hangul Syllables (0/0) (0/0) (0/0) U+d7b0 Hangul Jamo Extended-B (0/72) (0/72) (0/72) U+d800 High Surrogates (0/0) (0/0) (0/0) U+db80 High Private Use Surrogates (0/0) (0/0) (0/0) U+dc00 Low Surrogates (0/0) (0/0) (0/0) U+e000 Private Use Area (0/0) (0/0) (0/0) U+f900 CJK Compatibility Ideographs (0/472) (0/472) (0/472) U+fb00 Alphabetic Presentation Forms 100% (58/58) 12% (7/58) 3% (2/58) U+fb50 Arabic Presentation Forms-A 16% (98/611) (0/611) 11% (72/611) U+fe00 Variation Selectors 100% (16/16) 100% (16/16) (0/16) U+fe10 Vertical Forms (0/10) (0/10) (0/10) U+fe20 Combining Half Marks 57% (4/7) (0/7) (0/7) U+fe30 CJK Compatibility Forms (0/32) (0/32) (0/32) U+fe50 Small Form Variants (0/26) (0/26) (0/26) U+fe70 Arabic Presentation Forms-B 100% (141/141) (0/141) 100% (141/141) U+ff00 Halfwidth and Fullwidth Forms (0/225) (0/225) (0/225) U+fff0 Specials 100% (5/5) 100% (5/5) 100% (5/5) U+10000 Linear B Syllabary (0/88) (0/88) (0/88) U+10080 Linear B Ideograms (0/123) (0/123) (0/123) U+10100 Aegean Numbers (0/57) (0/57) (0/57) U+10140 Ancient Greek Numbers (0/75) (0/75) (0/75) U+10190 Ancient Symbols (0/12) (0/12) (0/12) U+101d0 Phaistos Disc (0/46) (0/46) (0/46) U+10280 Lycian (0/29) (0/29) (0/29) U+102a0 Carian (0/49) (0/49) (0/49) U+10300 Old Italic 100% (35/35) (0/35) (0/35) U+10330 Gothic (0/27) (0/27) (0/27) U+10380 Ugaritic (0/31) (0/31) (0/31) U+103a0 Old Persian (0/50) (0/50) (0/50) U+10400 Deseret (0/80) (0/80) (0/80) U+10450 Shavian (0/48) (0/48) (0/48) U+10480 Osmanya (0/40) (0/40) (0/40) U+10800 Cypriot Syllabary (0/55) (0/55) (0/55) U+10840 Imperial Aramaic (0/31) (0/31) (0/31) U+10900 Phoenician (0/29) (0/29) (0/29) U+10920 Lydian (0/27) (0/27) (0/27) U+10980 Meroitic Hieroglyphs (0/32) (0/32) (0/32) U+109a0 Meroitic Cursive (0/26) (0/26) (0/26) U+10a00 Kharoshthi (0/65) (0/65) (0/65) U+10a60 Old South Arabian (0/32) (0/32) (0/32) U+10b00 Avestan (0/61) (0/61) (0/61) U+10b40 Inscriptional Parthian (0/30) (0/30) (0/30) U+10b60 Inscriptional Pahlavi (0/27) (0/27) (0/27) U+10c00 Old Turkic (0/73) (0/73) (0/73) U+10e60 Rumi Numeral Symbols (0/31) (0/31) (0/31) U+11000 Brahmi (0/108) (0/108) (0/108) U+11080 Kaithi (0/66) (0/66) (0/66) U+110d0 Sora Sompeng (0/35) (0/35) (0/35) U+11100 Chakma (0/67) (0/67) (0/67) U+11180 Sharada (0/83) (0/83) (0/83) U+11680 Takri (0/66) (0/66) (0/66) U+12000 Cuneiform (0/879) (0/879) (0/879) U+12400 Cuneiform Numbers and Punctuation (0/103) (0/103) (0/103) U+13000 Egyptian Hieroglyphs (0/1071) (0/1071) (0/1071) U+16800 Bamum Supplement (0/569) (0/569) (0/569) U+16f00 Miao (0/133) (0/133) (0/133) U+1b000 Kana Supplement (0/2) (0/2) (0/2) U+1d000 Byzantine Musical Symbols (0/246) (0/246) (0/246) U+1d100 Musical Symbols (0/220) (0/220) (0/220) U+1d200 Ancient Greek Musical Notation (0/70) (0/70) (0/70) U+1d300 Tai Xuan Jing Symbols 100% (87/87) (0/87) (0/87) U+1d360 Counting Rod Numerals (0/18) (0/18) (0/18) U+1d400 Mathematical Alphanumeric Symbols 11% (117/996) 5% (55/996) 6% (63/996) U+1ee00 Arabic Mathematical Alphabetic Symbols (0/143) (0/143) (0/143) U+1f000 Mahjong Tiles (0/44) (0/44) (0/44) U+1f030 Domino Tiles 100% (100/100) (0/100) (0/100) U+1f0a0 Playing Cards 100% (59/59) (0/59) (0/59) U+1f100 Enclosed Alphanumeric Supplement (0/171) (0/171) (0/171) U+1f200 Enclosed Ideographic Supplement (0/57) (0/57) (0/57) U+1f300 Miscellaneous Symbols And Pictographs 0% (4/533) (0/533) (0/533) U+1f600 Emoticons 82% (63/76) (0/76) (0/76) U+1f680 Transport And Map Symbols (0/70) (0/70) (0/70) U+1f700 Alchemical Symbols (0/116) (0/116) (0/116) U+20000 CJK Unified Ideographs Extension B (0/0) (0/0) (0/0) U+2a700 CJK Unified Ideographs Extension C (0/0) (0/0) (0/0) U+2b740 CJK Unified Ideographs Extension D (0/0) (0/0) (0/0) U+2f800 CJK Compatibility Ideographs Supplement (0/542) (0/542) (0/542) U+e0000 Tags (0/98) (0/98) (0/98) U+e0100 Variation Selectors Supplement (0/240) (0/240) (0/240) U+f0000 Supplementary Private Use Area-A (0/0) (0/0) (0/0) U+100000 Supplementary Private Use Area-B (0/0) (0/0) (0/0) db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/NEWS000064400000215706151502156020020401 0ustar00Changes from 2.33 to 2.34 * Sans, SansMono, Serif: unlinked references of U+2596 for bug 50848 (by Denis Jacquerye) * Sans, SansMono, Serif: added U+A7AA (by Denis Jacquerye) * Sans, SansMono, Serif: added U+2A6A, U+2A6B, U+2E1F based on U+223B (by Denis Jacquerye) * Sans, Serif: removed superfluous ligature definitions for ffl und ffi (bug 55363) (by Gee Fung Sit 薛至峰) * Sans, Serif: swapped glyphs for U+25D2 and U+25D3 (bug 55197) (by Gee Fung Sit 薛至峰) * Sans, Serif: added U+A740, U+A741 (by Denis Jacquerye) * Sans: added U+20BA Turkish Lira sign (by Denis Jacquerye) * Sans: replaced Georgian Asomtavruli U+10A0-U+10C5 and Mkhedruli U+10D0-U+10FC with new version (by Besarion Gugushvili) * Sans: added Georgian Nuskhuri U+2D00-U+U+2D25 (by Besarion Gugushvili) * Sans: added Private Use Area glyphs for Georgian U+F400-U+F441 (by Besarion Gugushvili) * Sans: tweaked U+0250, U+0254 (by Denis Jacquerye) * Sans: adjusted hinting of U+032C-U+032D, avoiding problem on some platforms (by Denis Jacquerye) * Sans: added U+A7A0-U+A7A9, pre-1921 Latvian letters with oblique stroke (by Denis Jacquerye) * Sans: added anchors to U+2C6D (by Denis Jacquerye) * Sans: added cedilla anchor to some Latin characters (by Denis Jacquerye) * Sans: added ogonek anchor to A, E, O, U, Y (by Denis Jacquerye) * Sans: adjusted ogonek reference in U+0172, U+01EA, U+01EB (by Denis Jacquerye) * Sans: added anchors to U+0104, U+0105 (by Denis Jacquerye) * Sans: added U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62E-U+1F62F, U+1F634 (by Gee Fung Sit 薛至峰) * Sans: replaced U+27A1 with mirror image of U+2B05 for consistency (by Gee Fung Sit 薛至峰) * Sans: copied hints from U+14A3, U+14A7 to U+2142-U+2143 (by Gee Fung Sit 薛至峰) * Sans: added Lisu block (by Gee Fung Sit 薛至峰) * Sans: typographical improvements to U+0166-U+0167, U+02A6, U+02AA (by Gee Fung Sit 薛至峰) * Sans: slightly change hinting of "2" to fix bug 37395 (by Ben Laenen) * Sans: fixed U+1444 which had wrong top dot that shouldn't be there (by Denis Jacquerye) * Sans: added anchors for diacritics to U+01B7, U+01B8, U+01B9, U+0292 (by Denis Jacquerye) * Sans: added U+01B7, U+01B8 to context for case diacritics above * SansMono: fixed U+0574 (by Ruben Hakobian) * SansMono: added U+2016, U+27C2 (by Yoshiki Ohshima) * SansMono: added U+02CE, U+02CF (by Denis Jacquerye) * SansMono: added U+2148, U+27E6-U+27E7, U+2B05-U+2B0D, U+1D55A (by Gee Fung Sit 薛至峰) * Serif: added U+02BA, U+02C2-U+02C5, U+02CA-U+02CB, U+02D7, U+02F3, U+02F7, U+046C-U+046D, U+0476-U+0477, U+1D7C-U+1D7F, U+20B8, U+2132, U+214E, U+2C7B to Serif (by Gee Fung Sit 薛至峰) * Serif: typographic improvements to U+0194, U+01B1, U+0263, U+028A, U+02A6, U+02A8, U+02AA, U+02E0, U+03DC, U+1D3B, U+1D7B (by Gee Fung Sit 薛至峰) * Serif: added small cap versions of q, x (in italic styles), delta, theta, xi, sigma, phi, omega, not wired in yet (by Gee Fung Sit 薛至峰) * Serif: added anchors to U+0234-U+0236 (by Gee Fung Sit 薛至峰) * Serif: added U+02EC, U+02EF, U+02F0, U+0360 (by Denis Jacquerye) Changes from 2.32 to 2.33 * added Old Italic block to Sans (by MaEr) * added U+051E, U+051F to Sans (by MaEr) * added U+01BA, U+0372-U+0373, U+0376-U+0377, U+03CF, U+1D00-U+1D01, U+1D03-U+1D07, U+1D0A-U+1D13, U+1D15, U+1D18-U+1D1C, U+1D20-U+1D2B, U+1D2F, U+1D3D, U+1D5C-U+1D61, U+1D66-U+1D6B, U+1DB8, U+1E9C-U+1E9D, U+1EFA-U+1EFB, U+2C60-U+2C61, U+2C63, U+A726-U+A73C, U+A73E-U+A73F, U+A746-U+A747, U+A74A-U+A74B, U+A74E+U+A74F, U+A768-U+A769, U+A77B-U+A77C, U+A780-U+A787, U+A790-U+A791, U+A7FA-U+A7FF to Serif (by Gee Fung Sit 薛至峰) * added alternate forms to U+014A and U+01B7 in Serif (by Gee Fung Sit 薛至峰) * typographical improvements to U+0166-U+0167, U+0197, U+01B5-U+01B6, U+01BB, U+0222-U+0223, U+023D, U+0250-U+0252, U+026E, U+0274, U+028F, U+029F, U+02A3-U+02A5, U+02AB, U+03FE-U+03FF, U+1D02, U+1D14, U+1D1D-U+1D1F, U+1D3B, U+1D43-U+1D46, U+1D59, U+1D9B, U+2C71, U+2C73 in Serif (by Gee Fung Sit 薛至峰) * fixed bugs #31762 and #34700 plus other small fixes (wrong direction, duplicate points, etc.) for Sans and Serif (by Gee Fung Sit 薛至峰) * added U+204B to Mono (by Gee Fung Sit 薛至峰) * added U+26E2 to Sans (by Gee Fung Sit 薛至峰) * added Playing Cards block (U+1F0A0-U+1F0DF) to Sans (by Gee Fung Sit 薛至峰) * emoticons in Sans: replace U+2639-U+263B with better versions, add U+1F601-U+1F610, U+1F612-U+1F614, U+1F616, U+1F618, U+1F61A, U+1F61C-U+1F61E, U+1F620-U+1F624, U+1F625, U+1F628-U+1F62B, U+1F62D, U+1F630-U+1F633, U+1F635-U+1F640 (by Ben Laenen and Denis Jacquerye) * added U+A78E, U+A790-U+A791 to Sans and Mono (by Denis Jacquerye) * added U+A7FA to Sans (by Denis Jacquerye) * subscripts: added U+2095-U+209C to Sans, Serif and Mono, adjusted U+1D49-U+1D4A in Sans and Mono (by Denis Jacquerye) * added U+0243 to Mono (by Denis Jacquerye) * adjusted U+0307 to match dot of i, replaced dotaccent U+02D9 with U+0307 in most dependencies in Sans (by Denis Jacquerye) * adjusted anchors of f and added them to long s in Sans (by Denis Jacquerye) * added anchors to precomposed dependencies of D and d (by Denis Jacquerye) * added debug glyphs U+F002 and U+F003 which will show current point size (by Ben Laenen) * use correct version for Serbian italic be (by Eugeniy Meshcheryakov) * added pictograms U+1F42D-U+1F42E, U+1F431, U+1F435 (by Denis Jacquerye) * improved Hebrew in Sans (by Lior Halphon) * improved Armenian in Sans, and added Armenian in Serif and Mono (by Rouben Hakobian (Tarumian), Aleksey Chalabyan and Norayr Chilingarian) * remove "locl" feature for Romanian for S/T/s/t with cedilla/comma accent (by Ben Laenen) * replace wrong "dflt" script tag in Mono with "DFLT" (by Ben Laenen) Changes from 2.31 to 2.32 * added to Sans: Latin small letter p with stroke (U+1D7D), Latin capital letter p with stroke through descender (U+A750), Latin small letter p with stroke through descender (U+A751), Latin capital letter thorn with stroke (U+A764), Latin small letter thorn with stroke (U+A765), Latin capital letter thorn with stroke through descender (U+A766), Latin small letter thorn with stroke through descender (U+A767), Latin capital letter q with stroke through descender (U+A756), Latin small letter q with stroke through descender (U+A757), Latin capital letter p with flourish (U+A752), Latin small letter p with flourish (U+A753) (by Ben Laenen) * add new Indian rupee symbol (U+20B9) to Sans, Serif and Mono (although standardization in Unicode not complete yet, UTC did assign this code point) (by Ben Laenen) * Sans: adjusted U+0E3F, U+20AB, U+20AD-U+20AE, U+20B1, U+20B5, U+20B8 to have them take up the same width as digits (by Gee Fung Sit 薛至峰) * added U+23E8 to Sans (by Thomas Henlich) * fixed numerous bugs (#22579, #28189, #28977, N'Ko in Windows, fixed U+FB4F, anchors for U+0332-U+0333, made extensions in Misc. Technical connect, and other small fixes) (by Gee Fung Sit 薛至峰) * added looptail g as stylistic variant to Serif (by Gee Fung Sit 薛至峰) * added the remaining precomposed characters in Latin Extended Additional in Serif (by Gee Fung Sit 薛至峰) * added Georgian Mkhedruli (U+10D0-U+10FC) to Sans ExtraLight (by Besarion Gugushvili) * fix spacing in hinting of U+042E (Ю) in Mono (by Ben Laenen) * replaced U+2650 and minor changes to U+2640-U+2642, U+2699, U+26A2-U+26A5, U+26B2-U+26B5, U+26B8 in Sans (by Gee Fung Sit 薛至峰) * added U+1E9C-U+1E9D, U+1EFA-U+1EFB, U+2028-U+2029, U+20B8, U+2150-U+2152, U+2189, U+26C0-U+26C3, U+A722-U+A725, U+1F030-U+1F093 to Sans (by Gee Fung Sit 薛至峰) * added U+1E9C-U+1E9E, U+1EFA-U+1EFB, U+2028-U+2029, U+20B8, U+2181-U+2182, U+2185 U+A722-U+A725, to Sans ExtraLight (by Gee Fung Sit 薛至峰) * added U+20B8, U+22A2-U+22A5, U+A722-U+A725 to Mono (by Gee Fung Sit 薛至峰) * added U+02CD, U+01BF, U+01F7, U+0222-U+0223, U+0243-U+0244, U+0246-U+024F, U+2150-U+2152, U+2189, U+239B-U+23AD and U+A73D to Serif (by Gee Fung Sit 薛至峰) Changes from 2.30 to 2.31 * fixed bug where Serif Condensed Italic wouldn't get proper subfamily tags (by Ben Laenen) * added math operators U+2234-U+2237 to Mono (by Ben Laenen) * removed buggy instructions of U+032D (by Eugeniy Meshcheryakov) * added U+2C70, U+2C7E, U+2C7F to Sans and Sans Mono (by Denis Jacquerye) * added U+2C7D to Sans Mono (by Denis Jacquerye) * added U+2C6D, U+2C70-2C73, U+2C7E-2C7F to Serif (by Denis Jacquerye) * added extremas to alpha U+03B1 in Serif-Italic (by Denis Jacquerye) * added U+4A4, U+4A5 to Mono (by Andrey V. Panov) * added Arabic letters U+0657, U+0670, U+0688-U+0690, U+0693-U+0694, U+0696-U+0697, U+0699-U+06A0, U+06A2-U+06A3, U+06A5, U+06A7-U+06A8, U+06AA-U+06AE, U+06B0-U+06B4, U+06B6-U+06B9, U+06BB-U+06BE and their contextual forms to Sans (by MihailJP) * added U+A78D LATIN CAPITAL LETTER TURNED H for coming Unicode 6.0 (by Denis Jacquerye) Changes from 2.29 to 2.30 * added U+0462-U+0463 to Mono (by Denis Jacquerye) * corrected U+1E53 in Serif (by Gee Fung Sit) * added U+1E4C-U+1E4D to Mono and Serif (by Gee Fung Sit) * added U+1E78-U+1E79 to Mono (by Gee Fung Sit) * fixed missing diacritics in Latin Extended Additional in Sans ExtraLight (moved stacked diacritics out of PUA in the process) (by Gee Fung Sit) * fixed anchors on U+1E78 in Serif (by Gee Fung Sit) * added U+1DC4-U+1DC9 to Serif (by Denis Jacquerye) * renamed above-mark to above-mark in Serif-Italic (by Denis Jacquerye) * added U+1DC4-U+1DC9 to context class for dotless substitution (by Denis Jacquerye) * changed Doubleacute to Doublegrave in Sans ExtraLight (by Gee Fung Sit) * removed redundant reference in U+01FB in Sans Oblique (by Gee Fung Sit) * added U+A726-U+A727 to Mono (Denis Jacquerye) * changed U+04BE and U+04BF according to recommedations of Sasha Ankwab in Sans (by Andrey V. Panov) * remove "Symbol Charset" from set of codepages in Sans (by Eugeniy Meshcheryakov) Changes from 2.28 to 2.29 * modified U+10FB in Sans to be a mirror image of U+2056, since U+10FB is not Georgian-specific (by Roozbeh Pournader) * added U+2B1F, U+2B24, U+2B53, U+2B54 in Sans (by Roozbeh Pournader) * fixed TUR opentype language tag to TRK in Serif (bug 19825) (by Ben Laenen) * early implementation of Abkhaz letter U+0524-U+0525 in Sans (by Michael Everson and abysta) * flipped U+1D538 in Sans (by Gee Fung Sit) * added U+26B3-U+26B8, U+1D7D8-U+1D7E1 in Sans (by Gee Fung Sit) * corrected U+1D7A9 in Sans Bold Oblique (by Gee Fung Sit) * Fixed U+0649 to be dual-joining in Sans Mono (by Roozbeh Pournader) * Remove unnecessary 'isol' feature from Sans Mono (by Roozbeh Pournader) * Remove 'cmap' mappings for U+066E, U+066F, U+067C, U+067D, U+0681, U+0682, U+0685, U+0692, U+06A1, U+06B5, U+06BA, U+06C6, U+06CE, and U+06D5 in Sans Mono (bug 20323) (by Roozbeh Pournader) * add half brackets (U+2E22 - U+2E25, by Steve Tinney) Changes from 2.27 to 2.28 * added U+A789, U+A78A in Sans and Sans Mono (by Denis Jacquerye) * modified U+02D6, U+02D7, U+02EE in Sans and Sans Mono (by Denis Jacquerye) * added U+1E9E (German capital ß) to Sans and Serif (by Denis Jacquerye) * adjusted width of U+01B7-U+01B9 in Serif Italic (by Denis Jacquerye) * modified U+021C, U+021D in Sans (by Denis Jacquerye) * added U+021C, U+021D in Mono (by Denis Jacquerye) * added U+F428 (Georgian Nuskhuri "f") in private use area (by Besarion Gugushvili) * updated Georgian mkhedruli (U+10D0-U+10FA) with new version (by Besarion Gugushvili) * updated Georgian asomtavruli (U+10A0-U+10C5) with new version (by Besarion Gugushvili) * added Georgian nuskhuri (U+2D00-U+2D25) (by Besarion Gugushvili) * added Georgian mtavruli in private use area (U+F400-U+F426) (by Besarion Gugushvili) * added mark anchors above to Cyrillic U+0430-U+0438, U+043A-U+044F, U+0454-U+0455 in Mono (by Ben Laenen) * modified/moved up U+0318-U+0319, U+031C-U+031F, U+0329-U+032A, U+032C-U+032D, U+0339-U+033B, U+0348 and U+0353 in Sans to prevent cut-off (by Gee Fung Sit) * added U+035A to Sans (by Gee Fung Sit) * updated fontconfig files (by Nicolas Mailhot) * added U+2032-2037 to Mono (by Denis Jacquerye) * added Ogham to Sans ExtraLight (by Gee Fung Sit) * added U+2C6F, U+2C79, U+2C7C-2C7D to Mono (by Gee Fung Sit) * added U+210F to Serif and Sans ExtraLight (by Gee Fung Sit) * changed U+210F to a more common glyph in Sans and Mono (by Gee Fung Sit) Changes from 2.26 to 2.27 * added some of Michael Everson's new Cyrillic glyphs to Sans (by Wesley Transue) * removed blank glyph at U+05EF from Sans Bold Oblique (by Gee Fung Sit) * small adjustments to existing tone bars in Sans and Mono (by Gee Fung Sit) * added U+0372-U+0373, U+0376-U+0377, U+03CF, U+A668-U+A66E, U+A708-U+A711, U+A71B-U+A71F to Sans (by Gee Fung Sit) * copied U+02E5-U+02E9 over from Sans to fix inconsistencies in Serif (by Gee Fung Sit) * added U+021C-U+021D, U+0370-U+0371, U+037B-U+037D, U+0470-U+0471, U+0510-U+0515, U+051A-U+051D, U+1E9F, U+2C64, U+2C6E-U+2C6F, U+2C79, U+2C7C-U+2C7D, U+A644-U+A647, U+A650-U+A651, U+A654-U+A657, U+A708-U+A716, U+A71B-U+A71F to Serif (by Gee Fung Sit) * added U+A708-U+A716, U+A71B-U+A71F to Mono (by Gee Fung Sit) * added anchors to U+017F (ſ) and fixed U+1E9B (ẛ) in Serif (by Gee Fung Sit) * made U+0325 smaller in Sans Bold and Serif to match Sans Book (by Gee Fung Sit) * fixes to U+02F3 (moved up), U+228F-U+2294 (more square-like) and U+22CE-U+22CF (stroke width) in Sans (by Gee Fung Sit) * replaced U+2202 ∂ (Sans and Mono) and U+221D ∝, U+221E ∞ (Sans) with glyphs from Arev (with small changes) (by Gee Fung Sit) * added U+22B0-U+22B1, U+22C7, U+22D0-U+22D5 from Arev to Sans to complete the block (by Gee Fung Sit) * added U+0514-U+0515 to Sans ExtraLight (by Gee Fung Sit) * skewed U+A78C in all Oblique/Italic fonts (by Gee Fung Sit) * moved U+2215 to U+2044 in Sans and Serif and replaced U+2215 with reference to U+002F in all fonts (by Gee Fung Sit) * added U+2C6E to Mono (by Denis Jacquerye) * added U+A782 and U+A783 in Sans (by Wesley Transue) * added U+0244, U+024C-024D, U+2C64 in Sans Mono (by Denis Jacquerye) * modified U+01AE in Sans Mono (by Denis Jacquerye) * added U+2C7A to all fonts (by Gee Fung Sit) * italicized/small changes to U+2C76 in Serif (Bold) Italic (by Gee Fung Sit) * improved outlines of U+2C68, U+2C6A, U+2C6C in Serif (Bold) Italic (by Gee Fung Sit) * rounded U+2C77 at the bottom in Serif (by Gee Fung Sit) * added joining behavior for tone letters (U+02E5-U+02E9) in Sans (bug #15669) (by Gee Fung Sit) * fixed outline of y.alt in Sans Regular (by Denis Jacquerye) * changed references of U+1D5A8, U+1D5C5, U+1D5DC, U+1D5F9, U+1D610, U+1D62D, U+1D644 and U+1D661 to stylistic alternates to have a better distinction (by Gee Fung Sit) * hinted I.alt in Sans Regular (by Gee Fung Sit) * added U+0487, completing Cyrillic block (by Gee Fung Sit) * extended the bar of U+0463 to the right and moved the anchor (by Gee Fung Sit) * added anchors to glyphs in Cyrillic block (by Gee Fung Sit) * added (preliminary) hints to tone letter forms (U+02E5.5, U+02E9.1, stem) in Sans Book (by Gee Fung Sit) Changes from 2.25 to 2.26 - added glyphs for Cyrillic-B to Sans (by Wesley Transue) - added U+0370-U+0371 to Sans (by Wesley Transue) - added U+019C, U+01A2-U+01A3, U+01A6, U+01E4-U+01E5, U+024C-U+024D, U+0285, U+0290, U+02A0, U+0370-U+0371, U+03F1, U+03FC to Sans ExtraLight (by Wesley Transue) - added U+20A0-U+20A5, U+20A7-U+20B3, U+2105, U+210D, U+210F, U+2115, U+2117, U+2119-U+211A, U+211D, U+2124, U+212E, U+2200-U+2204 to Mono (by Heikki Lindroos) - added U+01BA and U+01BF to Mono (by Heikki Lindroos) - merged OpenType "aalt" feature in Latin in Sans (by Denis Jacquerye) - added alternative shape for y in Sans (by Denis Jacquerye) - added saltillo (U+A78B-U+A78C) to all faces (by James Cloos) - changed U+047C-U+047D to references instead of outlines in Sans (by Wesley Transue) - added Latin letter tresillo U+A72A-U+A72B to Sans (by Wesley Transue) - added U+A734-U+A737 to Sans (by Wesley Transue) - added U+2053 to Serif and fixed it bug:9425 in Sans (by Gee Fung Sit) - removed problematic hints for U+0423 bug:10025 (by Gee Fung Sit) - added U+27C5-U+27C6 bug:10255 to all faces (by Gee Fung Sit) - fixed width of U+2016 in Sans Oblique (by Gee Fung Sit) - added U+2016, U+2032-U+2038, U+2042, U+2045-U+2046, U+204B-U+204F, U+2051-U+2052, U+2057 to Serif (by Gee Fung Sit) - made U+2140 bigger to match other n-ary operators (by Gee Fung Sit) - added U+0606-U+0607, U+0609-U+060A to Sans (by Gee Fung Sit) - added U+221B-U+221C to Mono (by Gee Fung Sit) - small adjustments to U+221B-U+221C in Sans and Serif (by Gee Fung Sit) - update U+04B4-U+04B5 in Serif (by Andrey V. Panov) - increased max-storage value from maxp table to 153 (by Andrey V. Panov) - added U+0472-U+0473, U+0510-U+0511, U+051A-U+051D, U+0606-U+0607, U+0609-U+060A, U+1E26-U+1E27, U+1E54-U+1E55, U+1E7C-U+1E7D, U+1E8C-U+1E8D, U+1E90-U+1E91, U+1E97-U+1E99, U+1E9F, U+1EAC-U+1EAD, U+1EB6-U+1EB7, U+1EC6-U+1EC7, U+1ED8-U+1EDD, U+1EE0-U+1EE3, U+1EE8-U+1EEB, U+1EEE-U+1EF1 to Mono (by Gee Fung Sit) - added locl rules for S/T cedilla for Romanian and Moldavian so they get rendered as S/T with comma accent (see Redhat bug #455981) (by Ben Laenen) - removed ligature rule from Armenian U+0587 bug:16113 (by Gee Fung Sit) Changes from 2.24 to 2.25 - moved/added U+2E18 (by Gee Fung Sit) - added empty glyph for U+2064 in Sans and Serif (by Gee Fung Sit) - added U+22CE-U+22CF to Sans (by Gee Fung Sit) - Sans Oblique and Bold Oblique, Serif: reverted digits hinting instructions back to before revision 1590, which fixed mistaken debian bug #471024. This fixes Debian bug #411308. The original bug was in freetype not in the fonts (by Denis Jacquerye) - added U+A726-U+A729, U+A730-U+A733, U+A738-U+A73F, U+A746-U+A74B, U+A74E-U+A74F, U+A780-U+A781, U+A7FB-U+A7FF to Sans (by Gee Fung Sit) - added Macedonian italic glyph shape for U+0453 in Serif (by Ben Laenen) - changed descenders in U+0446, U+0449, U+0497, U+04A3, U+04AD (by Andrey V. Panov) - updated main SFD files to SplineFontDB 3.0 (Denis Jacquerye and Gee Fung Sit) - moved U+0561 2 up since it wasn't aligned with the baseline well (by Ben Laenen) - added U+2E2E to Sans (by Gee Fung Sit) - replaced U+2699 with simpler version in Sans (by Gee Fung Sit) - added a lot of hinting instructions to Latin Extended B, Greek and Coptic glyphs Sans Book (by Wesley Transue) - differentiated U+2219 from U+22C5 and adjusted affected references in Sans and Mono (by Gee Fung Sit) - made Hebrew narrower in Sans Bold and Sans Bold Oblique (by Denis Jacquerye) - added Kurdish and Chuvash letters from Unicode 5.1 Cyrillic Extended block (by Wesley Transue) - added U+1E9F, U+A644-U+A647, U+A64C-U+A64D, U+A650-U+A651, U+A654-U+A655, U+A712U+A716 to Sans (by Gee Fung Sit) - added several glyphs to Sans ExtraLight (by Gee Fung Sit) - added hinting instructions to U+046A-U+046B, U+0508-U+0509, U+050B, U+0512-U+0513 in Sans Book (by Wesley Transue) - corrected width of U+027E in Sans Book (by Gee Fung Sit) - added U+2C79, U+2C7B-U+2C7D to Sans (by Gee Fung Sit) - added a bunch of glyphs+small corrections to Sans Light (by Gee Fung Sit) - added U+0496, U+0497, U+04B0, U+04B1 (by Andrey V. Panov) - updated U+0493, U+049B, U+04B3, U+04B7, U+04F7 (by Andrey V. Panov) - further improvements in extended Cyrillic (by Andrey V. Panov) Changes from 2.23 to 2.24 - instructions for U+05C0 ׀, U+05C3 ׃, U+05F3 ׳, and U+05F4 ״ in DejaVu Sans. (by Wesley Transue) - instructions for U+2116 in Sans (by Andrey V. Panov) - Unicode 5.1 update: moved U+F208 to U+2C6D, U+F25F to U+2C71, added U+2C6E-U+2C6F, U+2C72-U+2C73, updated outline of U+2C71 in Sans. (by Denis Jacquerye) - updated and instructed U+0401 in Sans (by Andrey V. Panov) - fixed the bug in Sans faces where U+02EC ˬ faced the wrong direction. Also, added a few more glyph instructions. (by Wesley Transue) - removed OS2Sub and OS2Strike that weren't intentional in Sans ExtraLight. (by Denis Jacquerye) - updated instructions for U+401, U+44F in Serif Book. (by Andrey V. Panov) - instructions for U+02C4 ˄, U+02C5 ˅, U+03D8 Ϙ, U+03D9 ϙ, U+0494 Ҕ, and U+0495 ҕ in Sans Book. (by Wesley Transue) - instructions for U+01A6 Ʀ, U+0238 ȸ, U+0239 ȹ, U+02EC ˬ, and U+05C6 ׆ in Sans Book. (by Wesley Transue) - DejaVuSans.sfd DejaVuSerif.sfd: updated instructions for U+447 and U+451 using code generated with xgridfit (by Andrey V. Panov) - instructions for a few glyphs in the Latin Extended-B Block, Greek Block, Cyrillic Block, and N'Ko block. (by Wesley Transue) - updated sfdnormalize.pl, and SFD files to new SFD format with empty lines. (by Denis Jacquerye) Changes from 2.22 to 2.23 - fixed bug which made Condensed fonts appear instead of normal width ones - added U+20DB, U+20DC, and U+20E1 to Sans (by Roozbeh Pournader) - added hinting instructions to U+01A7, U+01AA-U+01AC, U+01AE-U+01AF, U+01BC-U+01BD, U+01BF, U+01F7, U+0277, U+027F, U+0285-U+0286, U+0297, U+02AF, U+02B4-U+02B5, U+02BD, U+030D, U+0311, U+0329, U+04A0-U+04A1 in Sans Book (by Wesley Transue) - modified hinting instructions of U+04A2 in Sans Book (by Wesley Transue) - added hinting instructions to U+237D, U+2423 in Mono Book and Mono Bold (by Wesley Transue) - added mathematical alphanumeric symbols to all styles (by Max Berger) - added Unicode 5.1 U+2E18 as U+2E18.u51 (not yet usable) to Sans (by Roozbeh Pournader) - dereferenced all glyphs with mixed references and outlines (by Denis Jacquerye) - removed non-zero width from U+0344 in Sans (by Denis Jacquerye) Changes from 2.21 to 2.22 - directory structure has changed, we now use the Makefile - modified Armenian U+0565 in Sans (by Սահակ Պետրոսյան) - added double struck letters and numbers U+2102, U+210D, U+2115, U+2119-U+211A, U+211D, U+2124, U+213C-U+2140, U+2145-U+2149, U+1D538-U+1D539, U+1D53B-U+1D53E, U+1D540-U+1D544, U+1D546, U+1D54A-U+1D550, U+1D552-U+1D56B, U+1D7D8-U+1D7E1 to Serif (by Stephen Hartke) - added letterlike symbols U+2103, U+2109, U+2127, U+214B, U+2141-U+2144 to Serif (by Ben Laenen) - fixed outline direction of U+2143 in Sans Bold/Bold Oblique (by Ben Laenen) - added arrow set in Serif: arrows: U+2194-U+21FF; dingbats: U+27A1; supplemental arrows A: U+27F0-U+27FF; supplemental arrows B: U+2900-U+2975, U+297A; miscellaneous symbols and arrows: U+2B00-U+2B11 (by Ben Laenen) - added U+0180, U+01DE, U+01E0-01E1, U+022A, U+022C, U+0230, U+1E08-U+1E09, U+1E10-U+1E11, U+1EB0-U+1EB1 to Mono (by Denis Jacquerye) - adjusted U+01D5, U+01D7, U+01D9, U+1DB in Mono (by Denis Jacquerye) - added Ogham in Sans (by Wesley Transue) - added Yijing Hexagram Symbols in Sans (by Wesley Transue) - hinting instructions added to Cyrillic U+0460, U+04A6-U+04A7, U+04AC-U+04AD, U+04C7-U+04C8, U+04F6-U+04F7, U+04FA-U+04FB, U+050C-U+050D in Sans Book (by Wesley Transue) - adjusted Cyrillic letters U+042A, U+044A, U+044C, U+0459-U+045B, U+0462, U+048C-U+048D in Serif (by Andrey V. Panov) - hinting instructions added to Lao U+0EB7 in Sans (by Wesley Transue) - added Roman numerals and Claudian letter U+2160-U+2184 in Serif (by Ben Laenen) - added U+FFF9-U+FFFD to Sans, Serif and Mono (by Lars Næsbye Christensen) - added mathematical symbols to Serif: U+2200, U+2203-U+2204, U+2213-U+2214, U+2217-U+2218, U+2223-U+2226, U+2250-U+2255, U+2295-U+22AF, U+22C5 (by Ben Laenen) - modified bullet symbol U+2219 in Serif (by Ben Laenen) Changes from 2.20 to 2.21 - added U+FE20-U+FE23 (half diacritics) to Sans (by Denis Jacquerye) - added anchor "half" to position right half of double marks, U+FE21 or U+FE23 to Sans (by Denis Jacquerye) - shifted U+0360 up to avoid collision with some outlines in Sans (by Denis Jacquerye) - added anchor above-mark anchor to U+035D, U+035E, U+0360, U+0361 in Sans (by Denis Jacquerye) - added instructions for ff, ffi, ffl ligatures in Serif Bold (by Eugeniy Meshcheryakov) - added instructions to some N'Ko glyphs (by Wesley Transue) - added instructions to some Lao glyphs (by Wesley Transue) - cleaning up 'liga' Standard Ligature in Latin, in Sans and Sans Mono (by Denis Jacquerye) - added U+046A, U+046B (big yus) in Serif (by Andrey V. Panov) - added box drawing symbols to Sans and Serif (by Lars Næsbye Christensen) - added Makefile to improve font and packages generating (by Nicolas Mailhot) Changes from 2.19 to 2.20 - removed TeX and TeXData tags from all sfd files (by Eugeniy Meshcheryakov) - removed all 'frac' lookups (by Eugeniy Meshcheryakov) - fixed duplicate glyph names (by Eugeniy Meshcheryakov) - removed standard ligatures with U+00B7 in Mono (by Eugeniy Meshcheryakov) - use reference to U+002D in U+00AD in Sans Oblique, and adjust instructions (by Eugeniy Meshcheryakov) - updated Cyrillic in Sans Extra Light (by Andrey V. Panov) - added instructions to N'Ko U+07C1-U+07C6, U+07CA, U+07CE-U+07CF, U+07D1, U+07D3-U+07D4, U+07D8, U+07DB and U+07EB in Sans (by Wesley Transue) - added instructions to Lao U+0E8A, U+0E95, U+0E97, U+EA5, U+0EB4 and U+0EB5 (by Wesley Transue) - adjusted instructions for Hebrew glyphs (by Denis Jacquerye) - added instructions for U+0265 in Sans Bold (by Denis Jacquerye) - fix U+1D68 in Sans: it had the shape of delta, where it should be a rho (by Ben Laenen) - remove U+1D5C glyph in Sans Oblique (it was empty) (by Ben Laenen) - fix instructions of U+01AD in Sans Bold (by Ben Laenen) - fix instructions of U+042D in Serif (by Ben Laenen) - remove buggy instructions of U+2328 in Serif (by Ben Laenen) - corrected width of U+2C75-U+2C76 in Sans Bold and Serif Bold (by Gee Fung Sit) - added U+2C75-U+2C77 to Mono (by Gee Fung Sit) Changes from 2.18 to 2.19 - fixed misplaced symbols (U+2325,2326) in Sans Oblique (by John Karp) - added Mark to Base anchors: 'cedilla' for combining cedilla and 'above-legacy' for stacking above precomposed glyphs (just a,e,i,o,u with macron for now) in Sans (by Denis Jacquerye). - added contextual substitution for Case and Dotless forms in all Sans variants (by Denis Jacquerye). - renamed 'ccmp' lookups for RTL and Basic (LGC, etc.) (by Denis Jacquerye) - added anchor 'cedilla' for vowels in Sans. (by Denis Jacquerye) - extended contextual dotless and case substitutions to handle both below and above diacritics (by Denis Jacquerye) - renamed Dotless and Case Form GSUB lookups in Sans with meaningful names (by Denis Jacquerye) Changes from 2.17 to 2.18 - Re-encoded the source files for Full Unicode (by Ben Laenen) - Re-enabled the "ff", "fl", "fi", "ffl", "ffi" ligatures by default in Serif (by Ben Laenen) - Disabled the "fi", "ffi" ligatures for languages with dotless i in Serif (by Ben Laenen) - added Tifinagh to Sans Book and Bold, U+2D30-U+2D65, U+2D6F, partially hinted in Sans Book. (by Denis Jacquerye) - added Tai Xuan Jing Symbols (U+1D300-1D356) to Sans (by Remy Oudompheng) - added double-struck letters (U+1D538-U+1D56B minus reserved code points) to Sans (by Gee Fung Sit) - added U+22EE-U+22F1 to Sans (by Gee Fung Sit) - added U+2C67-U+2C6C, U+2C75-U+2C77 to Serif (by Gee Fung Sit) - italicized various glyphs in Latin Extended-B, IPA Extensions, Spacing Modifier Letters, Phonetic Extension (Supplement) and Super- and Subscripts in Serif Oblique fonts (by Gee Fung Sit) - modified outlines, bearings of Hebrew U+05D6, U+05D8, U+05DB, U+05DE, U+05E0, U+05E1, U+05E2, U+05EA in Sans Book and Oblique, adjusted hinting in Book based on Yotam Benshalom's comments. (by Denis Jacquerye) - added Braille Patterns (U+2800-U+28FF) to Serif fonts (by Gee Fung Sit) - added N'Ko to Sans Book and Bold: U+07C0-U+07E7, U+07EB-U+07F5, U+07F8-U+07FA (by Eugeniy Meshcheryakov) - added U+0ED8 (Lao digit 8) to Sans (by Remy Oudompheng) - added Lao diacritics U+0EB0-0EB9, U+0EBB-0EBC, U+0EC8-0ECD to Mono (by Remy Oudompheng) - renamed Serif [Bold] Oblique, make it Italic (by Eugeniy Meshcheryakov) - added U+29FA-U+29FB to Sans and Sans Mono (by Gee Fung Sit) - swapped glyphs for Eng U+014A from Sami Eng to African Eng, the latter being more common (by Denis Jacquerye) - swapped ae U+00E6 and ae.alt in Serif Italics fonts, thus fixing #8213 (by Denis Jacquerye) - minor improvements to Misc. Symbols in Sans (by Gee Fung Sit) - minor improvements and additions to Sans ExtraLight (by Gee Fung Sit) - improved instructions for various Cyrillic letters (by Eugeniy Meshcheryakov) - fixed hinting of theta and chi in Sans Book (by Ben Laenen) - added Georgian Mkhedruli to Sans, Serif and Mono, ASumtavruli to Sans and Serif (by Besarion Gugushvili) Changes from 2.16 to 2.17 - Sans fonts: fix position for certain combinations of Arabic fatha, kasra, shadda, damma, kasratan, dammatan, fathatan and hamza (by Ben Laenen) - added 'ae.alt' to Serif Oblique fonts, with design matching shape of italic 'a' instead of slanted 'a', see bug #8213 (by Denis Jacquerye) - added super- and subscripts to Serif and Mono: U+1D2C-U+1D2E, U+1D30-U+1D3C, U+1D3E-U+1D42, U+1D62-U+1D65, U+1D78, U+2071, U+207A-U+207E, U+208A-U+208E, U+2090-U+2094 (by Gee Fung Sit) Changes from 2.15 to 2.16 - fixed hinting instructions for digits in DejaVu Sans Oblique, Bold Oblique, and Serif Book to not change glyph width (by Eugeniy Meshcheryakov) - added instructions for U+0404, U+0411, U+0413, U+0414, U+0417-U+041B, U+041F, U+0423, U+0424, U+0426-U+0429, U+042C, U+042E, U+042F, U+0490 in Serif Bold (by Eugeniy Meshcheryakov) - added U+0220 and Eng.alt to Serif fonts (by Denis Jacquerye) - added U+232C, U+2394, U+23E3 to Sans fonts (by John Karp) - added U+230C-U+230F, U+231C-U+231F to Sans fonts, fixing bug:9547 (by John Karp) - adjusted dot below, dot above, dieresis above, dieresis below in Sans fonts (by Denis Jacquerye) - added U+2300, U+2301, U+2303, U+2304, U+2305, U+2307, U+2326, U+2327, U+232B, arrow.base to Sans fonts (by John Karp) - adjusted dot and dieresis below and above in Serif fonts (by Denis Jacquerye) - added U+1E1C-U+1E1D to Serif fonts (by Denis Jacquerye) - added U+22BE, U+22BF (by Wesley Transue) - added U+2324; modified U+2325: more standard proportions, and matches U+2324 and U+2387; added U+2387 : flipped U+2325 with standard arrowhead (by John Karp) - added Lao digits U+0ED0-0ED7, U+0ED9 (by Remy Oudompheng) - added to Mono in Arabic block : U+060C, U+0615, U+061B, U+061F, U+0621-U+063A, U+0640-0655, U+065A, U+0660-066F, U+0674, U+0679-0687, U+0691, U+0692, U+0698, U+06A1, U+06A4, U+06A9, U+06AF, U+06B5, U+06BA, U+06BE, U+06C6, U+06CC, U+06CE, U+06D5, U+06F0-06F9 (by Remy Oudompheng) - added to Mono in Arabic Presentations Forms-A : U+FB52-FB81, U+FB8A-FB95, U+FB9E, U+FB9F, U+FBAA-FBAD, U+FBE8, U+FBE9, U+FBFC-FBFF (by Remy Oudompheng) - added to Mono in Arabic Presentations Forms-B : U+FE70-FE74, U+FE76-FEFC, U+FEFF (by Remy Oudompheng) - added U+05BA, U+05BE, U+05F3, U+05F4, U+FB1E, U+FB21-U+FB28, U+FB4F to Sans (by Eugeniy Meshcheryakov) - added U+2102 to Mono (by Eugeniy Meshcheryakov) - added U+2983-U+2984 to Sans (by Gee Fung Sit) - added U+2A2F to Sans, Serif and Mono (by Gee Fung Sit) - added U+2373-2375, U+237A to Sans (by John Karp) - converted kern pairs to kern classes with Tavmjong Bah's scripts (by Denis Jacquerye) - set ScriptLang of kerning classes to just latn because of Pango bug (by Denis Jacquerye) - added DNK to ScriptLang latn otherwise it is excluded, and SRB and MDK to cyrl (by Denis Jacquerye) - removed flag 0x80 in generate.pe, otherwise it generates kerning tables some systems don't like; thus loosing Apple tables (by Denis Jacquerye) - removed ligature for precomposed legacy characters of Sans Oblique fonts (by Denis Jacquerye) - added bearings to en dash U+2013, em dash U+2014 and figure dash U+2012 by making dashes shorter, preserving character width (by Denis Jacquerye) - reduced U+031C, U+0325 (ring below), U+0339 to be entirely visible; added instructions in Sans Book; changed U+1e00-U+1e01 to use new ring below (by Denis Jacquerye) - adjusted circumflex below on U+1E12-U+1E13, U+1E18-U+1E19, U+1E3C-U+1E3D, U+1E4A-U+1E4B, U+1E70-U+1E71, U+1E76-U+1E77 in Sans fonts (by Denis Jacquerye) - Added U+0ED4, U+0ED5 to DejaVu Sans (by Remy Oudompheng) - Lao-specific anchors (by Remy Oudompheng) - added alternate I to match the small capital in Sans (by Gee Fung Sit) Changes from 2.14 to 2.15 - improved hinting in Sans Oblique to deal with some spacing and inconsistency issues (by Ben Laenen) - added anchors to Mono Book, and added GPOS rules for combining diacritics to show up as zero width glyphs (by Ben Laenen) - removed U+F21C (PUA), it was copy of U+2C64 from Latin Extended C (by Eugeniy Meshcheryakov) - added U+27E6-U+27E7 to Sans (by Gee Fung Sit) - added U+1407, U+1409, U+140C-U+141B, U+141D-U+1425, U+1427-U+142E, U+1435-U+1438, U+143A-U+1449, U+1452, U+1454, U+1457-U+1465, U+1467-U+146A, U+1471, U+1474-U+1482, U+1484-U+1488, U+148F, U+1492, U+14A0, U+14A2, U+14A9, U+14AC-U+14BA, U+14BC, U+14BD, U+14C6, U+14C9-U+14CF, U+14D1, U+14D2, U+14D9, U+14DC-U+14E9, U+14EC, U+14F3, U+14F6-U+1504, U+1506, U+1507, U+1510-U+1525, U+152C, U+152F-U+153D, U+1540, U+1541, U+154E, U+154F, U+1552, U+155B, U+155C, U+1568, U+1569, U+1574-U+157B, U+157D, U+15A7-U+15AE, U+1646, U+1647 (by Eugeniy Meshcheryakov) - fixed several contours to not intersect, use horizontal or vertical tangents, use integer coordinates, etc in Sans Book (by Denis Jacquerye) - added U+0496-U+0497 in Serif (by Andrey V. Panov) Changes from 2.13 to 2.14 - added Philippine peso glyph U+20B1 (by Clayborne Arevalo) - made U+2012 have the same width as digits, according to Unicode 5.0, page 206 (by Roozbeh Pournader) - made all of the "above" combining characters remove the dot of "i", "j", etc (Soft_Dotted characters), according to Unicode 5.0, page 228 (by Roozbeh Pournader) - made U+012F, U+03F3, U+0456, U+0458, U+1E2D, and U+1ECB (all fonts except Mono), U+0249, U+2148, and U+2149 (Sans and Sans Condensed), U+0268 (Sans ExtraLight, Serif and Serif Condensed), and U+029D (Serif and Serif Condensed) respect the Soft_Dotted property (by Roozbeh Pournader) - added U+223E, U+223F, U+2240, U+22C2, U+22C3 to Sans (by Remy Oudompheng) - added U+203D to Serif (by Gee Fung Sit) - added zero-width glyphs for U+2061-U+2063 to Sans and Serif (by Gee Fung Sit) - changed isolated forms of Arabic waw (U+0648, U+0624 and U+06C6) (bug #9432) (by Ben Laenen) - added Lao consonants U+0E81, U+0E82, U+0E84, U+0E87, U+0E88, U+0E8A, U+0E8D, U+0E94-0E97, U+0E99-0E9F, U+0EA1-0EA3, U+0EA5, U+0EA7, U+0EAA, U+0EAB, U+0EAD-0EAF to Sans Mono (by Remy Oudompheng) - added U+0200-U+0217, U+0226-U+0229, U+02F3, U+1E00-U+1E07, U+1E0A-U+1E0B, U+1E18-U+1E1F, U+1E22-U+1E23, U+1E28-U+1E2D, U+1E3A-U+1E3B, U+1E40, U+1E48-U+1E49, U+1E56, U+1E58-U+1E59, U+1E5E-U+1E5F, U+1E60, U+1E68-U+1E6B, U+1E6E-U+1E6F, U+1E72-U+1E77, U+1E86-U+1E8B, U+1E92-U+1E96, U+1EA0-U+1EA1, U+1EF4-U+1EF5 to Mono (by Ben Laenen) - renamed uppercase variants of diacritics (macron, breve, double grave, double acute, inverted breve, dot above) to "uni03XX.case" in Mono (by Ben Laenen) - moved uppercase variants of diacritics up in Mono so they properly vertically align on capitals (by Ben Laenen) - precomposed glyphs with macron, breve, double grave, double acute, inverted breve, dot above, macron below, breve below, inverted breve below, dot below, cedilla, caron below, circumflex below, diaeresis below, tilde below now reference to combining diacritics instead of space modifiers in Mono (by Ben Laenen) - made ring below (U+0325), and half rings below (U+031C and U+0339) smaller in Mono (by Ben Laenen) - added U+205F to all fonts (by Roozbeh Pournader) - added U+035E-U+035F to Sans (by Roozbeh Pournader) - added empty glyphs for U+034F, U+202A-U+202E, U+2060, U+206A-206F, U+FE00-U+FE0F to non-Mono fonts (by Roozbeh Pournader) - added U+2101, U+2107-U+2108, U+210B, U+210C, U+2110, U+2112, U+211B, U+211F, U+2123, U+2125, U+2128-U+2129, U+212C-U+212D, U+212F, U+2130-U+2131, U+2133, U+2136-U+213A, U+2141-U+2144, U+2B00-U+2B11, U+2B20-U+2B23 to Sans (by John Karp) - reshaped omega (U+03C9) in Mono (by Ben Laenen) - added U+2205, U+22C6, U+2300-U+2301, U+2303-U+2306, U+230C-U+230F, U+2312-U+2315, U+231C-U+231F, U+2335, U+2337-U+233E, U+2341-U+2344, U+2347-U+2348, U+234B-U+234D, U+2349-U+2350, U+2352-U+2354, U+2357-U+2359, U+235A-U+235C, U+235E-U+2360, U+2363-U+2365, U+2368-U+2369, U+236B-U+2370, U+2373-U+237A, U+2380-U+2383, U+2388-U+238B, U+2395 in Mono (by Ben Laenen) Changes from 2.12 to 2.13 - adjusted U+0198B, U+01B3-U+01B4 in Sans, hinted U+01B4 in Sans Book (by Denis Jacquerye) - added U+27F0-U+27FF, U+2906-U+2907, U+290A-U+290B, U+2940-U+2941 to Sans (by Denis Jacquerye) - added U+01E6-U+01E9, U+01EE-U+01EF, U+01F4-U+01F5, U+01FC-U+01FF, U+021E-U+021F, U+0245, U+02BD, U+02C9, U+1E9B, U+2045-U+2046, U+2213, U+22C5, U+22EF to Sans Mono (by Roozbeh Pournader) - added U+04FA-U+04FD to Sans (by Michael Everson) - removed U+2329 and U+232A because of their CJK properties, added U+27E8 and U+27E9 in their stead, fixing part of bug #9038 (by Roozbeh Pournader) - corrected and improvised U+0466-U+0469, U+046E-U+0471, U+047C-U+047D, U+0482, U+0484-U+0486, U+0492-U+0493, U+04B0-U+04B1, U+050C-U+050D, and U+204A in Sans (by Michael Everson) - added instructions for U+0402, U+0409, U+040A, U+040B, U+044D, U+040F, U+0452, U+0459-U+045B, U+045F to Sans Book (by Eugeniy Meshcheryakov) - made italic shape for U+431, U+432, U+437, U+43B, U+43C, U+43D, U+444, U+447, U+44D, U+44F, U+459, U+45A in SerifOblique and SerifBoldOblique (by Andrey V. Panov) - modified U+024C to match glyph in Unicode chart, fixing bug #9039 (by Denis Jacquerye) - made some canonically equivalent characters share the same glyph: U+02B9 = U+0374, U+0343 = U+0313, and U+0387 = U+00B7 also adjusting U+02BA to look like double U+02B9, fixing parts of bug #9038 (by Roozbeh Pournader) - changed shapes for U+0478 and U+0479 in Sans to those in the Unicode charts, based on a recent decision by Unicode Technical Committee to only use the digraph form (by Michael Everson) - adjusted width of NBSP U+00A0 and NNBSP U+202F, fixing bug #8401 (by Denis Jacquerye) - fixed several contours to not intersect, use horizontal or vertical tangents, use integer coordinates, etc (by Roozbeh Pournader and Denis Jacquerye) - added U+1402, U+1430, U+144D, U+146C, U+148A, U+14A4, U+14C1, U+14D4, U+14EE, U+1527, U+1545, U+157E, U+158E, U+15AF to Sans (by Eugeniy Meshcheryakov) - enlarged width of U+459 and U+45A in Serif (by Andrey V. Panov) - made traditional shape for U+452, U+45B (by Andrey V. Panov) - added euro sign U+20AC to Sans ExtraLight, making fontconfig recognize the font as supporting English (by Denis Jacquerye) Changes from 2.11 to 2.12 - added U+0180 to Serif (by Denis Jacquerye) - improved and/or hinted Armenian letters U+0542, U+0546, U+0562, U+0563, U+0564, U+0577, U+0582 in Sans (by Ben Laenen) - added U+4FE-U+4FF, U+512-U+513, U+2114, U+214E, U+26B2 to Sans (by Gee Fung Sit) - adjusted U+0496-U+0497, U+049A-U+04A1 in Sans to match U+0416, U+041A, U+0436 and U+043A (by Gee Fung Sit) - Mathematical Operators in Sans: changed U+22C0-U+22C1 to match other n-ary operators, adjusted U+2203-U+2204, changed U+2220 in Sans to match the style of U+2221 (by Gee Fung Sit) - added U+1401, U+1403-U+1406, U+140A, U+140B, U+1426, U+142F, U+1431-U+1434, U+1438, U+1439, U+1449, U+144A, U+144C, U+144E-U+1451, U+1455, U+1456, U+1466, U+146B, U+146D-U+1470, U+1472, U+1473, U+1483, U+1489, U+148B-U+148E, U+1490, U+1491, U+14A1, U+14A3, U+14A5-U+14A8, U+14AA, U+14AB, U+14BB, U+14C0, U+14C2-U+14C5, U+14C7, U+14C8, U+14D0, U+14D3, U+14D5-U+14D8, U+14DA, U+14DB, U+14EA, U+14ED, U+14EF-U+14F2, U+14F4, U+14F5, U+1405, U+1526, U+1528-U+152B, U+152D, U+152E, U+153E, U+1542-U+1544, U+1546-U+154D, U+1550, U+1553, U+1555-U+155A, U+1567, U+156A, U+157C, U+157F-U+1585, U+158A-U+158D, U+158F-U+1596, U+15A0-U+15A6, U+15DE, U+15E1, U+166E-U+1676 to Sans (by Eugeniy Meshcheryakov) - re-enabled Latin ligatures fi, ffi, fl, ffl and ff in Sans (by Ben Laenen) - made italic shape for U+436, U+44A, U+44B, U+44C, U+44E, U+45F, U+463 in SerifOblique and SerifBoldOblique (by Andrey V. Panov) - fixed sub- and superscript metrics in Condensed Sans (bug #8848) (by Ben Laenen) - added U+474, U+475 in Serif (by Andrey V. Panov) - hinted Greek glyphs U+03B7, U+30B8, U+03B9, U+03C1, U+03C3, U+03C6 in Mono Book (by Ben Laenen) Changes from 2.10 to 2.11 - added instructions for Hebrew glyphs (Sans Book, by Eugeniy Meshcheryakov) - changed U+01A6 (Latin Yr) after bug #8212, in Sans, Serif and Sans Mono fonts (by Denis Jacquerye). - removed instruction for U+2600-U+26A1 (by Mederic Boquien) - added U+202F and set width of U+00A0 (nobreakingspace) to the same as U+0020, space (by Denis Jacquerye). - added and improved instructions for various Cyrillic letters (by Eugeniy Meshcheryakov) - Changed U+416, U+42F, U+427 (non-Bold), U+436, U+447 (non-Bold), U+44F, U+437 (Bold), corrected U+40F, U+414, U+424, U+426, U+429, U+434, U+438 (Bold), U+446, U+449, U+44D (non-Bold), U+45F in Sans Mono (by Andrey V. Panov) - made small corrections to Cyrillic, most appreciable to U+409, U+413, U+41B, U+427 and U+433, U+434, U+43B, U+447, U+459 (upright fonts) to Serif (by Andrey V. Panov) - adjusted bearings of U+410, U+416, U+41A, U+42F, U+436, U+43A, U+443, U+44F in Serif (by Andrey V. Panov) - enlarged width of U+44A, U+44B, U+44C, U+463 in Serif (by Andrey V. Panov) - added ligature "iacute" as "afii10103" (U+456) "acutecomb" in Serif (by Andrey V. Panov) - made italic shape to U+446, U+448, U+449 in Serif (by Andrey V. Panov) - added "afii10831" (U+F6C7), "afii10832" (U+F6C8) in Serif (by Andrey V. Panov) - new minimum version of fontforge is 20061014 (by Ben Laenen) Changes from 2.9 to 2.10: - added U+0242, U+024A-U+024B, U+024E-U+024F, U+037C-U+037D, U+0E3F, U+1D2C-U+1D2E, U+1D30-U+1D42, U+1D5D-U+1D6A, U+1D78, U+1DB8, U+2090-U+2094, U+20D0-U+20D1, U+2C60-U+2C66, U+2C6B-U+2C6C, U+2C74 and U+FB29 to Sans (by Gee Fung Sit) - added Lao glyphs : U+0E81-0E82, U+E084, U+0E87-0E88, U+0E8A, U+0E8D, U+0E94-0E97, U+0E99-0E9F, U+0EA1-0EA3, U+0EA5, U+0EA7, U+0EAA-0EAB, U+0EAD-0EB9, U+0EBB-0EBD, U+0EC0-0EC4, U+0EC6, U+0EC8-0ECD, U+0EDC-0EDD (by Remy Oudompheng) - fixed U+0193 not showing in Windows (bug #7897) (by Ben Laenen) - changes to U+222B-222D in Sans Mono (by Remy Oudompheng) - ported the three remaining currency symbols from Arev (U+20B0, U+20B2-U+20B3), and replaced one (U+20AF) in Sans (by Lars Naesbye Christensen) - corrected U+20A5 in Sans (by Gee Fung Sit) - merged Double-Struck Letters from Arev: U+2102, U+210D, U+2115, U+2119-U+211A, U+2124, U+213C-U+2140 (by Gee Fung Sit) - added U+2308-U+230B and U+2329-U+232A to Sans Mono and Serif faces, fixed incorrect direction of U+2329 in Sans faces, and improved U+2308-U+230B in Sans faces per Ben Laenen's suggestions (by David Lawrence Ramsey) - added U+06D5 and final form of it (needed for Kurdish) (by Ben Laenen) - added two special glyphs U+F000 and U+F001 in Sans Book that show the current ppem size (horizontal and vertical) (by Ben Laenen) - added U+2318 and U+2325 to Sans Mono faces, based on the Sans versions (by David Lawrence Ramsey) - added U+2B14-U+2B1A to all faces except Sans ExtraLight (by David Lawrence Ramsey) - respaced all Geometric Shapes characters in Serif faces to match those in Sans faces again, respaced U+23CF in Sans, Sans ExtraLight, and Serif faces to match U+25A0 (or Sans in Sans ExtraLight's case) again, and respaced U+2B12-U+2B13 in Sans and Serif faces to match U+25A1 again (by David Lawrence Ramsey) - corrected width of Modifier Small Letters U+1D43-1D5B in Sans Oblique and U+1D9B-U+1DBF in Sans Oblique and Sans Bold Oblique (by Gee Fung Sit) - added a bunch of glyphs to Sans ExtraLight (see SVN for details) (by Gee Fung Sit) - adjusted Cyrillic descenders in Sans ExtraLight to sync with Sans (by Gee Fung Sit) - added U+0242, U+0245 to Serif (by Gee Fung Sit) - replaced the SHPIX routines which gave them bad spacing at certain sizes in FreeType for A, V, Z, v and z in Sans Bold (by Ben Laenen) Changes from 2.8 to 2.9: - DejaVuSansExtraLight.sfd: changed family name from "DejaVu Sans" to "DejaVu Sans Light" (in case we add a Light weight variant), so legacy apps that understand only 4 styles are happy. (by Denis Jacquerye) - added Name ID 16, aka preferred family name, and Name ID 17, aka preferred style name, so contemporary apps that understand more that 4 styles can use big fonts families "DejaVu Sans" and "DejaVu Serif". For those, Extralight and Condensed are just styles not different families. (by Denis Jacquerye) - added U+22B6-22BD, U+22C0-22C1, U+22D6-22D7 to Sans. (by Remy Oudompheng) - added U+037B, U+2184, U+2C67-U+2C6A and U+2C75-U+2C77 to Sans (by Gee Fung Sit) - adjusted asteriskmath (U+2217) for consistency with other mathematical operators in Sans (by Ben Laenen) - hinted some Armenian capitals in Sans Book (by Ben Laenen) - added U+0246 - U+0249 (by Ben Laenen) - BUGFIX : swapped U+224E and U+224F, in Sans, Sans Condensed and Sans Mono (by Remy Oudompheng) - adjusted U+20B5 (by Mederic Boquien) - swapped U+21DA and U+21DB which were in wrong order (by Heikki Lindroos) - added U+222E-2233, U+239B-23AD, U+2A00-2A02, U+2A0F-2A1C to Sans (by Remy Oudompheng) - added U+239B-23AD to Mono (by Remy Oudompheng) - added U+2024-2025 to Serif (by Mederic Boquien) - added U+222C-222D, U+2A0C-2A0E to Serif (by Remy Oudompheng) - added U+2190-21FF to Mono (by Heikki Lindroos) - added Hebrew glyphs - U+05B0-U+05BD, U+05BF-U+05C3, U+05C6, U+05C7, U+05D0-U+05EA, U+05F0-U+05F2, U+FB1F, U+FB20, U+FB2A-U+FB36, U+FB38-U+FB3C, U+FB3E, U+FB40, U+FB41, U+FB43, U+FB44, U+FB46-U+FB4E (by Gee Fung Sit and Eugeniy Meshcheryakov) - adjustments for Cyrillic in Sans (by Andrey V. Panov) - made italic shape for U+0434, U+0456, U+0457 in SerifOblique and Serif Bold Oblique (by Andrey V. Panov) Changes from 2.7 to 2.8: - fixed instructions for U+0423, U+0427, U+0447, U+0448 in Serif, so they look good at large sizes too (by Eugeniy Meshcheryakov) - added U+FB00 and U+FB03 to U+FB06 to Serif typefaces (by Heikki Lindroos) - added U+26B0-U+26B1, U+2701-U+2704, U+2706-U+2709, U+270C-U+2727, U+2729 to U+274B, U+274D, U+274F to U+2752, U+2756, U+2758-U+275E, U+2761 to U+2775 (by Heikki Lindroos) - added and improved instructions for Cyrillic letters in Mono and Serif (Book, by Eugeniy Meshcheryakov) - rotated U+26B0 (was too small in mono) (by Gee Fung Sit) - adjusted U+1EDA-U+1EDD, U+1EE8-U+1EEB, capitals using capital specific accent and moved diacritics to match position on U+00F2 (ograve), etc. (by Denis Jacquerye) - added U+20D6, U+20D7 to Sans (by Gee Fung Sit) - made Armenian ligatures discretionary since the Firefox ligature problem still isn't fixed (by Ben Laenen) - moved Armenian hyphen U+058A to a higher position (bug #7436) (by Ben Laenen) - hinted Greek glyphs in Sans Bold (by Ben Laenen) - enabled Arabic lam-alif ligatures when diacritics are used (by Ben Laenen) Changes from 2.6 to 2.7: - added glyphs needed for Kurdish: U+0695, U+06B5, U+06C6, U+06CE and their init/medi/fina forms in Sans (by Ben Laenen) - added U+02CD, U+01F8 - U+01F9, U+1E3E - U+1E3F, U+1E30 - U+1E35, U+1EBC - U+1EBD, U+1EF8 - U+1EF9 (includes glyphs needed for Yoruba, Maori, Guarani and Twi) (by Ben Laenen) - added U+22C8-22CC, U+29CE-29D5, U+2A7D-2AA0, U+2AAE-2ABA, U+2AF9-2AFA to Sans (by Remy Oudompheng) - adjusted diacritics on Vietnamese, Pinyin and other characters: U+01A0-U+01A1, U+01AF-U+01B0, U+01D5-U+01DC, U+01DE-01E1, U+01FA-U+01FB U+022A-U+022D, U+0230-U+0231, U+1E14-U+1E17, U+1E4C-U+1E53, U+1E78-U+1E7B, U+1EA4-U+1EF1 in Sans (Book, Bold and Oblique) (by Denis Jacquerye) - added basic arrows U+2190-U+2193 in Serif, which completes MES-1 compliance for Serif (by Ben Laenen) - added U+01E4, U+01E5, U+01FA, U+01FB, U+02BD, U+02C9 and U+02EE to Serif (by Ben Laenen) - fixed U+0209 in Serif Bold Oblique (by Ben Laenen) - adjusted Box Drawing block characters U+2500-257F in Mono to fit character cell, shifting them up by 416 (Denis Jacquerye) - redid U+0194 in Sans (by Ben Laenen) - added U+2217-2218, U+2295-22A1 to Mono (by Remy Oudompheng) - added U+0462 to Serif (by Andrey V. Panov) - added U+226C, U+228C-228E, U+2293-2294, U+22F2-22FF to Sans (by Remy Oudompheng) - adjusted U+2208-220D in Sans (by Remy Oudompheng) - improved some Cyrillic glyphs in Mono (by Andrey V. Panov), rewritten instructions for changed glyphs (by Eugeniy Meshcheryakov) - added U+1E0E-1E0F, U+1E8E-1E8F to Mono fonts (by Denis Jacquerye). (bug #7166) - renamed 'Dotabove' to 'Dotaccent' in Mono Sans Oblique to match other fonts (by Denis Jacquerye). - added U+200B-U+200F in Sans faces and Serif faces, U+200B and U+200C were in Sans already (by Lars Naesbye Christensen) - added U+2601-U+262F, U+263D, U+263E, U+2648-U+265F, U+2668, U+2670-U+268B, U+2690-U+269C, U+26A0, U+26A1, U+2794, U+2798-U+27AF, U+27B1-U+27BE to Mono (by Heikki Lindroos) - replaced the references with unshifted ones for both κ U+03BA and к U+043A in Mono Book (by Denis Jacquerye) - fixing glyph for U+04ED in Mono Book, consisted only of dieresis (by Andrey V. Panov). Changes from 2.5 to 2.6: - redid U+2032 - U+2037, U+2057 based on Arev in Sans (by Gee Fung Sit) - added U+0195, corrected U+039E, U+204B in Sans ExtraLight (by Gee Fung Sit) - added instructions for some Cyrillic letters in Sans Bold (by Eugeniy Meshcheryakov) - added vulgar fractions U+2153-U+215F for Serif, made with references (by Lars Naesbye Christensen) - added U+228F-2292, U+2299-22AF, U+22B2-22B5, U+22CD, U+22D8-22ED to Sans (by Remy Oudompheng) - added U+2208-220D, U+2238-223D, U+2278-2281, U+228A-228B, U+228F-2292, U+22CD, U+22DA-22E9 to Mono (by Remy Oudompheng) - fixed misplaced dot in U+2250 in Mono (by Remy Oudompheng) - added instructions for some Cyrillic letters in Mono Book and Bold(by Eugeniy Meshcheryakov) - minor changes to U+2241, U+2261-2263, U+22A4, U+22A5 in Sans (by Remy Oudompheng) - added hinting instructions to lowercase Armenian glyphs in Sans Book (by Ben Laenen) - changed U+2208, U+220B to match U+2209 and U+220C in Sans Bold (by Remy Oudompheng) - added Braille patterns U+2800-U+28FF to Sans (by Mederic Boquien) - added instructions for some Cyrillic letters in Serif Book (by Eugeniy Meshcheryakov) - renamed BoldOblique fonts to Bold Oblique in TTF Name as originally in Bitstream Vera fonts (by Denis Jacquerye) - added hinting instructions to some Latin-B Extended and IPA characters in Sans Book (by Denis Jacquerye and Ben Laenen) - adjusted bearings, replaced diacritics, hinted hook and horn for Vietnamese in Sans Book (by Denis Jacquerye) - made FAX, TM, TEL, etc. discritionary ligatures in Sans and Serif fonts (by Denis Jacquerye) - removed ligatures of precomposed characters in Sans and Serif fonts (by Denis Jacquerye) - added U+F208, U+F20A, U+F215-F217, U+F21A-F21B, U+F25F in PUA (from SIL's PUA, probably in Unicode 5.0): U+0243, U+0244, U+0245, U+024C, U+024D, U+2C64, (U+2C6D), (U+2C71) - modified some glyphs in Serif Oblique to make them more italic (by Denis Jacquerye) Changes from 2.4 to 2.5: - fixed excessive kerning bug that occurs with Pango (by Denis Jacquerye) - added U+20AF to Sans and Serif (by Lars Naesbye Christensen) - regenerated Condensed faces (by Ben Laenen) - added U+035C-U+035D to Sans, fixed U+0361 (by Denis Jacquerye) - integrated 255 characters from Arev fonts: Latin Extended-B, Spacing Modifiers, Combining Diacritical Marks, Cyrillic, Cyrillic supplement, General Punctuation, Letterlike Symbols, Arrows, Mathematical Operators, Miscellaneous Technical, Dingbats, Alphabetic Presentation Forms (by Denis Jacquerye) - added basic Cyrillic and basic Greek to Sans ExtraLight (by Denis Jacquerye) - added U+0498, U+049A, U+04AA, U+04AB, U+04AF to Serif (by Eugeniy Meshcheryakov) - added U+0494, U+0495, U+0498, U+0499, U+04AA, U+04AB, U+04C3, U+04C4, U+04C7, U+04C8 to Mono (by Eugeniy Meshcheryakov) - adjusted weight of U+0256, U+0257, U+0260, U+0272, U+0273, U+0277, U+029B, U+02A0 and modifed U+028B and U+027A in Mono (by Denis Jacquerye) - added U+2000-200A to Mono (by Denis Jacquerye) - added vulgar fractions U+2153 - U+215F to Mono (by Gee Fung Sit) - adapted metrics of Arabic glyphs so they stay above cut-off height in Sans (by Ben Laenen) - fixed mkmk anchors for Arabic diacritics so they stack properly in Sans (by Ben Laenen) - fixed weight of lowercase upsilon in Sans Bold, make small adjustment to lowercase omega in Sans (by Ben Laenen) - added U+210E (by Mederic Boquien) - unslanted U+2201, U+221B and U+221C in Sans Oblique (by Mederic Boquien) - added several mathematical relation symbols to Sans and Mono (U+2241-224C, U+2250-2255, U+2260-2269, U+226E-2277, U+2282-2287) modified U+223C to match other tildes, and U+2282-2284 to have the same shape. (by Remy Oudompheng) - made U+2234-U+2237 refer to U+2219 instead of U+00B7 in Sans (by Mederic Boquien) - added U+2238-223B, U+226A-226B, U+2278-2281, U+2288-228B to Sans (by Remy Oudompheng) - unslanted and changed reference of U+22C5 from U+00B7 to U+2219 in Sans (by Mederic Boquien) - added U+224D-225F, U+226D, U+22C6 to Sans and unslanted U+2219 in Sans Oblique. (by Remy Oudompheng) - added U+224D-225F, U+226D to Mono, shifted U+2266-2269 higher upwards and unslanted U+2219 in Oblique. (by Remy Oudompheng) - merged Coptic glyphs from Arev 0.2 (by Lars Naesbye Christensen) - fixed and adjusted various Cyrillic glyphs in Serif (by Andrey V. Panov) - made fi, fl... ligatures discretionary ligatures (by Ben Laenen) Changes from 2.3 to 2.4: - added U+04A2, U+04A3, U+04AC - U+04AF, U+04BA, U+04BB, U+04C0 - U+04C2, U+04CB, U+04CD, U+04D8 - U+04DF, U+04E2 - U+04E5, U+04E8 - U+04F5, U+04F6 - U+04F9 to Mono (by Eugeniy Meshcheryakov) - added U+048C, U+048D, U+0494, U+0495, U+049E - U+04A7, U+04AC - U+04AE, U+04B4- U+04B7, U+04BA, U+04BB, U+04C0 - U+04C4, U+04C7, U+04C8, U+04CB, U+04CC, U+04D8 - U+04DF, U+04E2 - U+04E5, U+04EC - U+04F9 to Serif (by Eugeniy Meshcheryakov) - added U+2134 to Sans (by Gee Fung Sit) - added U+2080 - U+2089 to all faces (by Gee Fung Sit) - several minor corrections to Sans (by Gee Fung Sit) - major corrections to Sans Condensed (by Gee Fung Sit) - corrected Superscripts and Subscripts in Sans (by Gee Fung Sit) - corrected anchors of U+0316-U+0319 (by Denis Jacquerye) - Verajja integrated (by Stepan Roh) - copied U+2328, U+2600, U+2639-U+263C, U+263F-U+2647, U+2660-U+2667, and U+2669-U+266F from Sans to Serif, and copied scaled-down versions of them to Sans Mono (by David Lawrence Ramsey) - added U+20B4 to all faces (by Eugeniy Meshcheryakov) - added more minor positional adjustments to U+2638 in all faces to match the other miscellaneous symbols in Verajja, and rescale it in Sans Mono so that it looks better (by David Lawrence Ramsey) - added U+2242, U+2243 and U+22A4 (by Mederic Boquien) - corrected U+2245 in Sans (by Mederic Boquien) - added U+0221, U+0234-0236 (by Denis Jacquerye) - added in Arabic block to Sans: U+060C, U+0615, U+061B, U+061F, U+0621 - U+063A, U+0640 - U+0655, U+0660 - U+066F, U+0679 - U+0687, U+0698, U+06A1, U+06A9, U+06AF, U+06BA, U+06BF, U+06CC, U+06F0 - U+06F9 (by Ben Laenen) - added in Arabic Presentation Forms A to Sans: U+FB52 - U+FB81, U+FB8A - U+FB95, U+FB9E - U+FB9F, U+FBE8 - U+FBE9, U+FBFC - U+FBFF (by Ben Laenen) - added complete Arabic Presentation Forms B to Sans: U+FE70 - U+FE74, U+FE76 - U+FEFC, U+FEFF (by Ben Laenen) - added complete Greek Extended block to Mono (by Ben Laenen) - modified Greek capitals with tonos in Mono (by Ben Laenen) - added U+01C4-01CC, U+01D5, U+01DE, U+01E0-U+01E1, U+01E6-U+01E9, U+01EE-U+01F5, U+01F8-U+0217, U+021E-U+021F, U+0226-U+022A, U+022C to Serif (by Denis Jacquerye) - adjusted U+043B and U+044F in Serif (by Denis Jacquerye) - added U+2000-U+200A (by Denis Jacquerye) - added U+1E00-U+1E0B, U+1E0E-U+1E11, U+1E14-U+1E1C, U+1E1E-U+1E23, U+1E26-U+1E2D, U+1E30-U+1E35, U+1E3A-U+1E3B, U+1E3E-U+1E40, U+1E48-U+1E49, U+1E50-U+1E56, U+1E58-U+1E59, U+1E5E-U+1E60, U+1E68-U+1E6B, U+1E6E-U+1E6F, U+1E72-U+1E7D, U+1E86-U+1E9B, U+1EA0-U+1EA3, U+1EAC-U+1EB7, U+1EBA-U+1EBD, U+1EC6-U+1ECF, U+1ED8-U+1ED9, U+1EE6-U+1EE7, U+1EF4-U+1EF9 to Serif (by Denis Jacquerye) - added U+048E, U+048F, U+049C-U+049F, U+04B8, U+04B9, U+04BC-U+04BF, U+04C3, U+04C4 to Sans (by Eugeniy Meshcheryakov) - added DejaVu Sans Extra Light (by Denis Jacquerye) - Adjusted underline position for (hopefully) improved legibility in Sans, Serif, Mono (Tim May) - added auto-generated DejaVu LGC (by Stepan Roh) Changes from 2.2 to 2.3: - fixed bug U+042B and U+044B behave badly in Sans Bold or Oblique (by Keenan Pepper) - added and improved TrueType instructions and related settings (by Keenan Pepper) - added U+04D0-U+04D7, U+04E6, U+04E7 to Mono (by Eugeniy Meshcheryakov) - added U+048A - U+048D, U+0498, U+0499, U+04AA, U+04AB, U+04B0, U+04B1, U+04C0, U+04C9, U+04CA, U+04CE, U+04CD, U+04DA, U+04DB, U+04DE, U+04DF, U+04E2 - U+04E5, U+04EC - U+04F8, U+04F9 to Sans (by Eugeniy Meshcheryakov) - added U+04E0, U+04E1 to all faces (by Eugeniy Meshcheryakov) - added Greek Extended to Sans and Serif: U+1F00-U+1F15, U+1F18-U+1F1D, U+1F20-U+1F45, U+1F48-U+1F4D, U+1F50-U+1F57, U+1F59, U+1F5B, U+1F5D, U+1F5F-U+1F7D, U+1F80-U+1FB4, U+1FB6-U+1FC4, U+1FC6-U+1FD3, U+1FD6-U+1FDB, U+1FDD-U+1FEF, U+1FF2-U+1FF4, U+1FF6-U+1FFE (by Ben Laenen) - added Greek variant letterforms, archaic letters and symbols to Mono: U+03D0-U+03E1, U+03F0-U+03FF (by Ben Laenen) - added Armenian block and Armenian ligatures to Sans (U+0531 - U+0556, U+0559 - U+055F, U+0561 - U+0587, U+0589 - U+058A, U+FB13 - U+FB17) (by Ben Laenen) - redid some Greek characters in Sans and Mono to make them look better and to correct some errors (by Ben Laenen) - added U+27E0 to all faces (by David Lawrence Ramsey) - added underscore (U+005F) consistency fixes: extended the Sans Mono and Sans Mono Oblique underscores to touch both horizontal edges, and reduced the height of the Sans Bold Oblique underscore to match the Sans Bold underscore (by David Lawrence Ramsey) - added underscore (U+005F) derivatives and consistency fixes for them: made U+0332 a reference to underscore at Denis Jacquerye's suggestion; made U+0333 two references to underscore; made U+033F two references to U+203E; added U+2017 as two references to underscore, and made U+0333 a reference to it; and added U+203E as a reference to underscore, and made U+0305 a reference to it (by David Lawrence Ramsey) - added U+201B, U+2220, U+2320-U+2321, U+23AE, U+23CF, all remaining Geometric Shapes glyphs (U+25A0-U+25C9, U+25CB-U+25D7, U+25D9-U+25E5, U+25E7-U+25FF), and U+2B12-U+2B13 to all faces (by David Lawrence Ramsey) - added minor positional adjustments to U+2638 in all faces (by David Lawrence Ramsey) - added U+201F to Sans Mono and Serif faces (by David Lawrence Ramsey) - added U+01B7, U+01F6, U+0464 - U+0465, U+2160 - U+2180, U+2183, U+220A, U+220D, U+2329, U+232A, U+2422, U+27E8 - U+27EB, U+2680 - U+2685 to Sans (by Gee Fung Sit ???) - added U+2116 to Sans and Serif (by Gee Fung Sit) - changed florin sign U+0192 in Sans (by Gee Fung Sit) - added anchor points to some glyphs (by Denis Jacquerye) - adjusted height of IPA superscripts U+02B0-02B8, U+02C0-02C1, U+02E0-02E4, U+207F to match with height of U+00B2 (by Denis Jacquerye) - added U+0184-U+0185, U+019C, U+019F, U+01A0-U+01A3, U+01A6, U+01AA, U+01AF-U+01B0, U+01B2-U+01B4, U+01B7-U+01B8, U+01BC-U+01BC, U+0224-U+0225, U+023A-U+0240, U+1D16-U+1D17, U+1D1D-U+1D1E, U+1D43-U+1D5B, U+1D7B, U+1D85,U+1D9B-1DB7, U+1DB9-U+1DBF, U+20A6 to all fonts (by Denis Jacquerye) - added added U+0182, U+018B, U+018E, U+01A0-U+01A1, U+01B1, U+01B9, U+01C0-U+01C3, U+0238-U+0239, U+1D02, U+1D08-U+1D09, U+1D14, U+1D1F, U+1D77 to Serif and Mono (by Denis Jacquerye) - added U+0181, U+0183, U+0187-U+0188, U+018A-U+018F, U+0191, U+0193, U+0195-U+019B, U+019D-U+019E, U+01A4-U+01A5, U+01AC-U+01AE, U+01B5-U+01B6, U+01B9, U+01BB, U+01F6 to Serif (by Denis Jacquerye) - added U+0181, U+0187-U+0188, U+018A, U+018D, U+018F, U+0191, U+0193, U+0195-U+019F, U+01A4-01A5, U+01AC-01AD, U+01B5-U+01B6, U+1BB, U+01F6, U+01D7-U+01DC, U+0238-U+0239, U+0241 to Mono (by Denis Jacquerye) - added to Mono and Serif (by Denis Jacquerye) Changes from 2.1 to 2.2: - reworked the vertical orientation of the Blocks Elements characters in all faces to remove their overly large descenders, in order to fix problems with e.g. terminal emulators (by David Lawrence Ramsey) - copied bullet in Sans faces to Serif faces for consistency (by David Lawrence Ramsey) - added U+2023, U+25D8, U+25E6, and U+29EB to all faces (by David Lawrence Ramsey) - added U+1EB8, U+1EB9, U+1ECA - U+1ECD, U+1EE4, U+1EE5 (by Tim May) - added U+01DD, U+02BE, U+02BF, U+02D3 to all, changed U+02D2 in non-Condensed and U+1EE5 in Serif (by Tim May) - fixed U+01CE, replacing wrong circumflex by caron (by Denis Jacquerye) - added anchor points to some glyphs (by Denis Jacquerye) - added U+20B5 (by Denis Jacquerye) - added U+0181 - U+0183, U+0187, U+0188, U+018A - U+018D, U+0191, U+0193, U+0195 - U+019B, U+019D, U+019E, U+01A4, U+01A7 - U+01A9, U+01AB - U+01AE, U+01B1, U+01B5, U+01B6, U+01BB, U+01C0 - U+01C3, U+01F1 - U+01F3, U+0238, U+0239, U+1D02, U+1D08, U+1D09, U+1D14, U+1D1F, U+1D77, U+2103, U+2126, U+2127, U+212A, U+212B, U+2132, U+214B, U+2210, U+2217, U+2218, U+2A0C - U+2A0E, U+FB00, U+FB03 and U+FB04 to Sans (by Gee Fung Sit) - added U+01A9, U+01C3 and U+2126 to Mono and Serif (by Gee Fung Sit) - adjusted bearings of U+028B in Sans (by Gee Fung Sit) - added U+018F, U+0494-U+0497, U+04A0-U+04A7, U+04AC-U+04AF, U+04B4-U+04B7, U+04BA-U+04BB, U+04C1-U+04C2, U+04C5-U+04C8, U+04CB-U+04CC, U+04D0-U+04D9, U+04DC-U+04DD, U+04E6-U+04EB to Sans (by Eugeniy Meshcheryakov) - replaced with references U+0391-U+0393, U+0395-U+0397, U+0399, U+039A, U+039C, U+039D, U+039F-U+03A1, U+03A4, U+03A5, U+03A7, U+03BF, U+03DC, U+0405, U+0406, U+0408, U+0410, U+0412, U+0415, U+0417, U+041A, U+041C-U+041E, U+0420-U+0422, U+0425, U+0430, U+0435, U+043E, U+0440, U+0441, U+0443, U+0445, U+0455-U+0458 in Serif and Mono (by Eugeniy Meshcheryakov) - added U+04D0-U+04D7, U+04E6-U+04EB to Serif (by Eugeniy Meshcheryakov) - added U+212A and U+212B to the rest of the faces (by Lars Naesbye Christensen) - added U+2318 and U+2325 to Sans and Serif (by Lars Naesbye Christensen) - added and improved TrueType instructions and related settings (by Keenan Pepper) - completed basic Greek alphabet: added U+0374-U+0375, U+037A, U+037E, U+0384-U+038A, U+038C, U+038E-U+0390, U+03AC-U+03BF, U+03C1-U+03CE (by Ben Laenen) - added U+2070 and U+2074-U+2079 (by Mederic Boquien) Changes from 2.0 to 2.1: *** Be aware that names of some TTF files changed since version 2.0. *** - added U+0323, U+1E0C, U+1E0D, U+1E24, U+1E25, U+1E36 - U+1E39, U+1E42, U+1E43, U+1E46, U+1E47, U+1E5A - U+1E5D, U+1E62, U+1E63, U+1E6C, U+1E6D, U+1E7E, U+1E7F (by Tim May) - fixed bug where GNOME applications used Mono Bold Oblique instead of Mono Oblique (by Keenan Pepper) - added and improved TrueType instructions and related settings (by Keenan Pepper) - added U+1E41, U+1E57, U+1E61 (by Sander Vesik) - added U+0189, U+0309, U+0313, U+0314, U+031A, U+031B, U+0327, U+0328, U+032B, U+0333, U+033C (by Denis Jacquerye) - adjusted and fixed U+0186, U+0254, U+0291, U+0316 - U+0319, U+031C - U+0320, U+0323 - U+0326, U+0329 - U+032A, U+032C - U+0332, U+0339 - U+033B, U+033E, U+033F (by Denis Jacquerye) - fixed U+1E12, U+1E3C, U+1E4A, U+1E70 to have normal below diacritics (by Denis Jacquerye) - fixed U+1E82, U+1E84 and U+1EF2 to have uppercase above diacritics (by Denis Jacquerye) - added anchor points to some glyphs (by Denis Jacquerye) - dropped "-Roman" from font names - affects both internal TTF names and names of generated files (by Stepan Roh) - attempt to fix bug Vertical spacing too big for Mono by exchanging LineGap and OS2TypoLinegap values (proofed by Stefan Rank) - added Greek capitals U+0391 - U+03A1, U+03A3 - U+03A9, U+03AA, U+03AB in Mono (by Ben Laenen) - added the per ten thousand sign U+2031 (by Mederic Boquien) - added U+2207, U+221D, U+221F, U+2227 - U+222A, and U+2261 (by David Lawrence Ramsey) - new logo (by Gee Fung Sit) - added U+0180, U+018E, U+201F, U+2024, U+2025, U+203D, U+2200, U+2203, U+2213, U+222C, U+222D, U+2263 to Sans (by Gee Fung Sit) Changes from 1.15 to 2.0: - "Italized" basic glyphs in all Serif Oblique and their Condensed faces (by David Jez) - added and improved TrueType instructions and related settings (by Keenan Pepper) - added anchor points to some glyphs (by Denis Jacquerye) - many new spacing and combining accents (by Denis Jacquerye) - smart substitutions for transforming i and j to dottless form and for using uppercase diacritics (by Denis Jacquerye) - fixed remaining erroneously slanted characters in Serif Oblique faces (by David Lawrence Ramsey) - copied bullet in Sans faces to Sans Oblique faces for consistency (by David Lawrence Ramsey) - added U+203C and U+2047-U+2049 (by David Lawrence Ramsey) - added Greek glyphs to Serif (by Ben Laenen, Condensed merge by David Jez) - fixed bug LTR glyphs behaving like RTL (by Ben Laenen) - fixed wrong glyph directions (by David Jez) - fixed repositioned accents in Condensed faces (by David Jez) Changes from 1.14 to 1.15: - added and improved TrueType instructions and related settings (by Keenan Pepper) - fixed U+2302, U+2319 (by David Lawrence Ramsey) - fixed yet another monospace bug (by Stepan Roh) - fixed potential "too big ascender/descender" bug (by Stepan Roh) - fixed U+026E and U+028E (by Denis Jacquerye) - added U+0186, U+0190, U+0300 - U+0304, U+0306 - U+0308, U+030A - U+030C, U+0321, U+0322 (by Denis Jacquerye) - added rest of Block Elements: U+2591 - U+2593 (by David Lawrence Ramsey) - added U+2311, U+237D and U+2638 (by David Lawrence Ramsey) - added U+01CD - U+01D4 (by Denis Jacquerye) - fixed accents of U+00F2 - U+00F6 by replacing them with references in Mono Bold (by David Jez) - added U+0490, U+0491 (by Eugeniy Meshcheryakov) - added hints to U+0404 and U+0454 in Sans (by Eugeniy Meshcheryakov) - completed Greek glyphs from U+0370 to U+03CF in Serif (by Ben Laenen) - fixed shape of U+0255 in Sans Bold and Sans Bold Oblique (by Denis Jacquerye) Changes from 1.13 to 1.14: - fixed bug where Mono faces were not recognized as fixed pitch in Windows by correcting Venda glyphs (by David Jez) - added and improved TrueType instructions (by Keenan Pepper) - added 6 Uzbekian glyphs (by Mashrab Kuvatov) - added Greek glyphs to Sans and Serif, changed pi and omega to fit in (by Ben Laenen) - added IPA and related superscript glyphs (by Denis Jacquerye) - fixed buggy Venda glyphs (by David Lawrence Ramsey and Stepan Roh) - added U+2302, U+2310, U+2319 (by David Lawrence Ramsey) - fixed slanted U+00AC in Serif Oblique faces (by David Lawrence Ramsey) - added 29 glyphs from Block Elements (by David Lawrence Ramsey) Changes from 1.12 to 1.13: - removed all stems (PS hints) (requested by David Jez) - added U+01D6, U+01DF, U+022B, U+022D and U+0231 (by Sander Vesik) - added 10 Venda glyphs (by Dwayne Bailey) - fixed bug when fonts had no name on Microsoft Windows (by Stepan Roh) - updated 'missing' glyph U+FFFD (by David Jez) - set TTF flag fsType to 'Installable Embedding' (= unrestricted usage) (idea by C. Tiffany) Changes from 1.11 to 1.12: - added long s (by James Cloos) - prettier comma accent in gcommaaccent (by David Jez) - added Hbar, hbar, kgreenlandic, napostrophe, Eng, eng, Tbar, tbar, afii57929 (by David Jez) - changed Iogonek, iogonek, IJ, ij to look better (by David Jez) - glyph uni0237 renamed to dotlessj (requested by David Jez) - fixed accents for dcaron, lcaron, tcaron, Uogonek, uogonek in Serif (by David Jez) - added U+2500 - U+257F box drawing glyphs to Sans Mono (by David Jez) - fixed accents in Wcircumflex, Ycircumflex and Zdotaccent (by David Jez) - extra kerning for F (by Sander Vesik) - added 'missing' glyph U+FFFD (by David Jez) Changes from 1.10 to 1.11: - kerning updates (by Sander Vesik) - added Iogonek, iogonek, IJ, ij, Uogonek, uogonek (from SuSE standard fonts by Adrian Schroeter, SuSE AG) - added Gcommaaccent, gcommaaccent, Kcommaaccent, kcommaaccent, Lcommaaccent, lcommaaccent, Ncommaaccent, ncommaaccent, Rcommaaccent, rcommaaccent (by Stepan Roh) Changes from 1.9 to 1.10: - added U+022E, U+022F (by Sander Vesik) - kerning updates for DejaVu Sans (by Sander Vesik) - fixed too wide cyrillic glyphs in DejaVu Sans Mono (by Valentin Stoykov) - fixed ligatures bug in Mono (by Stepan Roh) Changes from 1.8 to 1.9: - integrated Arev Cyrillics (by Danilo Segan) - added U+01EA, U+01EB, U+01EC, U+01ED (by Sander Vesik) Changes from 1.7 to 1.8: - fixed accents in Serif Oblique and Serif Bold Oblique (by Stepan Roh) Changes from 1.6 to 1.7: - added automatically generated Condensed typefaces (by Stepan Roh) Changes from 1.5 to 1.6: - monospace bug fixed (by Stepan Roh) - incorrect Bitstream foundry assigned by fontconfig and KDE Font Installer fixed (by Stepan Roh) - added automatically generated Oblique version of Serif typefaces (by Stepan Roh) - corrected cyrillic D and d (by Danilo Segan and David Jez) - fixed accents position in Oblique version of Serif typefaces (by Danilo Segan and Sander Vesik) - fixed incorrect computation of OS2Win* fields (by Stepan Roh) - added visiblespace U+2423 (by David Jez) - fixed 'line height' bug by fixing ascender and descender values (by David Jez and Stepan Roh) - fixed part of 'worse than Vera' bug (by Peter Cernak) - smaller comma accent U+0326 (by David Jez) Changes from 1.4 to 1.5: - added Cyrillics (96 characters) and Dcroat to the rest of typefaces (by Danilo Segan) - fixed bugs in some Cyrillic characters, some of them reported by Sander Vesik (by Danilo Segan) - added U+0100, U+0101, U+0112, U+0113, U+012A, U+012B, U+014C, U+014D, U+016A, U+016B, U+01E2, U+01E3, U+0232 and U+0233 (by Sander Vesik) - added Romanian characters (by Misu Moldovan) - added U+0108, U+0109, U+010A, U+010B, U+0114, U+0115, U+0116, U+0117, U+011C, U+011D, U+0120, U+0121, U+0124, U+0125, U+0128, U+0129, U+012C, U+012D, U+0134, U+0135, U+014E, U+014F, U+0150, U+0151, U+015C, U+015D, U+0168, U+0169, U+016C, U+016D, U+0170, U+0171 and U+0237 (by James Crippen) - added U+02BB, U+2010, U+2011, U+2012 and U+2015 (by Stepan Roh) Changes from 1.3 to 1.4: - added Polish characters (Aogonek, aogonek, Eogonek, eogonek, Nacute, nacute, Sacute, sacute, Zacute, zacute, Zdotaccent, zdotaccent) (by Stepan Roh) Changes from 1.2 to 1.3: - added Cyrillics (96 characters) and Dcroat to Sans typefaces (by Danilo Segan from his BePa fonts) Changes from 1.1 to 1.2: - added Ldot, ldot, Wcircumflex, wcircumflex, Ycircumflex, ycircumflex, Wgrave, wgrave, Wacute, wacute, Wdieresis, wdieresis, Ygrave and ygrave (from The Olwen Font Family 0.2 by Dafydd Harries) Changes from 1.0 to 1.1: - added Lacute, lacute, Lcaron, lcaron, Racute and racute (by Peter Cernak) Changes from 0.9.4 to 1.0: - none, just changed version and updated README Changes from 0.9.3 to 0.9.4: - fixed TTF generation (kerning tables were missing) Changes from 0.9.2 to 0.9.3: - kerning of added characters - proper caron shape for dcaron in Mono (by Ondrej Koala Vacha) - minor visual changes Changes from 0.9.1 to 0.9.2: - internal bugged version Changes from 0.9 to 0.9.1: - proper caron shape for dcaron and tcaron - minor visual changes $Id: NEWS 2535 2013-08-25 15:21:17Z moyogo $ db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/BUGS000064400000000137151502156020020353 0ustar00See http://dejavu.sourceforge.net/wiki/index.php/Bugs $Id: BUGS 80 2004-11-13 13:12:02Z src $ db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/README000064400000004412151502156020020550 0ustar00DejaVu fonts 2.34 (c)2004-2013 DejaVu fonts team ------------------------------------------------ The DejaVu fonts are a font family based on the Bitstream Vera Fonts (http://gnome.org/fonts/). Its purpose is to provide a wider range of characters (see status.txt for more information) while maintaining the original look and feel. DejaVu fonts are based on Bitstream Vera fonts version 1.10. Available fonts (Sans = sans serif, Mono = monospaced): DejaVu Sans Mono DejaVu Sans Mono Bold DejaVu Sans Mono Bold Oblique DejaVu Sans Mono Oblique DejaVu Sans DejaVu Sans Bold DejaVu Sans Bold Oblique DejaVu Sans Oblique DejaVu Sans ExtraLight (experimental) DejaVu Serif DejaVu Serif Bold DejaVu Serif Bold Italic (experimental) DejaVu Serif Italic (experimental) DejaVu Sans Condensed (experimental) DejaVu Sans Condensed Bold (experimental) DejaVu Sans Condensed Bold Oblique (experimental) DejaVu Sans Condensed Oblique (experimental) DejaVu Serif Condensed (experimental) DejaVu Serif Condensed Bold (experimental) DejaVu Serif Condensed Bold Italic (experimental) DejaVu Serif Condensed Italic (experimental) All fonts are also available as derivative called DejaVu LGC with support only for Latin, Greek and Cyrillic scripts. For license information see LICENSE. What's new is described in NEWS. Known bugs are in BUGS. All authors are mentioned in AUTHORS. Fonts are published in source form as SFD files (Spline Font Database from FontForge - http://fontforge.sf.net/) and in compiled form as TTF files (TrueType fonts). For more information go to http://dejavu.sourceforge.net/. Characters from Arev fonts, Copyright (c) 2006 by Tavmjong Bah: --------------------------- U+01BA, U+01BF, U+01F7, U+021C-U+021D, U+0220, U+0222-U+0223, U+02B9, U+02BA, U+02BD, U+02C2-U+02C5, U+02d4-U+02D5, U+02D7, U+02EC-U+02EE, U+0346-U+034E, U+0360, U+0362, U+03E2-03EF, U+0460-0463, U+0466-U+0486, U+0488-U+0489, U+04A8-U+04A9, U+0500-U+050F, U+2055-205E, U+20B0, U+20B2-U+20B3, U+2102, U+210D, U+210F, U+2111, U+2113, U+2115, U+2118-U+211A, U+211C-U+211D, U+2124, U+2135, U+213C-U+2140, U+2295-U+2298, U+2308-U+230B, U+26A2-U+26B1, U+2701-U+2704, U+2706-U+2709, U+270C-U+274B, U+2758-U+275A, U+2761-U+2775, U+2780-U+2794, U+2798-U+27AF, U+27B1-U+27BE, U+FB05-U+FB06 $Id: README 2535 2013-08-25 15:21:17Z moyogo $ db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/langcover.txt000064400000062531151502156020022417 0ustar00This is the language coverage file for DejaVu fonts ($Id: langcover.txt 2538 2013-08-25 16:02:56Z moyogo $) Sans Serif Sans Mono aa Afar 100% (62/62) 100% (62/62) 100% (62/62) ab Abkhazia 100% (90/90) 93% (84/90) 84% (76/90) af Afrikaans 100% (69/69) 100% (69/69) 100% (69/69) ak Akan 100% (73/73) 100% (73/73) 100% (73/73) am Amharic (0/264) (0/264) (0/264) an Aragonese 100% (66/66) 100% (66/66) 100% (66/66) ar Arabic 100% (36/36) (0/36) 100% (36/36) as Assamese (0/64) (0/64) (0/64) ast Asturian/Bable/Leonese/Asturleonese 100% (70/70) 100% (70/70) 100% (70/70) av Avaric 100% (67/67) 100% (67/67) 100% (67/67) ay Aymara 100% (60/60) 100% (60/60) 100% (60/60) az-az Azerbaijani in Azerbaijan 100% (66/66) 100% (66/66) 100% (66/66) az-ir Azerbaijani in Iran 100% (40/40) (0/40) 100% (40/40) ba Bashkir 100% (82/82) 100% (82/82) 97% (80/82) be Byelorussian 100% (68/68) 100% (68/68) 100% (68/68) ber-dz Berber in Algeria 100% (70/70) 100% (70/70) 100% (70/70) ber-ma Berber in Morocco 100% (32/32) (0/32) (0/32) bg Bulgarian 100% (60/60) 100% (60/60) 100% (60/60) bh Bihari (Devanagari script) (0/68) (0/68) (0/68) bho Bhojpuri (Devanagari script) (0/68) (0/68) (0/68) bi Bislama 100% (58/58) 100% (58/58) 100% (58/58) bin Edo or Bini 100% (78/78) 100% (78/78) 100% (78/78) bm Bambara 100% (60/60) 100% (60/60) 100% (60/60) bn Bengali (0/63) (0/63) (0/63) bo Tibetan (0/95) (0/95) (0/95) br Breton 100% (64/64) 100% (64/64) 100% (64/64) brx Bodo (Devanagari script) (0/82) (0/82) (0/82) bs Bosnian 100% (62/62) 100% (62/62) 100% (62/62) bua Buriat (Buryat) 100% (70/70) 100% (70/70) 100% (70/70) byn Blin/Bilin (0/255) (0/255) (0/255) ca Catalan 100% (74/74) 100% (74/74) 100% (74/74) ce Chechen 100% (67/67) 100% (67/67) 100% (67/67) ch Chamorro 100% (58/58) 100% (58/58) 100% (58/58) chm Mari (Lower Cheremis / Upper Cheremis) 100% (76/76) 100% (76/76) 100% (76/76) chr Cherokee (0/85) (0/85) (0/85) co Corsican 100% (84/84) 100% (84/84) 100% (84/84) crh Crimean Tatar/Crimean Turkish 100% (68/68) 100% (68/68) 100% (68/68) cs Czech 100% (82/82) 100% (82/82) 100% (82/82) csb Kashubian 100% (74/74) 100% (74/74) 100% (74/74) cu Old Church Slavonic 100% (103/103) 90% (93/103) 78% (81/103) cv Chuvash 100% (74/74) 100% (74/74) 100% (74/74) cy Welsh 100% (78/78) 100% (78/78) 100% (78/78) da Danish 100% (70/70) 100% (70/70) 100% (70/70) de German 100% (59/59) 100% (59/59) 100% (59/59) doi Dogri (0/85) (0/85) (0/85) dv Divehi/Dhivehi/Maldivian (0/49) (0/49) (0/49) dz Dzongkha (0/95) (0/95) (0/95) ee Ewe 100% (99/99) 100% (99/99) 100% (99/99) el Greek 100% (69/69) 100% (69/69) 100% (69/69) en English 100% (72/72) 100% (72/72) 100% (72/72) eo Esperanto 100% (64/64) 100% (64/64) 100% (64/64) es Spanish 100% (66/66) 100% (66/66) 100% (66/66) et Estonian 100% (64/64) 100% (64/64) 100% (64/64) eu Basque 100% (56/56) 100% (56/56) 100% (56/56) fa Persian 100% (40/40) (0/40) 100% (40/40) fat Fanti 100% (73/73) 100% (73/73) 100% (73/73) ff Fulah (Fula) 100% (62/62) 100% (62/62) 100% (62/62) fi Finnish 100% (62/62) 100% (62/62) 100% (62/62) fil Filipino 100% (84/84) 100% (84/84) 100% (84/84) fj Fijian 100% (52/52) 100% (52/52) 100% (52/52) fo Faroese 100% (68/68) 100% (68/68) 100% (68/68) fr French 100% (84/84) 100% (84/84) 100% (84/84) fur Friulian 100% (66/66) 100% (66/66) 100% (66/66) fy Frisian 100% (75/75) 100% (75/75) 100% (75/75) ga Irish 100% (80/80) 100% (80/80) 100% (80/80) gd Scots Gaelic 100% (70/70) 100% (70/70) 100% (70/70) gez Ethiopic (Geez) (0/218) (0/218) (0/218) gl Galician 100% (66/66) 100% (66/66) 100% (66/66) gn Guarani 100% (70/70) 100% (70/70) 100% (70/70) gu Gujarati (0/68) (0/68) (0/68) gv Manx Gaelic 100% (54/54) 100% (54/54) 100% (54/54) ha Hausa 100% (60/60) 100% (60/60) 100% (60/60) haw Hawaiian 100% (63/63) 100% (63/63) 100% (63/63) he Hebrew 100% (27/27) (0/27) (0/27) hi Hindi (Devanagari script) (0/68) (0/68) (0/68) hne Chhattisgarhi (0/68) (0/68) (0/68) ho Hiri Motu 100% (52/52) 100% (52/52) 100% (52/52) hr Croatian 100% (62/62) 100% (62/62) 100% (62/62) hsb Upper Sorbian 100% (72/72) 100% (72/72) 100% (72/72) ht Haitian/Haitian Creole 100% (56/56) 100% (56/56) 100% (56/56) hu Hungarian 100% (70/70) 100% (70/70) 100% (70/70) hy Armenian 100% (77/77) 100% (77/77) 100% (77/77) hz Herero 100% (57/57) 100% (57/57) 100% (57/57) ia Interlingua 100% (52/52) 100% (52/52) 100% (52/52) id Indonesian 100% (54/54) 100% (54/54) 100% (54/54) ie Interlingue 100% (52/52) 100% (52/52) 100% (52/52) ig Igbo 100% (58/58) 100% (58/58) 100% (58/58) ii Sichuan Yi/Nuosu (0/1165) (0/1165) (0/1165) ik Inupiaq (Inupiak, Eskimo) 100% (68/68) 100% (68/68) 100% (68/68) io Ido 100% (52/52) 100% (52/52) 100% (52/52) is Icelandic 100% (70/70) 100% (70/70) 100% (70/70) it Italian 100% (72/72) 100% (72/72) 100% (72/72) iu Inuktitut 100% (161/161) (0/161) (0/161) ja Japanese (0/6537) (0/6537) (0/6537) jv Javanese 100% (56/56) 100% (56/56) 100% (56/56) ka Georgian 100% (33/33) 100% (33/33) 100% (33/33) kaa Kara-Kalpak (Karakalpak) 100% (78/78) 100% (78/78) 100% (78/78) kab Kabyle 100% (70/70) 100% (70/70) 100% (70/70) ki Kikuyu 100% (56/56) 100% (56/56) 100% (56/56) kj Kuanyama/Kwanyama 100% (52/52) 100% (52/52) 100% (52/52) kk Kazakh 100% (77/77) 100% (77/77) 100% (77/77) kl Greenlandic 100% (81/81) 100% (81/81) 100% (81/81) km Central Khmer (0/63) (0/63) (0/63) kn Kannada (0/70) (0/70) (0/70) ko Korean (0/2443) (0/2443) (0/2443) kok Kokani (Devanagari script) (0/68) (0/68) (0/68) kr Kanuri 100% (56/56) 100% (56/56) 100% (56/56) ks Kashmiri 78% (26/33) (0/33) 69% (23/33) ku-am Kurdish in Armenia 100% (64/64) 100% (64/64) 100% (64/64) ku-iq Kurdish in Iraq 100% (32/32) (0/32) 87% (28/32) ku-ir Kurdish in Iran 100% (32/32) (0/32) 87% (28/32) ku-tr Kurdish in Turkey 100% (62/62) 100% (62/62) 100% (62/62) kum Kumyk 100% (66/66) 100% (66/66) 100% (66/66) kv Komi (Komi-Permyak/Komi-Siryan) 100% (70/70) 100% (70/70) 100% (70/70) kw Cornish 100% (64/64) 100% (64/64) 100% (64/64) kwm Kwambi 100% (52/52) 100% (52/52) 100% (52/52) ky Kirgiz 100% (70/70) 100% (70/70) 100% (70/70) la Latin 100% (68/68) 100% (68/68) 100% (68/68) lah Lahnda 92% (25/27) (0/27) 85% (23/27) lb Luxembourgish (Letzeburgesch) 100% (75/75) 100% (75/75) 100% (75/75) lez Lezghian (Lezgian) 100% (67/67) 100% (67/67) 100% (67/67) lg Ganda 100% (54/54) 100% (54/54) 100% (54/54) li Limburgan/Limburger/Limburgish 100% (62/62) 100% (62/62) 100% (62/62) ln Lingala 100% (81/81) 100% (81/81) 100% (81/81) lo Lao 100% (55/55) (0/55) 83% (46/55) lt Lithuanian 100% (70/70) 100% (70/70) 100% (70/70) lv Latvian 100% (78/78) 100% (78/78) 100% (78/78) mai Maithili (Devanagari script) (0/68) (0/68) (0/68) mg Malagasy 100% (56/56) 100% (56/56) 100% (56/56) mh Marshallese 100% (62/62) 100% (62/62) 100% (62/62) mi Maori 100% (64/64) 100% (64/64) 100% (64/64) mk Macedonian 100% (42/42) 100% (42/42) 100% (42/42) ml Malayalam (0/68) (0/68) (0/68) mn-cn Mongolian in China (0/130) (0/130) (0/130) mn-mn Mongolian in Mongolia 100% (70/70) 100% (70/70) 100% (70/70) mni Maniputi (0/78) (0/78) (0/78) mo Moldavian 100% (128/128) 100% (128/128) 100% (128/128) mr Marathi (Devanagari script) (0/68) (0/68) (0/68) ms Malay 100% (52/52) 100% (52/52) 100% (52/52) mt Maltese 100% (72/72) 100% (72/72) 100% (72/72) my Burmese (Myanmar) (0/48) (0/48) (0/48) na Nauru 100% (60/60) 100% (60/60) 100% (60/60) nb Norwegian Bokmal 100% (70/70) 100% (70/70) 100% (70/70) nds Low Saxon 100% (59/59) 100% (59/59) 100% (59/59) ne Nepali (0/72) (0/72) (0/72) ng Ndonga 100% (52/52) 100% (52/52) 100% (52/52) nl Dutch 100% (82/82) 100% (82/82) 100% (82/82) nn Norwegian Nynorsk 100% (76/76) 100% (76/76) 100% (76/76) no Norwegian (Bokmal) 100% (70/70) 100% (70/70) 100% (70/70) nqo N'Ko 91% (54/59) (0/59) (0/59) nr Ndebele, South 100% (52/52) 100% (52/52) 100% (52/52) nso Northern Sotho 100% (58/58) 100% (58/58) 100% (58/58) nv Navajo/Navaho 100% (72/72) 100% (72/72) 100% (72/72) ny Chichewa 100% (54/54) 100% (54/54) 100% (54/54) oc Occitan 100% (70/70) 100% (70/70) 100% (70/70) om Oromo or Galla 100% (52/52) 100% (52/52) 100% (52/52) or Oriya (0/68) (0/68) (0/68) os Ossetic 100% (66/66) 100% (66/66) 100% (66/66) ota Ottoman Turkish 100% (37/37) (0/37) 97% (36/37) pa Panjabi/Punjabi (0/63) (0/63) (0/63) pa-pk Panjabi/Punjabi in Pakistan 92% (25/27) (0/27) 85% (23/27) pap-an Papiamento in Netherlands Antilles 100% (72/72) 100% (72/72) 100% (72/72) pap-aw Papiamento in Aruba 100% (54/54) 100% (54/54) 100% (54/54) pes Western Farsi 100% (40/40) (0/40) 100% (40/40) pl Polish 100% (70/70) 100% (70/70) 100% (70/70) prs Dari/Eastern Farsi 100% (40/40) (0/40) 100% (40/40) ps-af Pashto in Afghanistan 95% (47/49) (0/49) 77% (38/49) ps-pk Pashto in Pakistan 93% (46/49) (0/49) 75% (37/49) pt Portuguese 100% (82/82) 100% (82/82) 100% (82/82) qu Quechua 100% (55/55) 100% (55/55) 100% (55/55) rm Rhaeto-Romance (Romansch) 100% (66/66) 100% (66/66) 100% (66/66) rn Rundi 100% (52/52) 100% (52/52) 100% (52/52) ro Romanian 100% (62/62) 100% (62/62) 100% (62/62) ru Russian 100% (66/66) 100% (66/66) 100% (66/66) rw Kinyarwanda 100% (52/52) 100% (52/52) 100% (52/52) sa Sanskrit (Devanagari script) (0/68) (0/68) (0/68) sah Yakut 100% (76/76) 100% (76/76) 100% (76/76) sat Santali (Devanagari script) (0/70) (0/70) (0/70) sc Sardinian 100% (62/62) 100% (62/62) 100% (62/62) sco Scots 100% (56/56) 100% (56/56) 100% (56/56) sd Sindhi 100% (54/54) (0/54) 79% (43/54) se North Sami 100% (66/66) 100% (66/66) 100% (66/66) sel Selkup (Ostyak-Samoyed) 100% (66/66) 100% (66/66) 100% (66/66) sg Sango 100% (72/72) 100% (72/72) 100% (72/72) sh Serbo-Croatian 100% (156/156) 100% (156/156) 98% (154/156) shs Secwepemctsin 100% (48/48) 100% (48/48) 100% (48/48) si Sinhala/Sinhalese (0/73) (0/73) (0/73) sid Sidamo (0/281) (0/281) (0/281) sk Slovak 100% (86/86) 100% (86/86) 100% (86/86) sl Slovenian 100% (62/62) 100% (62/62) 100% (62/62) sm Samoan 100% (53/53) 100% (53/53) 100% (53/53) sma South Sami 100% (60/60) 100% (60/60) 100% (60/60) smj Lule Sami 100% (60/60) 100% (60/60) 100% (60/60) smn Inari Sami 100% (68/68) 100% (68/68) 100% (68/68) sms Skolt Sami 100% (80/80) 100% (80/80) 97% (78/80) sn Shona 100% (52/52) 100% (52/52) 100% (52/52) so Somali 100% (52/52) 100% (52/52) 100% (52/52) sq Albanian 100% (56/56) 100% (56/56) 100% (56/56) sr Serbian 100% (60/60) 100% (60/60) 100% (60/60) ss Swati 100% (52/52) 100% (52/52) 100% (52/52) st Sotho, Southern 100% (52/52) 100% (52/52) 100% (52/52) su Sundanese 100% (54/54) 100% (54/54) 100% (54/54) sv Swedish 100% (68/68) 100% (68/68) 100% (68/68) sw Swahili 100% (52/52) 100% (52/52) 100% (52/52) syr Syriac (0/45) (0/45) (0/45) ta Tamil (0/48) (0/48) (0/48) te Telugu (0/70) (0/70) (0/70) tg Tajik 100% (78/78) 100% (78/78) 97% (76/78) th Thai 1% (1/74) (0/74) (0/74) ti-er Eritrean Tigrinya (0/255) (0/255) (0/255) ti-et Ethiopian Tigrinya (0/281) (0/281) (0/281) tig Tigre (0/221) (0/221) (0/221) tk Turkmen 100% (68/68) 100% (68/68) 100% (68/68) tl Tagalog 100% (84/84) 100% (84/84) 100% (84/84) tn Tswana 100% (58/58) 100% (58/58) 100% (58/58) to Tonga 100% (53/53) 100% (53/53) 100% (53/53) tr Turkish 100% (70/70) 100% (70/70) 100% (70/70) ts Tsonga 100% (52/52) 100% (52/52) 100% (52/52) tt Tatar 100% (76/76) 100% (76/76) 100% (76/76) tw Twi 100% (73/73) 100% (73/73) 100% (73/73) ty Tahitian 100% (65/65) 100% (65/65) 100% (65/65) tyv Tuvinian 100% (70/70) 100% (70/70) 100% (70/70) ug Uyghur 87% (29/33) (0/33) 78% (26/33) uk Ukrainian 100% (72/72) 100% (72/72) 100% (72/72) ur Urdu 92% (25/27) (0/27) 85% (23/27) uz Uzbek 100% (52/52) 100% (52/52) 100% (52/52) ve Venda 100% (62/62) 100% (62/62) 100% (62/62) vi Vietnamese 100% (194/194) 100% (194/194) 76% (148/194) vo Volapuk 100% (54/54) 100% (54/54) 100% (54/54) vot Votic 100% (62/62) 100% (62/62) 100% (62/62) wa Walloon 100% (70/70) 100% (70/70) 100% (70/70) wal Wolaitta/Wolaytta (0/281) (0/281) (0/281) wen Sorbian languages (lower and upper) 100% (76/76) 100% (76/76) 100% (76/76) wo Wolof 100% (66/66) 100% (66/66) 100% (66/66) xh Xhosa 100% (52/52) 100% (52/52) 100% (52/52) yap Yapese 100% (58/58) 100% (58/58) 100% (58/58) yi Yiddish 100% (27/27) (0/27) (0/27) yo Yoruba 100% (119/119) 100% (119/119) 100% (119/119) za Zhuang/Chuang 100% (52/52) 100% (52/52) 100% (52/52) zh-cn Chinese (simplified) 0% (2/6765) 0% (2/6765) 0% (2/6765) zh-hk Chinese Hong Kong Supplementary Character Set (0/2213) (0/2213) (0/2213) zh-mo Chinese in Macau (0/2213) (0/2213) (0/2213) zh-sg Chinese in Singapore 0% (2/6765) 0% (2/6765) 0% (2/6765) zh-tw Chinese (traditional) (0/13063) (0/13063) (0/13063) zu Zulu 100% (52/52) 100% (52/52) 100% (52/52) db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/AUTHORS000064400000001520151502156020020735 0ustar00abysta at yandex.ru Adrian Schroeter Aleksey Chalabyan Andrey Valentinovich Panov Ben Laenen Besarion Gugushvili Bhikkhu Pesala Clayborne Arevalo Dafydd Harries Danilo Segan Davide Viti David Jez David Lawrence Ramsey Denis Jacquerye Dwayne Bailey Eugeniy Meshcheryakov Gee Fung Sit Heikki Lindroos James Cloos James Crippen John Karp Keenan Pepper Lars Naesbye Christensen Lior Halphon MaEr Mashrab Kuvatov Max Berger Mederic Boquien Michael Everson MihailJP Misu Moldovan Nguyen Thai Ngoc Duy Nicolas Mailhot Norayr Chilingarian Ognyan Kulev Ondrej Koala Vacha Peter Cernak Remy Oudompheng Roozbeh Pournader Rouben Hakobian Sahak Petrosyan Sander Vesik Stepan Roh Stephen Hartke Steve Tinney Tavmjong Bah Thomas Henlich Tim May Valentin Stoykov Vasek Stodulka Wesley Transue Yoshiki Ohshima $Id: AUTHORS 2495 2011-11-14 22:56:26Z noct_dreamer $ db/login/vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE000064400000011320151502156020020671 0ustar00Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr. $Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $ db/login/vendor/tecnickcom/tcpdf/fonts/dejavusans.ctg.z000064400000024326151502156020017224 0ustar00x(j $f߾zXEJR:4 @ ( pH @xD@dD@t@l@|$@b$@r@j@zd@fd@v@n@~P@aP@qP@iP@yPT@ePT@uPRuA=P4 A#4MA3-A+mA;tA't]A7=A/}A?  0 C00#(0c80L$0LS403,0s<0, ",K2+*k:l&l[6;.{>!pG1p')pg9p\%p\W5p7-pw=p<#<O3/+o;|'|_7B1ԡ 4!!P@ ]A0 #0 0c0 00L 0LS0L 0L30 0s0 0 , ,K, ,+ k l l[l l; { p pGp p'p pgp pp\ p\Wp\ p\7p pwp p< <O< </ o | |_| |?  BHC@" و!q$D.GPD EFQPT EG1PL FqP\G PB%FIPR %G)PJ FiPZGPF eFYPV eG9PN FyP^GPATFEPQT G%PIT FePYTGPET UFUPUT UG5PMT FuP]TG PC5FMPS 5G-PK FmP[GPG uF]PW uG=PO F}P_G@4 FCP4 G#H4 FcX4GD4 MFST4 MG3L4 Fs\4G B-FKt[BK2oRhOVh Z֡hڈ6h ڊhډvhڋ:::N :Ρ. nz zz^ zޡ> 7!Mkzhk LjfkLsׄ&5W4_ pa}ZD-qQZ4-C cJ-O%jZ-LKRjZ-NK̠e2i,ZV-]ˡriZ__ i!Pm6\Fi1Xm6^M&i)Tm6]fi9\m6_[-i%Rm\[Vi5Zm^۠m6i-Vm]ۡvi=^m_;i#Qv\;Ni3Yv^].i+Uv]ni;]v_{=i'S\{^i7[^}>i/W]a cclb-lc̱>p8Gq$GQq41q,qq<' q"'Iq2)q*iq:gq&gYq69q.yq>q!\Eq1\%q)\eq9\Wq%\WUq5\5q-\uq=\7 q#7Mq3-q+mq;wq'w]q7=q/}q? <C0<#(<c8<O$<OS4<3,<s<</ "/K2+*k:o_x ފxމwxދ>>>O >/ FXj?#?O3/+o;'_7Ёuk:uЉnTt[gzNs]=]}=zD=YGգzL=[W z"=DO'ӓ)z*=FOz&=EϪgӳ9Kϭ~ZBۂzж_-zџB^B/Kez9^AW+Uz5^Ckuz=zLo[zNow;z-=lL_{}z?>@C0}>BSܨGcqx}>QO֧Sit}>Ssy|}P_/֗Ker}R_kuz}Qߤoַ[mv}Sߥ{}~~P?֏Gcq~R?gsy~_/ʕ?;z__ӯ7-~G3y P?֟OgsRow{Qֿ_ow h C3A Ӡe3WVCp g7"HaG"Q#VEQEQ&#1BۘaXF61F?g7 CDFb#Hf$7R)TF>M Mgm3LFf#fd7r9\Fn#OX^#?,Q(d6ECQ(a4JÎ1FQɨlT1W3'IQ_a0jFQϨo40Fhn0ZFhot0:Fn0zFg7A`c1f 7F#Qhc1g7&Idc1՘fL7f3Ylc1טg7 EbcXf,7V+UREQXm1ccll1یcm1q8l 5ǍIq8c5 Eqٸb\5׍Mq۸c g7Gcxf<7^/Wkxg7>Cn "D'!$X&8A$qG|p$<@"H$2Bh$:AbX$6Cx$>I@D$1IBd$9IART$5ICҒt$=@2L$3Bl$;Ar\$7C|$?)@ B0)Bb8)AJR4)Cʒr<@*J2Bj:AjZ6Cz>i@F:1iBf9iAZV5iCڒv=@:N3Bn;Az^7C~?@Ad0Bad8AFQd4CƆ#2L"2L# 2"2#,",# >;*!k:l &l![6 ;.!{> !r!G1r ')r!g9r\ %r\!W5rInKyH yJyyE^7-yGޓ#D>/+F&0LĦn&1MܴLdcrStM g7#Hfd3ϱQhft3ӌe6qxf|3W&2I̤f23Li2Si̴f:3{ܙ¶s,fklfv3e6y_,`4 "fQY,a4K2fYYެ`V4+*fUYݬa4k+UEQEQE3uzf}ld66Mffsle6ۘmvf{C(lv1fm1r7A`s9f0Gs9oN0's9͜n0gs9Ϝo.0s\n0Ws\on07͡[̭6si2w{̽>sy2O̧3|i2_|g7?+1?/WAQbSjRJ-jSFʩԣ> h8Fi$FQi4Ơ1i,ơqi<& i"&Ii2)i*ii:fi&fYi69i.yi>i!ZEi1Z%i)Zei9ZVi%ZVUi5Z֠5i-Z֡ui=Z6 i#ژ6Mi3ڜ-i+ښmi;ڞvi'ڙv]i7ڝ=i/ڛ}i?ڟ :C0:#(:c8:N$:NS4:Π3,:Ρs<:. ".K2+*k:n&n[6;.{>!zG1z')zg9z^%z^W5zޠ7-zޡw=z>#>O3/+ow=@?O3Bo;a Z,la˴e)޲-f9%ڮYXV+ɊlEZѬV +ˊműZV+Jl%ZɬV +JmZa2XLVf+ +arY`ه#Q}>aO٧3Y}޾`_/ٗ+~du}Ӿe߶w{}~d?Ogs~eow{d_ow 24 F(sgI2uFX±,", ʢ,b,,K, Kʒ,KR, Kұ,2, ʲ,r,+ ¬+ʊ+JҬ +ʱ*ʬ ʪjڬkƬ kʚkZ֬ kڱ:ά ʺzެllʆlFl Ʊl&l ʦlfll[l [ʖl[Vl [ֱl6l ʶlvl;;ʎ;N ;α. ʮn{ {ʞ{^ {ޱ> ʾ Gs;Cӡs;‘xN8'Dr";QN4'Érb;qN<'I$r;IN2'IrR;iN:'dr2;YN6'rr;yN>'S)r ;EN1S)rJ;eN9STr*;UN5Sérj;uN=i4r;MN3irZ;mN;tr:;]N7rz;}N?3 r;C0g3rF;c8g/_gb~3ٙLu93,g3'5יܕݜgϭEaſfXgergYv8kuzglv8[mvg_\.go*{j9~?Ost9#Qs9tNQk9q:sɹ\q:ל s˹q:y' 1X/&bd6Jcذqb &Ib"ib!fYb#ybX EbX"ebX!VFVQlUlSWqPqT qRřP'VqNOK*qU\ q3-➸/x,x.^x-ވx/>,.~H DRXҐDJKڒIGr)/T 2(#2*2)c2+2L(2LL&)dJJidZNdFI7wdO|EfE=!s\2s_^OdAYHEdQYL%dIYJedYYNdEYIVUdUYMV5dMYK֖ud]YO֗ dCH6MdSL6-dKJmd[NdGIv]dWMv=dOK}d_O@9HCP9L#H9JcX9ND9INST9MN3L9KΖs\9OΗ BH.KRL.+JJkZNFIn[VMn;NK{^OAyHGQyL'IyJgYyNEyI^WUyM^7MyKޖw]yOޗCH>OSL>/KJo[NGI~_WM~?\B]5\.u-vt]s}7pùnD7ٍFunL7ۍunB7M&unJ7Muӹ nF7funN7unA[-unI[-[-/Vǟ[o[^_rn [˭FG7p~%m6s-ܖn+msۻ܎n'oZG߾7Duw{=^nowA`w;wG#Qhw;w'Idw;՝Nwg3Ycw;ϝ.pw]+ܕhrWkܵ:wnr7[ܭ6wrw{ܽ>w{=rG~}=wO'.{?_=sϻ܋%{Ž^s7ܛ-{ǽs܇#$4}p_s߸ow{~v_ow>{_7>w}7|>-]}?ޏG#(a~4?Ï kuqx~|??x~"?=Id~r?Ojit~z?gYl~t/?y(((((((((((((((((((((((((((((((((((^|~~_/Eb~q_/er~y_ѯWUj~?zʿ_ïkPEQ~o7~ o~w~?(o?#(?$?şO3,?>(,EQEQoB_W /V5Zo7-Vw=^?CGcqD~2TNC3޿_/+U=lMۿC?KG`- ̀V`,p@n~A b)D тA f+ A a(H$ ɂA /V*H R.Hd23Fd oʘ-r[(JA w' ApP$( %w|tP&(;, APrP%T 5AvP'  Aq$h4 -Au&h As%t =Aw' `p0$ #`t0& `r0%L 3`v0'  `q$X, +`u&X `s%l ;`w' pp$8 'tp&8 rp%\ 7ag|y]p; 3.tdb/login/vendor/tecnickcom/tcpdf/fonts/dejavusansb.ctg.z000064400000023730151502156020017364 0ustar00x8 `I-˒ebfffffffffffffffbf7ogzvzvV_l%tfd| ,@ (p@H@D DQ@T D1@L q@\ @B$I@R $)@J i@Z@F dY@V d9@N y@^@APE@QP %@IP e@YP@EP TU@UP T5@MP uكSA4A4A AAtAtAA0 0 000L0L 00,, llpp ppp\p\?upmpO>xG1xg9x^W5xނw=>O3o;B -H )t P@J`D FQ`T F1`L Ɔq`\Ƈ `B&I`R &)`J i`Z`F fY`V f9`N y`^`AXE`QX %`IX e`YX`EX VU`UX V5`MX ֆu`]Xև `C6M`S 6-`K m`[`G v]`W v=`O }`_@8CP8 #H8 cX8D8 NST8 N3L8 Άs\8· B.KR .+J kZF n[V n;N {^AxGQx 'Ix gYxEx ^WUx  xނxރ?| | | _ | ?  2F&A6A q"<$B> PE@Q$EAQQ4@1Q,AqQ<%@ Q"%AIQ2@)Q*AiQ:e@Q&eAYQ6@9Q.AyQ>@Q!TAEQ1T@%Q)TAeQ9TU@Q%TUAUQ5T@5Q-TAuQ=T5@ Q#5AMQ3@-Q+AmQ;u@Q'uA]Q7@=Q/A}Q? @ 4 AC04@#(4Ac84M@$4MAS44@3,4As<4-@ "-AKѲ? ` o60ÖVX!mP1 y{gHC!#BF$#ňhFt#ӈe6ℵ㆕xF|#Hd$6IdFr#He6itFz#1,2bd5ٍFN#c5FAQ(b5ōFIQ(c5 FEQ٨bT5ՍFMQۨc5FChb45͍FKhc5FGbt5ݍFOc5@c1b 5ÍHc1c5 Dc1٘bL5ӍLc1ۘc5BcXb,5ˍJcXc5 Fcbl5ۍNcc5Aq8b5ǍIq8c5 Eqٸb\5??׍Mq۸c5?Cxb<5ύKxc5Gb|51#l`MlamL{Xb}#H82h8:cX86x8>ND81Nd89NST85Nt8=΀3L83΂l8;΁s\87΃|8?. B0.b8.KR4.r<+J2j:kZ6z>nF1nf9n[V5nv=;N3n;{^7~?Ax0ax8GQx4qx<'Ix2ix:gYx6yx>^Ex1^ex9^WUx5^ux=ހ7Mx3@o»|‡| |§||_—|_?u|#|)}?#?O3/+o;'_7&4i4M$mR1Ͱ')LoטTofȌ`F4#(fT3݌a4c8f\3^xl|3Oh&2I̤f23Li2Si̴f:3hf23Y̬f63i2s3or-h [6-bDX)i2Ke̲f9YhV2+U̪f5Yìi2ku̺f=lh6H&fSla4[6f[`v4;.fW3O_m1s9l1s9Ǹ1?k3Ǜ̉$s9ŜjN33̙,s9ǜk3 ̅"s\j.3+̕*s\k3כ̍&sjn3;̝.sk3̃!y0|n0_|o~0?n Z2,le˶Xk,i)˷+dE"ZV=QhV5M4M4MɊ{gCL+V2vx=7lmOX DVZ+JnRZک4Vڰu><61lleZ٬V+mZ Xc Y"VQXXxX)aJY2VVUɪlUZլkX5ÓiگjY:V]Uj`5Y&VSjaZY6V[`u:Y.VWazY>V_W` Y!Pk5aFY1Xk5ޚ`M&Y)Tk5ݚaʹfY9\k5Z`-Y%RkZaVY54MbY Fk9jm[;.kk[!u:j ;nNZu:o].ZuѺnݰnZnX{O}zd=XOgszeXow{CXGb}Y @A01E %aII@B$H"$ J$Ib$K$IH$ IJ$IIR$ IKґ$H2$ J$Ir$K)H ¤)J)IJҤ )KʑH*ʤ JIjڤKiHƤ>iJiIZ֤ iKڑH:Τ JIzޤKdHdJdIFd KƑaN $2L!S42 3,2!s<2, ",!K2 +*d YK֑dH6d JdIvdK9H9J9IN 9KΑH. Jȏ:6Mr&w]rD!yD')yFa1/+!o;| '|!_76m6m&m?mf6][؞-mev`vD;َbGݎaǴcٱ8v\;N`'ىe$vR;NaS٩4vZ;`g3ٙu_;K2sߒ//ey|v~W.h Ev1].iKev9]hW+Uv5]îiײkuL5M4M4Mzv}nd7Mfvsnemvv{bwvOcc ك!P{=a 6m{=ɞlO {=˞mϱ{^l/ {^m{lonwڻ{oڇhGqNڧ}>o_/ڗ}Ѿn߰oڷ}ɾo?ڏ~n_گ~~k+ϱ?ڟNQbjRjSJ(.ԣ*ӀhFiFi Ƣiƣi&i&i iififi梹iiZiZi ZiZiZViZVi Z֢iZ֣iڐ6iڔ6i ڒiږiڑviڕviړiڗ:::::N:N :΢:Σ.. nnzz zzz^z^?uzޤmzޥO>}@G1}Bg9}A_W5}ן{~g~w8A`t,8Cs:VNȉDt"9(NT'݉tb98N\'I$t9$NR'ItR94NZ'd /du999N.'sm)V BaS)s;%N)S)s;N%SũTs;5N-Sǩs; 7r;MN3irZ;mN;tr:;]N7rz;}N?3 r;C0g3rF;c8g3Lr&;Sδ;3,g3Ǚs; "gYYtV95Zglt69slu9۝ΰ.gs;!s9s;')s&Ys>l}\r.;W5ǰmםMs۹u9?9CyKD,1K’d,9KRT,5KҲt,=2L,3²l,;r\,7g + ",L+J+ʰ+*̪j갺kƬ kʚkZ֬ kǹڱ:ά ʺzެlCP6o>llkϿgbc~eql<&Il2¦ilzl&f9l.l![%l)[Ɩl%[V5l-[ֳ l#6-l+ƶl'v=l/ ;#(;Ǝ$;N3,;γ ".+*6oXɮ&n;.~b=b=c bc}b}c9#npMnqmN{\r}_GxdGxtxlx|'xb'xrxjxzgxfgxvxnx~^xa^xq^xi^xy^Wxe^Wxu^xm^x}ހ7xcބ7xsނxkކx{ށwxgޅwxwރxoއx>`>p>h>x>Od>Ot>l>|/b/rjzofovn~~a~q~i~y~_e~_G~7-~w=̟_?̿5\욮v s\ ܐFr#Qܨn47Írcqܸn<7M&rIܤn27MrSiܴn:7fr3Yܬn67rsyܼn>7[-r Eܢn1[-rKeܲn9[Vr+Uܪn5[írkuܺn=m6rMܦn3mr[mܶn;vr;]ܮn7r{}ܾn?;rCܡ0w;rGcܱ8w;׃;ɝNu,w;ǝ ow3O5w]skIr-#, w]q׺wnqwOf7F +k9Ao?>q {=rqϺ{ɽ^q {˽qܟ}>q }qߺ~q(0Lp !_E!QXEE1Q\%E)QZeE9Q^TE%QYTUE5Q]5E-Q[uE=Q_4 E#X4ME3\-E+ZmE;^tE'Yt]E7]=E/[}E?_  1X C01\#(1Zc81^L$1YLS41]3,1[s<1_, "X,K2\+*Zk:^l&Yl[6];.[{>_!qXG1q\')qZg9q^\%qY\W5Q\7MqKw]qO$x$'xx.^x-ވx/>,z3<왞?<ۣ?y2< Ͽ^/ɋEzѼ^ /ˋz^/K%zɼ^ /K3K2xL^f/erx9\^n/ xB^aW+Jx%R^iW+6NRU*1*aWͫjz[xuz^}k5xMf^skxmv^{ux]n^wx}~^o7 xCapo7xcq?0M&{S4o7Ûf{s%|,ȧ|._ȗ|-ȷ|/?ȏߔ=E~ (2VQQLq*<%R THEPU$YEQQU4]P1U,[3**J*JRcT*/ZiTZNWTFIeVYTVMeW9TNKVyT^OWTAUHVETQRU URRUkeUT*JjjZzjFjfa=jZ6MSUQuRUUuSUSRUWS5P R5T S5RR5VS5QMRu)jjf9jjZ%jZjZV5jZ֫ jڤ6-jڦjڥv=jڧ:#:~}Q]:ٟ^4M4M4M4M4M4M4M4M4M4M4M4M4M4M4MӴ.+ꪺ~P?ꆺnꎺ}@=TcD=UsBTkFU{A}TgE}UwGc-O}g>]_/}~~5M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4MɏG~ ?ˏ~?O'~ ?O~?g~?~}|~!_/s_<|]/.eo9_W+U~5_ïsd[}?6,~Co7~Kow;.᭮~7{}~# ?#(?~O'St?ӟ焷bB}%R/,W+UjMXko7-V{m{iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii[Ca?O'Si?/Keտ_s4M4Mq ˿? `# @`$8 x" D"A j-b~si bhiC'  A8H$ -E2HitA C1dYlA G3y|A@P0WpP$( +%aRAelP.(T*AjLՂAfP+ Aa(h4 ͂Ae*h Ac)t ݂Ag+ ``0( Â`d0* `b0)L ӂ`f0+ `a(X, ˂rV+UUZ M`4`k-OӴ`W; Pp88 jTp7H Rp9\ ??׃Vp; ?Q8x< σU:x S9| C C(dp Y!C4Xܐy!R!?BHȡ(hXء8xDġ$dTԡ4t L̡,l\ܡ<|B¡"bRҡ2r Jʡ*j8;~kZڡ:h"Cdb/login/vendor/tecnickcom/tcpdf/fonts/helvetica.php000064400000005017151502156020016563 0ustar0032,'FontBBox'=>'[-166 -225 1000 931]','ItalicAngle'=>0,'Ascent'=>931,'Descent'=>-225,'Leading'=>0,'CapHeight'=>718,'XHeight'=>523,'StemV'=>88,'StemH'=>76,'AvgWidth'=>513,'MaxWidth'=>1015,'MissingWidth'=>513); $cw=array(0=>500,1=>500,2=>500,3=>500,4=>500,5=>500,6=>500,7=>500,8=>500,9=>500,10=>500,11=>500,12=>500,13=>500,14=>500,15=>500,16=>500,17=>500,18=>500,19=>500,20=>500,21=>500,22=>500,23=>500,24=>500,25=>500,26=>500,27=>500,28=>500,29=>500,30=>500,31=>500,32=>278,33=>278,34=>355,35=>556,36=>556,37=>889,38=>667,39=>191,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>278,59=>278,60=>584,61=>584,62=>584,63=>556,64=>1015,65=>667,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>500,75=>667,76=>556,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>278,92=>278,93=>277,94=>469,95=>556,96=>333,97=>556,98=>556,99=>500,100=>556,101=>556,102=>278,103=>556,104=>556,105=>222,106=>222,107=>500,108=>222,109=>833,110=>556,111=>556,112=>556,113=>556,114=>333,115=>500,116=>278,117=>556,118=>500,119=>722,120=>500,121=>500,122=>500,123=>334,124=>260,125=>334,126=>584,127=>500,128=>655,129=>500,130=>222,131=>278,132=>333,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>250,140=>1000,141=>500,142=>611,143=>500,144=>500,145=>222,146=>221,147=>333,148=>333,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>500,155=>250,156=>938,157=>500,158=>500,159=>667,160=>278,161=>278,162=>556,163=>556,164=>556,165=>556,166=>260,167=>556,168=>333,169=>737,170=>370,171=>448,172=>584,173=>333,174=>737,175=>333,176=>606,177=>584,178=>350,179=>350,180=>333,181=>556,182=>537,183=>278,184=>333,185=>350,186=>365,187=>448,188=>869,189=>869,190=>879,191=>556,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>666,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>896,231=>500,232=>556,233=>556,234=>556,235=>556,236=>251,237=>251,238=>251,239=>251,240=>556,241=>556,242=>556,243=>556,244=>556,245=>556,246=>556,247=>584,248=>611,249=>556,250=>556,251=>556,252=>556,253=>500,254=>555,255=>500); // --- EOF --- db/login/vendor/tecnickcom/tcpdf/fonts/dejavusans.z000064400001335776151502156020016467 0ustar00x|E8r{K7BEF@:z޻4""DD<E+X!$7}}y3Μs33#\x٨QyJ6p]HyAF 3"Kiզ!BiG(BaTTaTv}!bQ#_l-eyC z }$8#gؼ< 쾽B7DW ;1=O^=2t@a()N!T`ݻlK܋'A i">Ԅp}`pA[o>y#^;ae>2::/ij"$6Rw L\$g@4 AG!L^&ovmrHN~[ɯ_#urI8A8 ȉK) [x/¼F# `lۅ BB,qB~x@H7AJx&4A6<|  pS)g 'A0;7MoB RA8L 5ouֽ}ؠhca={:s찁> C ={ 13vv17}D_#z&Yrr/i`Sp n#xAgLG йr Bt>e0:3”2VL]]O]ǠO_ xAvy!AH* UBPh$4Z nB/0< 4a0_X*aK''39pY&u)Fqb!fźI6[mb'cI qP\.׊ŭqx@<,??ϋ+u@",Y%%%ՔI R^"J8i4S'-VHufiS+ޑޓNII_II ɐyYW4\U-FrsQ&CQy<[//Wzy]%GG|A,_o*H]q*Jd(Ju4VZ*mJ T)cI ePYR*er@9S>T>QP++u@%ZUT Ԧj^P8u:S.VWufuSݫTQSO_ߩԫ xMW4VUFZsQkCQm6[-Vjzm]ۥiGGvA]nHu]wzgzu7[mzԇcI }P_}~@???ѿ+uB,jq[,K%RRԒciobaklagbigYlYaYmYglfik9hy3W,,W-7,Vk&XӬUAk#kskkkGk7k/kP(4l|RJkuuuuu#9e5M6ElI [-ٖk˳ MͰ͵--mm}hNjwۣ{=^^Ԟcoobaklagbig_l_a_m_glfik?h3WW7솃wq$8UAG#GsGkGGG7G/GP(4l|RJGccccc#9e5M'rNtF8I g3ٙstsqNrpu.t.wruntnupqpvs~E\r\W+UU>v~X) Ͽeϱx_b. &KD!ggpBM8ya9I*d~=ge`V¹;`,1!xX:#{ _;x,_88>HC,Aґ R=Ls,A\7PTք֧7H yfBwaug5 Nj! )ax KZڍ%LX{M_wa) I+n'IR¨ZBw0ty̒);e8B!8K@H6RjHi$;|& bӼjX֏N3,ʙR̾`ҜY),$4=t6$W](MKc+fzOMv^Isє@ ˦/M{keF w)Lk-]m1hKmzI۰2˴"2_QƄLC8[ {1Gk(6+pE( az?ZjlGx[Bvkd,-bx+ce4\&&+),%O nS >VZt%V`ۡ&iCv9]/2_z)7yzMme7gYt.%" $8ae 3hE \_Ew;'==x?~W8,> M=YωgE/]!4B[!Pma a躇If@ a!hV: &ґ/(~IO4ɄRPHb)5h4Of9%Ξfg/0?Z!%)kavUI-ܭ(d^UtP^KlB]!]/Xa=Ē|k@%/)™9t+ µu޿-]?{ p1BJ}[/<㜄+%_o;AKKs頯Z3`*VZM!](N5>&qnwmR̥Ő]\Hq\ fk'Q(~Ӯ{]5vl\Z+⃴>W8 YgZfzq+Bg\Nu6ޞV Az8e kݶR* ]d^4 $פ؟A2Ő< r(Zl%y^*E%0/_bfGJRX֦,1]3G W O 3a0_1 %l`& ?еWN#,=/-i%JφD3ةK.W ~zH)ʱ^+>R"izw CLiob tTnMx[bWұKX Cr;-޽|ﲴ5ekM{bqكL.¤=צ䓎mY CpFoQaI\*Z P K0VD)Wpv!:|@^lޑ[˙Qx/Ǥń}1a[hp_s%0,d\1,?% MP`Rx'/l 0KzL""bYm]6=dm Sq$5kQ) 5'iC}|7Rgi[RF=pcmȴ MO#B&KR.]mJ!HYm0!Te6( 01d8|/;yL MkC7zoEu-!kCV>FM%{wz !/"QΝnge*rwowl!?wW ow{p=fz/!>!^.v1^~]<xMxg6aKݴz.){oNلT!!PaP6̱T6ۜfGt]cclt6ۼ6fkl3Zw>&E][􈾻šbdEt(ö߾3 ],5 S3F,࢙^D`O„L`0cxCQNhӻPid+|v k@'DH*vCtnhTf!b8(q=Q#FQ7 GC־?֎KiF!w"$} ?Ҍϣ4GS})ن "y 9fÔfB$š猠4cy̒6/4gS#Y|b(צg ѯEFK8ω-Ėb+1G|Hl 4+1WW{=y6Ia06<ٹx7! dњt=dC{>[k;)H@ b 6سbH +Eg`}ɿR0 ,}pykznsp{}`<SL</+joN) /T'*/! $T$UIm$Hs|nOQdFfd)YIzl'>r!'G 9G.ɁtEpq\erչ\6טkɵ:s\7ƍ&?[-VqkVn;qrp_p繋:W^歼| _k|S>ow{}~?+!*HS?:$`}u˳5AozU;_ᨍp:pcC5;N~wGx, ND@oyу$D$Ģ&$d-j. 訥k7;aOPW/pa\vŢ!.+uʡI,W=4t5@ aDܭmݗiy1AڂœJĀIS\\Nqg):^!́rd&P4 ph ڄL?|7|3uqC"77T`p59+2r3ve2X _`UZ<n Ƞ/w@rfif"c ) աRXf֪KX^]lg1 [3ؔągr)2qibA mT%MyC9'R\KsE]5]\u]^̈́Z7ˀ^+ &Mw,aL_zq(n7r+|n=q# # w]q7yt:#8>3|]>o̷\>\~!_ů7[?/W|@Y n!JЕUBPS'4 9B{C+ F)LaXX! mNapPxGxO8%|&|%|'\ 7CEU^1FLĊbU6xQ&CQq8[/.Wzq]%GGxA,^oJH%]rJR$eHRu-5ZJmR' IcI iPZ.Jit@:,>>K+u@&,[e%%ה r^"ʃ8yrD9|Q)5妊TQUƩIjVWjcVy@u:FP *uQݪP1C zQ^W 4ɚUskQZ@KkYZM@kh.Z6XӦh3jmYۦjwSgWw%vC3t^Wuc=MWkA\owԻP}>AKz^ߢowC~F?_/d-iY,LKuK]K%גghfcds30d.#r6&aZ"W`C 0K)N Β^&/zSg%lc)lNcwq繢%~G¤+40!+8?-,$VNV$9\&}aj#~l{TM&Eَ߅L /3;Ya,ʕyP M *Hۼ p=3}/0>G{=lWRQ &! kpV,:_©n;2 뿦>% T'pM+lʶѾXg*qYeJ9q0,cb#rfzxG`o]ar f_ܔ%n15'K῅.aN#EV/ff'eOʼ5]@:ß? eS@(S$!C ulRh+trBOg }N߬ow{;{)3+;~UޢZ%ƒ`ITTԶ-,---,,-C-,,,--K-+--]}C#,g,,,-,7*Zua&Y3ֺlkckKk[kgk5::::::׺кܺʺֺѺպúzzz֋+6k%lmUmmA[ҽ?NG#Αpd:;:-m<@0$ \b j:f6N^A;?{+%4ǃe4צ~踕Zxk+/V*ak[J9 _҆0c01p{ ;߃+r߰jz⻳|V gh-1f86WNdUһ,t 0n)(Qʜv;GM L xT)_:b&1/gpv)%){܄d b)Ȝy:b-9I˞,oH8,̈́YYf]Je=0ڙ0Iҧ0K7n)ФT4%JgXk=QW Ùl ew: >'Ki rlYs{~vXڬ0a L曲&1[X_.wR4 1|ylFa0"ND19LJֱu ~Vˆ?e})BT4Sqϔƥiw@&܈Ҿȷ Wʴeu ];<*؅P.jYajYz/bZ?&G  %a=yZnBXIgns.Lpؽzl7B"2<j5"R>C&+Wv*#gZU&W3  +(nr[˛\#df~e~/c\]*QkM:{qSysEoV& fakN)/0߸^78حDžll2|^&f߉<0T A>a=\_(c7y)B3{X__fgZ3f#v,IWUMX DV0En28TΔ#<}%7qXLMdW{*beg4mw)%a(v<$K{iB4OIBZix6yS8Yz0[>|, 찻zuSdfW=UWC84=pYX l_ yK`r lgeJ9M/.?d^'ra?ΛEL;㇔ڮ\($r2-4w[izVWyx&ɳMUTfp%i6+ʹuE9&FEI1JD2ӥ=gyCJ- )wZua0|7: +7a] 4=GKt̚zh#ڄp˳8` p4BA )ofʛalV~rLyk7AmLy;Rq'?G0/p7>x-x ?H6_>͗Oe|gl,א늾zq\? @7A t Ahn4*+ّa[-"[%n5V-Xrǰ{W.p?f`1n{ |"gp"_|[-(#x88/~o_q?w**.`y4~',J~\~?)iMgIIW:Or,>줇stF3$/ݕwW~EŕhŕŕXŕJe"JJEݕj+AysNފqwWn5b8/ "YjBz'i -i9z%IIY<{r}d}a%XW~7(-\e#-MgPyjlp.`VlL*`u|V~Z>#)W 3E'^ 0T * .zhe\.g<_t򎫚횝kO!KAE!L,Zhbf*\YZpy,!tVu%GIYf P _,Zh(P25=sG zOZǿ7Jb>,_W i}՜.? O{;~ w*?üh9LqAْg\v-g,c'|nӿ;y_4fNB͒å4$%)})a.KEͫ+i_7ke5!OոRr.$nPܿGM{w %L_eQF{I Z? a^-}2LꛂR zZF~@5.)/ީ5m <n6Mjq{'QĐݽV;Uۜ2fqE?G,STf^{Mfj읉Ip G= !t8D! p("*hJHCYp T+ UÎj@5pB.T7ՅË#(5## =G4Ա5AEC.pģAp$p$ip$h18RL8l8R8b8?VCEpg@ыPnzh킚#G<:Gyt0;pHC'ЇpTDg@_![ph  XE؋Ȇ}؇bq<GLd 8` NAq&DN\F^\G>ze7՛Zgr.7R]Ipg,gE{^fWxB[*N1ˌ:̸na\2u'㺋qݍA(+MA#DpDVpĠ8LɈecGpģp$0Id$&IL T&1i /3T>ҙ|d0Иdؘd@.֭zZ6 /f@[@n3&fPpġ CkpTB{H@}SJaR¤*բ2LeLD‘Q*:GtjL E>YL%ڷ:: G c8jOᨉ>fHR Zk898pFQG&2fq,b+޲Q۱pvNtvaTe&~#Q&2x?1Ȃp@*Q Nĉ'$T'dT +Nũ(4TP#+Jiʸ2JUpH+:5p k\ B XrƳlTVn_/Fx+ K%?ßA3A|Wh/kjÿXe,_C͔x\L@De"OR&#z@\B XnRoobZ~zV4}g:m99?SUAkk ЫZr~CP} AIOUkX N{;U ANU'@ߝ@i6SjnCt#h d@xsV!jDw!Y+prՍBmW#WS\]9Hpv6B%QnШy[4= F{ }ptgЅc D2 { ='>ۻ0\o@qC#㾃) }jy#vGxvS/⚵k@6-PZ"6 A{|wD@*-G)Eq/܎HfP~DCbݮXȻAGUܤMjԌ he HyÝBvU&{kd/y#9H$[2\!WrF~'H);R8].>>䣔6O{B->>g8/Pc.~n3N,t+AXp%^9 r 1Ϗc>Ǽ=<8t }>3pp㘟1cǡKpp2 g^ƱqOZozp{X<"2 : 9r1Ϗc_B ctWao+qr }CR_'{gv;2y"eRv-@I!CR\5,N)3aXvMo9``ɡDag) }#kj]RJyٽ; %[\%KB)[J]R:}7|$%wr3ͳP^?ݤ6}n;6RJh 9P&V&|6B9Y9!Ʈ0* 0*)Ke}]`\g%]O$7=z m_Ҳ(9KqФ,bXD_/WWɗ/ooQhZӖsuwtvspqsOrOstuw/t/v/u/wtvuwovouowtqstvq}+GO]]W\g_y7snq;v7;ʧqB"Rߓg|}}\7|[\|1v^sWs|o|I}碌#ߧ,z>gaI+BB?ad߃Ld߃LQ3ޗKe*2}U|}|u}}پƾf|m}|}]}<_?@0Hߘ2܈rurOpOqpvspr׹7wwqspu=uuusw/_E7wnoo)*Z}}/n ˾8߫=5} 7߻>wCi)wAJeOh#zA;$d:y"N(JxE _b,KUUU 555u=~4~is /_q~ͽmQ:G~s3׷_\?xzr nƭ-že}}ymmv{U{tr'񉾣|NyO+>}]ߧ4<AyM-eX,X[gvn$Ha 5 R=jh .Ȱ@|a)~Rx:t$~fFG]35ꞰN(_"ưBNׁ\Is",ͧJ|Μag>cgJK#V,n6k=6a6pz)Oоq\Jw7Jywnwgnw'wJw;FP}kC*@o ƶPywOVnwV#ܮ܇YYY@1!Zڄ0𜅶B_a@),1A.k"qG̒8G@폓ёQ2雋g3/ "uFyh)Z* ZT_))ר.ev=Qڞa Y {ΧJ Јd՞b:j+XܚՍRCB % NׇwDp~pFZ\}ל~/#gʣ pV~3G/p<j^F>y kC::ԅ8{zx_=}û7{лw?KF _>;goCr>r>5Gli}uP?w~~3esZ'ztAX:{Vƅ*S3ΌQqBq2O=\!*,RrysBA(*݆or.t&eC^s!WAhT#E:C鼴_I ;׊ku:s=$n.7{VH ›E(1Zvb8T!g~O<-!}/&ݴַNΰζε>a}Һy ׭ǭZ߲%wuEvbccߍc -'wO?7V qLx%I|It$F&'%O8.qbĥ[O& IIRVJy3\*6Km:}jԥ/K=UiER~?߂oLF{2n*Tm'WHл*&Wآh]׷Xb 6ܿن6:lamؼ+ܵk_xwݺV[n=w[ h0 "S:(\bFC\pn(7='T: ݅96pB"Rx18 [+Gpx*pxRSg7[_=~;up7w? zZ{Fxzy{ĢXolJlfl!?{(؟#)gW(?0"08(9pk9s&F$$&%K^ q8!)7T1UOMwLힺ"Էߥ^I`73P11ckP96sˏ*d8>뛯Yv}s/ oސ!sC -7kÔ s6,ܐ XJ[[jV[o d(E,:PhwEۊ^,RBUEO-/ZVhNѬEu+j_PQ~QE*U(J+J-J. EE"H5߿W~E/}g>~/_v[xuW7]}j5W_]|uՇv_=c??V?.v׋\O/]ŋ?\ws/.~z]Di zCn,߅xO4 } 2 i 2e,*5#d*j@3?d6 mw5 P7t;!@Tdp9Gw?ȋg @?B|iSz"=11KXA | :L]9 |8!1p}h_A[L|@q> ̠5-͠A;n ? :A<4ց@H,oA&軉П>X- 6$|=`D3X'2h / [>o@,5x I`@n-$ЙI~O?tR)@_?@y6Y)`:BO{e :?i} :>5p賩R6賩-`;1T6fI pɩ`R6Y @TZ>+@ IvءϦ~e;vw@GA_O?z/&tD:N}OtJ:6; ӡ:z#t CȀg ~A| W0dرbPI?{]Z:y9!rAS@`ʃ tCt rYa@fp\W3 Z'bE38>-@Z ;A_[Gq@'}]9A Y b= ;Nzzy6@:l;Amm8F]_. 6 _7\ P p_x:n=x>./oueA tvh bCz5. נknоos;-ٷUB]y :[@w2z xv |חConpwȴ݂w -]wn mtCߡ_2q P 7?h5n#FO@ obrOCuIGEtMwh'AFO<!n d30OC=O= t#!o t o@v@?o*@2 ;j, 5ס]ޱ'C>1\{x]DcW3ؚA$)HEM̕lv@NBnA^C(Eh ߔ+^Z[>&7Uz>F!jdkuw:KWumP[GPǒ]Q7EL4 A%썡ϡhZG&Vトme VJt@P/==4 ׿EJ94\A,}koC>ASQO4X_bq4zGETon*%h5Zڠ @h@s-Bٚd>"i+MVGJ4YƑ5a\ C¿]/eG!%lz7Q :\[BoCYh8i"4=f c iv\Am:q.bF'.ܣ1>7F L ph^#vz|.ތ~sP[Ep5(+Ц:1nԔEǥ|%J&BUCϾY[@Ib :\ڼ?A\eye5] $ 1N oKm(gel`WQQNG>ZM%įu t l+l Tj֦#$Cz6!n kX{w Va 3y:%[Hea2QC.UFSN]t9< 5KWؕ% U $4JdItC4ۦ5;սUVeT|Li-G&W$:8DW;z{0ӅOf6=$ xʼ "2mmÍQZkpLe*A%GU*~EТD$m[&h`Z cWG%i!|.Ꮛy=naZtE.(5B h랪[..eeeֈk7r2x ǻpx],Tgg}qR>lk\xo~>5¹m}_etk+O=j-W5l6ND7 4`jj*NI#R)R4IOrt'*3Gb\;ʘ+&j'K)E3)/o6bopm6\-սvKNu~~p OW$ꔀ8Z9*jUרV?<(q+^O!;z~`w?;֫6m^G|kĸG-egmT@:j;gN}ƃC?EiK<˼W4EzAH-Rtĸcz41@ ^%qȧY)kJ)ebKjƫ;Bɍ'I/<"hu C_Eun5.rBc`jdT4qqmֱԒ^È &1>;'NN R ,K0Fr'-t2f q8aTH c|81#(qd1iQӢlD`<PxRzJO @*[l1Nu 4m޼y4^T{ГMF/~X ?7+g-_0cCOJ|} T{ׁ\~SYYI0`]E1Ljm#6T]PJbď|.ej2Pc Ca/yq9qqKJoeiH<{ [ xUtBu 'Ռӧ-&$|/ǹo2ǢnD>Jr̴FK| GS-uqr104830 b}d?tvcڏA!?T 9(Ց8w?*HW9+nJb,/Y7{͚>k,We?ٳ^{v2vWRqCW3.2E?gγm |Q` < x /J0p;j;T0eRaI$FNAgGE.J%4p6QD;Px$6 ߜ*3g?h@T1?BsQܼ2#ORMM *]b-W-<0^b61! /Wq_p/4M]kh%KM_DZ9kʧgZ>}+'N2e{ O/\ta}Ĵi# <6kDg|y>틼󒥘xWJH0[ߊ{(`ԁ1bK{?89LƝcTf -ʸ`0^6m Idg.wˌ8d<6]yOds1A8_MkDvEfy!XZ!\ ߺ7 pWEƒڎOq96D C*DJCY%D@h97 n+C]q[ˉa V$DBp()I$IPD)TZAڻaZ}vO^4*7*ă@_+{%)"ƺxm_[(aKLE)QdjYt]Zx<:c~ƵDߝcq글9JWC`$` :z5;wUeVtF]_6ܱR,=}j*w聽j\|NEzV5?ctHs,sʦHO4jۖM5<[6xEqQ()FiQҚ8e5)_ K rJf!ө.gفe"sBEiW':jQtX [KJ-AɇL{lJhX9%Dic<=DR!RuPb4o7OqcO'/YUg?gѷD]S̜=i*n)<`|VA\ܺ_g4nw޹٬€˗͙<o1.;CC>q"nNtY[{|78!ёЗ(*:9 P_;TNE>**D2=^05d|Ȝ3<3|b$*6Got ۆm&dFhR$,Sx/$qG}J/^c-RV+؎Ѵ4xg63z~vGN6n`^ 5x!:V z2(h]EB% (D[=},Nx5Ђ~k㨑 َ}Ph+طxҘbL2طk2,CSe S^$9uP 2-pw{»ܶ(va-ru-m.fsIP҃P`8XY,ZM /:]sPS-(K;ŢZ2.z|ֱճ̺HGP*_%"Rs}|JKfsjB\}4vH|c1?-Ґ ;l</ܦ~ ƒS}H^rqۅ:nyyGSU.Tp1i Q< seab>xȑh*f9JPx G*z䖝=ea#m6LZ DZ: O-7X94e64UdVe> T2|a4e\/By;.l\ y2*7Nx:48x:ge>/ *R4@G.xH~zY2t?XsHD4∢*`T%['e "Acz*B֔t<6]<ґVJ5A Q=-"5V2^N!ӤiBƹp4srR˝re<24fc) MD<Wx˘|Ԙ|H8] s7nG7.*L I:?# MD,ATj%dTTJ fV'5AɓIĊQb#D;q?q+.+5T1CƕP[~oT}6̉sx*\6GUT6{j+3F!Μ(:k1lco]1{%Zuj:`| #b[?l FiWeSkTA͑ZXYf==x^.o,w9 ^b*[XFCץvr8Q0\X@x`7r>>%d¥)RnD #hlqB\!>>]-VV;9sQ9eޅxs}Ҫ}WIX5珓"V8?{i2 -M,-NJV" i3ŴGB>l8G]w+JL_M2Y Ϟ{WFwc}4ŽV?w~էYӝ~YDF' pS [PӠU4yܟ O/8QV&nMK2_\ZxFA(ġ!au:&Xf=3LV˄ߵQb@=eѭoz:·Ɨ|G^9y xA`9/`*O< iXDes<~ #,ɑ@\ ЙM$ID>v(>J@)8Bk* jQCܐ4P{1 ( #) }C H'  ImM(Q{G j*t5HM.w!druMדg`4YTE6׍hOV\ʺ-Kޫ"_:4! n=ROfI ![ H2@d2A,LQeB/ t "x=IA :Fq#Gvkb@ ȉJk]RW2J-imᦄLB6l9(j =h Z;z5=\1Wʕ{)^hx2͏ƊcPy>YlIfq9c\mI~%RQ.%*81Pӵ1}94`y|YE /"U;cSdtq;qcOG>.¢Ț S(N5ɂkt%uP+88363.ӟȌL @0> $M},vV,^I+ rrqCCCMO LVv*H/3L}eꐧvU-G oaܝm{R%o|Ho^8us^7־~97Pujȏj`$[)#i56p>:|9sgnܔ8YJ3-[<ߵ Xl\o\II +vډl;C &v#{ ϳOdé5e],+^ЋN0v62ϗskwE脗 mvn\ث;ne8t7TP!8>gr2G7{*M:Zڽȍm=[Jm~*o|Q=h4#X9mv$Jݫ춽dA 4LgoMq8t4{R1%#?^D߼S26Di>B>l/].ø}CnOx k"s;o9q!6gp=znF/FߪY8إ?b5ZR؈ YǯKA_s=l:aVAp3]5a²-wg2d]az} gս{Lpp_L/D2<[=_@'%k6 [(s=+A0F#ӥYh] b+ uJ?_Y 1n:rFLQ~]}t`UĴP1 WU4܋,ؔQ9igOy*{I*I xp2ZF%dqLqƥt.r1H+'a;wGYJ:II=U$­d·w~k[Hb!}+d)^EOښnA](^KyEMDBb$ѩDؐ+yYnWH6Ys-'&N" )(d>u[56!I0LI0)I_&%) p,R) L{ia#=lw﮿m9Fv쳫Ȓk\,>wkP {A\z>}|qّyCn5kִӘ}$9>9.qwB!ixۚ`bh8Y,OV&dddddxg~HG8e_eKlYr;W~1~} *(Zݸ&{@/:RX/]lwY׹`d2̛?_liq\2.ݻK= RؿXUT7biW͋~=ro,t'zmwȐ܉R&K-y]J<­af?_-j4nuWRE5rR3t#SǨޑZRe8"_(1Wnqt_v!c KE߇ڄڔNˁ5w̉WyѲU hNuƜe劧P*Ulb-FEy^GZ~miZ'ÛO'Tgj3EBDU8pVٹH.bX%RzG'OI_~%=F>H7=>H)pyΜKzO:90piz|aWoMKk6$ޚԜU;Uf9ɶeVo ;BwUX s9`Ygr$YɭWO 6\$+‰no]nm-򙌴t`9NUvt>_ODJftdfR,=Ӑ8X$/ j5 i"4Ra&:cDn ?;Y'Mcxu6QE[DOd ZOMkz^_6uKׄ]~!&w?"e2?Npb]}w2>t,p+[^d #~ H3yK4xL0 vTi 2&[xH. diÜ+ur.w*ϫQGMQ+RG5O4)~ X]Ǜ|5Fxys)B,q-PU͙&\#T Z:J:qb'^XXɖRNfyR.w"l %7j1|_1}q:[exј4%^Q2.ǃH2QFɌ!š[踺mESHfq[t@omM3@fdȮ Cfe|YWD$ȢYb$ZYԖJg:2ŲTTzfl>!v.T֣QT7t9MIV$=ՒaͰ5@[V#|PSUkZjYk2  䃡4T46mC!Ҏs?? 靬l9J5A=ݭUOwkU:VwVJ]6[aGۥݱ?gg$3c<KT̑42\3<"~%hSAwDf&OTKC>|'ObSRTsSr>6Vv-p^rRJޯ3c{SR~#<=lg}t߫3^ KZJr߫7vpDdLral |J:ld'F6/6"["g F'}S;V얩DWqC<c,y["t%p9j9Mipi`@D2#?mmm- ?՚nOs9kXkg鳝-[779tPhmTx?a|mX6܇-^6jWyzY؃G"E$nؠ[":c[`@m;| /tNA&}NT|`KMvϿ̽-g0Ƕ[4**Ѓ+'/TVz.3lOWP& 7 חvMn$wcQ(toz7EJg\h)_!FP99 *Wv i5hPVCVXaXWw̚Ǽo8lb0B8!q 뫬N];a̋9?r“lg(oLlL7֛{Ud?4&pgYYv\$ɀs} T։ޥkMlTu ؾ[I{ɔ 7usZOqjըi־p0\Udmթ{=OylSm5(Z]~+raMS~x!|z\fB_Vu bOvrOn{n6CNc뮹.ەbқ$6lmZ#oA^T /Zq#y`mZmӪU˖{S&hHH*RO*86bm̵[NON'k8ko9 P2!REkkdDc$y0Z~aˬ>Go _ȹ|0BBg,O* 4yؕ' ~[zgtHj\į:ws~̩gr B/+`^ gE1e%{/LO1c;{7 4og̾g?;u#OK~+]Pv_dI.˒pAG  {ZU纠r̮2n }%*‹M2׼ĩbBW0JPP NO)1d:'vπ8K_4өGLDI#4F#iT@}vs#10OWb*ھ;׮2}PUN3SdInnPo7ERcyhYZf;l6aWӖ9224!-^(͢ VHb F.l0U{2}}s}>m혩?f_X(tyd4}``jѡ^?N}؉lN.ٙ 7F} G)Tv8\}LB{ʤ2әC:\PLK,ɳQBPiG{:/bl ?x1r}(1Z_8]]1b^,ތ_Lg %C`x\.B.a{FmL 淧)>L4lQqQ8Rn%y_cy#vp d Wʴ32״,f7ƽG)L[E(Sap @=l2QͯbU**L{}=V+3Fi ] {yMM]/0ఁt[0.wxϨJ#W'r6 w*8clF x_ nT)YX޳8u}3[;a6osxه;l>@wݵ+";toyXΧ{b[4p:mܬ /l"Ӛ!]u{ʤ2әW%w G3˒Y8Mё;Gݲyݿn}:eej)ַE^dot|~_}#>s~=Ѯ 17E1X|7>s朱O-`̙~$GcF`fx-gxgv2vsOUKl >URe1VN{+vԈ:SL7y2]REWmMIT[\}EREUTx=OD#[[7Ix^|^Z{U\ ~g'j/Tg'>XZs>$g#%Æ'N;_J[題{my52b]\#o[FYOgo-1#E@kT?R?3yFZ`=>L.wMutDftdO\BteAYA `@Q,BNʮ]>*<#?*a|=9ۓM6fCM# @-C(R TR44i"*AEP bl7x-7"zѫ=9y ){vvgfy>_IVb]OgzMP"v2Gu=<1"5HLY$ZWVPZ(LK %}IJuO I>>H[tUʱ1>pUjH2iATMr&IIn-Ewa!vۯ6oO:K,0Wakl %SZۥ N G'XK$ۂ`Jjjj( M럒4_ Ja)^A|Kc|KR[}cyroiBi"%o}u[Y1O==ĆlWEY[=Sud#*-.uhOy=.~SQQ|_T/oRކy:cٓs2o4x",yH;sl H H./}~c Uk͌}/NqґJoRz{!^jY!R&ec5 _!Pi)G;l?R܏ f &= 2CQj1-Ȁ$>r _'~WߨnQ}0jMg,iKEgJ5WUޢ3"1A'$WjVKwꌚ7dV u~=n]PwB}0>IŻ)YΈ/tx#sƫLq2Z iW9X|%Lq6_k#"gD2Oy7mMcM7Њ"~{FAI[k(RcR O֖ZJ1Qש\ѓDɚģKJ"ϙA1L ڿ^أأ߇3%J<6+zuw">Dυw#>c&F?Xx7`ğc4TZt6wi_!~3 _)yt"0h5paЬ;aS2KsM_4g/GUqޥ%W1Ggmv;tePV::3i](Is"Q5I0y9J6l)YĘK^:}>*)ٝ: 4tY+aYf֑{CJ#|'+hD"c#FњAFu Ƿ Ȏ[u% [Tk.|^>Lh ciwz$; gx9oor*䠯c؁L~h۫6Uh2Ț Ycxr,̙3?g_{9\ёCu]!_gn?O[ǁpA1g:u}ȡ췦L{_F~א~TCqޜܻAweɫrDXDF#A\%%kMcɥ{\Ť}KdHr6>bpX][Z5ZD'b%#'$GVBߩ4Y~UA6o.Bv#ÄH7k=,Wa<ZyK]8 zrOG4n *;J=|gm{V ޮn1i+Zz:ڋP{-_ElK3lkPP}ЬbTyq\ r8|vUH=d`]L\2A0[(gwxUZPX#2/K vq9@ ;@-+A~xЮ!?@P88E,!">wDgĦfjwԈ֧]!DGb+4eleLl}'Z'GSug+4Zo_4g,4 wo^ķ Y^^YC<?h~ xH(oF%9p]-ds7%[L~+9G' Hn {X{s,$2I=ӽ ˏ񤄛\do@߉ER"u\ yNcdmݫ󭳄ճ7 /4w7|BΉZhB,Z?PY2Cg8j_m*up;rtj(Uۙj+4L+{AJɭmSBۓw$m jIڳkx #}eH V堦#aێc#n1\~Ә+jKW*]1zL]`/e*E_$?a22dfL;2ti;-M-O|Dkd>ܽ܇͘4+ԓvfZ{4:Z/ 0*RZ/K{ >'o+ i,5 lm2\nzPx0v7g63FJr+ d&aj΢%3ˠ}5n_{YZcYtT?c32Yx WCN5j{oWcWÙS KϖhlhSO0*r#>f=: īQk6* srS#rMyKMOʕ AV8n 9^TכAӅ L fL2CJRX{^ jh. 1bX_g.綴r|ky[}xRUhjex*ǣi[Uy#kp\@?Ǽh;[~SUoߜ|$?ߒNX4lږy>5Z4NdKrvIKr'i"d9-5'O佋P#5Qk*UN6|&uC䪽T px6bj-4Ccc|! Zc7C"ߌM1`7!31[ۧh_L}eA/#z:0~_5>l ,S'$~&ys.?z&dϷ kf?G#e{79gr"AL_JP~&Ԝx@3&>$@y1(N WM6Q$>SRx+4i^ T!=7^KldzE!{[ fmrzZ\nN bFƈl`H_k1dJ3zFeuqi֏1^5t7ެP ApBV6BaaȰԼưayAӭzԹC^GM1Ӛ'f:& 6_)cO9ɐ1ٵ2|լbG'˫ǎU"7c,jomBZtfN4q@jBU5'1L?>sjqnƩ 9@WP:Ƥ3VXD(H!Kj"fѤ3I(D3gƲQX'UP`i,ȆԳ Wo[Wކ?G}LVS3L4ht!C,ɞm"yC ^:fcccmcQdnwN٘&%үͨAiAA3r(~Ot1d>E D_<ʻW,K9n|`I%O [1kWM!.EQnQKHHKŔӴ̗8]PӺ"eZM7^ͅYmȽ18?kΑ)![ S6zmyVgVn}>΄,d -9l$'L:?f!{`'ؙ$|͏2ԅ&`(bF}᰽awG9._Xknl03kc;"6;Y:IlX쪲T&'TgE-8c+8 ITccҕpq4*;˭j#R\ $[¬d9pS qGJ“ь6VhڂeBFɢ $<yQ6'{{: cr1Dn}2MO.-;SzZuc|[/drƁO9U&I%a u$8x(cvjgbRKAb"#s=a"k-;p[5ќTt+o6͙nh{$)WT;\H䮚v&m{wr.WH-]uھ@u~}l%Y>7E1_ `;Ԕ >5e"&2wsʄ$5eBR|Tiv%4G2np4l@`o[, &9?e9y [R92F_u|h~~+!&Jsk.4W9M(U0 :ш~ew\X$ +כ8Xނ}`wz ͙zAfV }FjhD6guF؜8ArtB06R7F%̳--Jml1{9~W="e KpU+wQɛ1yDIX@AX@]z\XtzAg9TyМ -YќͭI\Ā t8{van0FCJĊUlZ~:;Œfzהה8WlS@3IoV6=z *`l1Z̼X R5H]?Yhl&KfЗ VcyuDP1k@2 4F*X -zCb!t6"L鎇I&|6O֎yCL6~SGF(w^5xKoim~;w)ΎP{lR|CrP$([N$lfyfAMJL'fw;W'XC-=-mHqoS5)R).`E06T=D\v;5pw\(WŭRs0dF/Kkd+UgueS:^%6!͂JZ3 U==}Ϻ4HgFIZQӏAS.Bcu7l $񱂃S9wȡC1hȉS+]o{.:ҽ{$1\۹ۃS,փЮ4Ts"--HeG͌ ېk,2V#\%ik-cP;ph w(AAQ ;.~>g8}X;QewYo,l0)Y ?Vt51אILj'9r6B`YԆ]GYKfh/^̵YI1'fBkZc/')O /8~p[CxLj/> 1žPF6?_ E}Μ&{kӹ5Bkϋ/E掘"g9<WvyM,^T˳]ctKCcG+!嫠?jX&bQ݂xąO j7+Tnb &&[k}n5,1Y#fpM8r0o;v[xҝd0@೅TgCP5?3zlsXߚs[>9om_˸}kM51Kfp-U_.qT|lb{eOk`۔[p^izTy='X/ǰ+˺HyzB-~c-] VKҪ>r-?)#дw7Z@oo{y6&άL8O_7yŘ*vI%ϋL;χ-2eI\&~@$20fZhGh@n-us: 9Bхü&-Y5=G]yVw￸i.u_W?o=x ϳM0,8;Ty`U,FV;OD5"ki&Q A6xJ G=S4;(w෽Sй/*l-Уаv~9KȺ}ɸ)GoiN*5=mQxC类uܝG:2D!|:KcX?b5@{Yҥ_-m^yn!-Pq0DAk'F&ZަK?A@C@?sŇuhl< p󨠊p 3)/Wi1C s]SIv$4zʋJKW]\9ftKGR?b B;TrڧSG RH%(jb?8, nC?6b(ٛhM;vyozGQ{<3~_khP!e)%;;{ Jm].Ehm\mE"}o?ur99sꮭ9GWݘ:c=ߡT_~F5sZyaaÇ):YuP8)oBiW$W默-wݘGhK8s ulKĩ}mr0\9ɕCIY* 8PwRv3m  b%/bؐڜT[o[_ kZ]n{5ɕ:ek>5>u{/;N=pVfn!:ƿ75j|p5)1/VAf;ghWĜe{:KfbWj"b\߳bs?h8:翛N)zKw+JX;̾K,=ZLz{4rvDdXn,jO,H{R[Eu&Y e3H|nux:oEq0ܮ04_i Fگ<ԯ^Dw'Q=ƶ'-Ua[ vU^ۄ쑝A:#2 6& U/yJ'N8Bi 9xH1<8mHfR₅̈E`89v&PNT7zuLX &:Zu[[ŗ2tsPi'؝IPMјd1Y#@|oB$V3M?C%bA _avv~UY]õa= MI ;}bST)Ak ztHhdzDr_ YջOth23+|ch {)1E'9}k OK ZS_#ii[)~K'ݗK' 4%ŷk/t(X gBxLȣ|eD 0%?2? w -ʢd3+`!qB/cv\6rZ.˥qƗ8%]IJvĵ * 4RnS붧w* &4&n' 2&I#Ar+UeZk^WY+]kWpH=rSnv O{x׀k{{|zK8mN]K*h-nI8Ĺ,qzOR{1ojɴҠFjc :dG,2 `@\\͖[D;S=:O 8Oߣp@7_ 8*߾aE}0I:hNvDlA`;Zs֒gK0.N'+7odD Fn!! π}M}>zvVo*TD|-50\|)K Oυ}Gοv-m۔z#l;xޫ~x5 2Vo7ug6p<_ Bo &p6$.l~<>?puݹ2v{FckXe_zWnh6CWY[_#{muO#nerjGQaf5 L!4kѨ: A:ddlrsprbc8SΩ8,ZE7OS>d#^.ڏgܔ@; _Q .c/Q JG x{boI#'UԩJD*jD $^He!1$=dG-([ A=S>)dž1Ejհs-|DSsbSsD[I$bN]k7 lxJUyT\*,]^| {Ky9G$2p&\%Z*T.LjG2q5!nuU,+z2r?G`(W>E8|ctf 5 q$f9ڡIqkH0BkM_-"`z^G8fhVd;r].62H`R VV1} hc)1vI  JT]*OJ΅T,flkNۡ0-l7`f9wEl-/JUG#m멥hh6WAO[9.yN"A0htY*i]Rj:#YSWqrHܾ8vť#L4>- lsUuzA[{/mjA>eHOOh7t˟/ C~,]̧)ӶOV~S~\C-UCEEWN&slSDAy;~[xt=8W]f8SJoMtd@2J!5-D_8|cmSHD0ƞ$.2YUnFke|HRobhtтxo#!ەJ*]uf3#3|1ty i~JrXFF~Qq_HRI`aX@O)?b;{UҦo?J˫ cyI\ʊ򊌬#Iʇ4L1))khw<R" @:,[ӌm%N>r9} F}*Swm.ؗ +S\9sf, Z:ycrH0P׾W8iCr;MkN>pa! mݧ˘{[=g d?M*+ɖ?'kq.A`#ݴ+_ݒ|˶,?ޖ~r4ޘ3Aol7CD5vB'O;!.n괳QƎ#& ME_ JrV*^[;$ބ>|*ǯQD0 O^@2j|g%:dP )30P30qX k;>u$sV9ToƆөN#Pfǚ^>W\7Lo8[]Fa4SLOU C#ÊNGȡ)r1tDp%4O$|CNACx{bҰu`k{)?owNbwJYmF vTv 6ܭt-3v×Ciz0vZ-ylgfo"R7H3z͵fV`,ȹ|Az&ўP1S);S׆%W,tWx k UB:l5ߧۣ{muOE7qh,]/S2IԖw5``̪ BZm 30x@̇17u4 ^y/7JNAͬY`>t܅?oq4 r77 gzBy&aC/b5Cn#CB 6aZ7ٿ>UI 0Rn1%襵6gJ T&h]_e=к]T)%ʌ}DKhvD?kU;YyəYivT'9 \˷OZ|diFl(Q^^(8 E"ONHS~ 5 q`qƀ ݌FM_Q&N :[ uԲcWM]fꩫS?n׫ﴩS]7V* {ܫmoe᧰sױ/Q?Nիt]6` l>嬢,ٯ#h&}Ηq2 ,F6q._*D28sl>DE`d6ʞqlɫoÓ;{ZTW#9\i$M*Z4$8!jb4bTKlL´.Nf0 5_VE t%@sY2T8K2F 6x(9JB6MyR[\B8̀?:xZЏD"߭출5Tj̐&P$-K;HXEY"E%ʃ+O"N4js.S"p@2\R?$hgx &mK=cլO'nJQK)СգtnH *$"Tf-ex]=~WYvteZuj|zh5V֐YR?\֗YMY P5)MJKdcTDH1tU~҇Qo0bz=A6I?n1P{U|C7Dv37 x?f`;*6:֘ ^ I4;Yo3X#1JN$@q6C0y]D0fj{.ۏe+>Q)ԌJS1"1zzJOiA-PmT[͚a1`X,:.(6۴f)OоG`b 6$Ƅ ($ !ȀY 4 Fj{;SpLx@[TuUv8#C fG6CeiD'rZ,o-?^{hU()WTAWKK_mc}O7*o) 8a|^PoKAЈ>9% ew DkjC€I+8baZx?Et3\G9:5CyCZ.C]+~dRzdӚ;|w!Zkg2+dsj/$g]c3C%6*ķm [(<װ$V#ߒS>%sR̽7uNT2,~LҞ>yTƸ= 36tuϸSOּGAe՝s?}?3hMK=-G1 of#G,teFS2L ONQ) ?^ F~ۆ3gA7v8}v}ߵvbn')fܔ3)2\q@θb{F[6wZtvAkƝwKɽe'gHY*պ3_$,P?ߓCllT$`0rkvKċgQM 6* IIl:cL2wXgPư!ւڮv}rH$yfSO#te@}+:xV' 8sl:Sm QBjQ*jP߆ Hb.PJ'3Oon6ڡNWlYؓ)<6bois"c"k1C ZSʱidhXF聱lʬgqev|PyP/Yeek$čVZ6`Y2'yofIEj ٕX&o5Qf?Gyb ]rr48ɓ/0%Cṯ6 htsOi`#9PWQ[dL8cgʸjFFLUDD4!"-1MdSLwo45yu F"%fUesHR-}37h~R^9/>>O.'eW_ٲ7Z$z* c(^k sxq2©nJgx&5 ?wv/jU?|ȫLKJΰ3 1@[@5.|uI -1[Qc%$}3 @T.FAn|RӔ\rҕu>+ 5[K+5Vƚ$x:Uzty~sMǩOSԾ}/Ef qmD೮V̰"QNrU݄){~N9}}˄/eQߐi `5sH;"H KrtOn|ttO}_J=LA}oI>Wў0n0%!# &^X2USifH RĉAیџ9h FdƎdE LMhsg~&;^ٴY\¹;315q1E*IG̔CH+r,E}e >&Rͱ YTH* w;10}ÃV5@MܡYz) F3G;a$M0-?jƏ1X6t4dP#!e4#3Ҡ7#9V7@>:u"Fb&a=T;C'C[Dajaa2;eMֱͧ U-*e G)hdpJ$88*o|PlAd$)dL1>ɥsM|2ݝ'^Ȗb]1WR00480R?U7AϦf`q~?ϲDYFK-p9(LK+ wu&vv1Qf78;Mr6~iA ,,U+ S1 2Ui4i 1~pL$'J& BW2`{bW1{l.*p77ݣ2qw pF5iI x2*zxP=jxJ/\Zdz#rN,?~r:J oVav&L9;oT.; 4;0I'x!琒D/Go| S!H'T$Fn@Iq${=)+(~DhzU=a=NbCuɝ')bQR^.tՉF#ԛI YsP_߈ZIWI*@8P N$8 Cd}zwڪT**T*aa2NKcjS cՕQqoYْ| #JA͹L@nMĻPϰU%.K3c:B2#=D,5z-UԳ[gЈ?9uj;}Eyh vmwdw=cg{(W%vw'<~nC |YX)Ydy"v6a1 -ڬ˨o6HLC7VVV:#&|X:Mg. ݻe$għ @d#: _԰pU* -JeF?-/s,]:pȠ!QF@^JF:d s9n ʼۃ8 7^ Z~7no"pHmqæŸcZ9( 蟟)`lLE{/O xjNx@ŹdI'6Cی/"щc8*|݅o/~ߩ;4@h(R>@v_B}͉dЈ'RJHv+'ޖW{Rgy{oM]"vP8O=RA+ԛ( qkHϸt TIo-Ц~vTj2i'<Snf?f+Y߹Ģa k?]'C-H+a,L ޢ{A9 XpUMWNZjgx=ims[ {Ma-x?:ayqÇٽv܆'?aqI릣mJ=i> .5EEk'"oV$7P^|mįv #$a\b/ҡn&j9#wDI\QԩwaxG=#R;9_^s>_*ڠԨ_^.Jh; *VRzph/t댡?q;hӕbnmKI[_1k@#FnlQײ4CwsUV:|8խ|uGj oJez3}Mlss5LR7^(v?p%t98l7gz,+]ĥ Y$Ţ5kL-džOѱ/roټ~Uv\W;0EK׸ ;l2Z@s_kȏ _^w.}bSx&'j4dB7lF'd"C+7$Tq2vgL@60>nPk"qVδUϽT 9 wWΟ=HgC׀vh3wDHA* doYguF wR8)t3I̐YE#M]9m ᰃxsb0 GCGsd/u @8D p8x gh-7UxРw.YjA{e\ʃp1s+{ʳ;1mƃNZ*-8 F/n6ttnZyD+Kբ7W3=R[ Du6+*"#:x9nkf+|qm}ŋYkxͲ5Jl"'Qǣk:ڢӱof-dk2kɒ%#L A`rZ49?Շz^flNbbpۻqޭ\j7IV$ZJ$ HEDpmB`/3 =3+>_AMeOf)N#Hg}tdJ@{M06:~-h .Vs?1vwVaϐM ^P߈sar=ܤeH6Y@IcLVdiP[]P NCV$q hsTCY"-/2x+ !modh#FIL#Xhv"`8XFY2䟃](Mg B]M}}V0Hf^&ۘYG=y)0P™9GFY4g3Nn?E6%vatIrQy%dtjV(Qv#KI9c-9{|NvvFfVfւ)0{3N{ȓf6%nINZ\E󘼧GCK͇pԶ784EAFiҶ ݦiAON$9xM[qlss&0}y?Jߝ!k۶`6yA=ql|r`m_}+j 6U^O_R2'9~*U __{7Vt>Kd*',b u8d:l!3قԙ[Gg׀K\eDwxnQ% {l߿߀M7b{R99HSwx-" 9Vh#ZMjhV#+VKkVKy42pxՇ\E¾M yG*-A t6v05pU3Q@4ⵆv:5~N0̕ɓ_>SRre_KT;Ч؇h6>=۩Ͻ^^n5]8+L+#;\Orj7iUsь9tY+9qgT_̦ckE/t v'̜ڴ&ݛau] v6:;/ΌEk|;-cp)K(4r"npk!fRFreD"S2tOjZNB0H6H= E8ZU MCbƺKYMX-4UP([Edku.t]XjxMh塱{CO)MHD_#>v(^"˝c[5er}gw<ǒ[?΂cQ~:d xwTVN?EScVDW!2Rz1zl.7H^L9&>D=i]zt $9kaa^Uzi=Z)re+~xp5,$m73)kWq3(rYY畦zrHͿ# efX\?PKi$vCg, ynj'E+M "\eʩeO`cTW˰Y e= ZPsx Uq߯#6rV0_!]8StF1;?gW^ӈX ek5Ֆ0qKeӼJ⦳Hʜ3r+*ҾI\+QS)xʕcrrޱcV. aDB(땱MT{чd?yuIYjʟ=\GR](7S2xFv￰q!P=+AR15?7ux0V~F4B]gx#E?\s+h%ʫj֚~yFQaٴLH`UV, ir5?W~r9*3Uo4#B-CN6SqlJV &.̼zitʆa0m+۔!Y+MqFTS8"#qDz} :46ol?U>*H|_䠒Xg@ zUJ:>/65 J+ϡ1#YAg-2F76†iFUP3\a"AsixM.ppA[Lgr,P6霗m`΅G r>֐Ee D~%,|yB5w'V5MxcfӁjtxmAL`RKM[8W`=ӋFszY jֽʑª}l,`/ʸ&wSDha8הh}<#V0'PQ~gB>h9Y(mvG-!ehm1]ۨÔjS&Bm+r pN-7ZSH@!y5)S)=Gˆ՛_ \*k0Y-mZsDtԐrV+PJM^,@zu}8O#[-j@FA+Rh:9gחP]mxDhU/mS>F @UR7tWAF g-۶ scdTmbb<.>Th}%Wa|9tͰ ) 7ukko%%ϝc|6ͨ[ )aeZ 3WH?ͬGmע >o!<:68u8Í)%)]2]֤{#;m۶3cV;D)7m~cBe@;3d5iz 0 3l4?x(}w J㏿F} 9<#dM%;)D0P8j@mc)m۶2dBnlV֦ \Aj魟\hUo'g`^]+OMJ܁8|% Z oko>7ެ>㇐u4=q;uI|yOy1{=FҚ3SB :yV|Je6{M#=,ָL /(R2z9L^Np~:џ ѸTIEsdr٢'G?schGr&%,sckf_P^T^`/5^\Ķ U3wĔ׾ަwWV-J;nKQ `(|@Onk3mng"*kR >jyf\>Hlp@yI^~ZrGpZ)$$ T-X\`b\oT~G0pFraq!8PԢzϵ{$x HH-2e=9͡{B9ȉ#tH`6N5wWֽ'[yjAFsnj[W>Y TTx.BtMߡrKrBk𣺆O{oy-L[NkܯMpP{! ?o|.L><}=V{o&LHUh ަ8g#=>{rS@9Nr#r( <0/M?n^:|>Eqlʙհ9Z'KHH\$ M"M3PKaY4T2ιQEug-7vb/]oӜߛМF^Gm.k|  K2-t9x>X19 @Ǚ xO#k5ԨM+R\Q@ ΨY1|z-N_WZ]fqL3ڃhqA|)pʇD臏F3nO(k\9<#.0i N!Ղ`෗?PR1YKTVp*O3beBc0р!#h-;uh|@= x1aH KZÍYԛY{arFHnQj4itL90';:o7Y[$ \n5`i3bQG8;Fe/=K[p'c1ƮKO w_>|OM򑣶 )ct2hMR^DX?.~P=A9ƑAHv&u.oiOz OΘv{%%QVp`6x2HPH|IYD#]ժcoV;<$;ge{D *$ V /P_P6>!z* J}A ,R'cBG\B~llcn[VV"cu[0xDn6m||nX23xdqύ|̊EKg)R{ϞV2a()i }^\o0rj. v]dZ:̎pg֦ Tݘc yg&ŨAuZf[#d#)lZ3Cn!;acGreꇨZ̫L"BVZ,=V,(?8l4X$q{%{""Qa*WxRUP%mLs'bB]&uĿCSI@qڦ  oȓZ'%:@sn[ ^hȨض`NT6lcǔb5YȬ@v,R:cth^~r~&7tuhE81U8D1a$Zt2tE0Jg?$h68T.I +߀e0;^[;)is-ʅj^X] $1lEk;IN&Id $;fYcm,i: %'ƗycXm` 6ID}boߧ ~vx ׇ9aRO`|^Sy)2@mh68>D0 8$x HyULeb|aL$醚y$uh1̉∍kgﲽh:M$c@sƺ>d`8W\ I@b$UGh5ƽiͲ_`u*2ǔoTnA)V! 9^Ht"pDvZo^=$A e^w1̆VtU> TY}X|#at[G_E-1YEM}.M..ߝ}֋n򓺹C㫉0`B4)f Hj&Sbs8 MPh8B&^UF2<_>q^zx/Qz6B}[VPC%~eR񰬼9fuhkjr)D6ɽ޿髖?vŢ]/ew%5?>ffhM/dQ|3- jMZر*_15*97:δ`x'D1&+٨Ќֆ(+DsKIFn,]~\nw*.8%A|K)gjz b ^Ȅ8eZ(K8qO7Ȉz-=́H4(E[޸VRHvzE* qxaxz*1-JܘHӅDk";1i\aB"Qlu%B :]a*5b{` S,Q~p3j1_vrd(7|t/^SyLt%V=ͮv۫~U6rx#JBݩS'k0e$PfL(snKn@{da9..!HI}${e6ߔJ@(L}׏=<6pY0wʴFx~+g`w4n`_J> ת 5' OM K1vRnrs-naӯ64cV612 Gk9+vr16)ͽba.M {}Z=d>ʿ~*|7SCs,+zqһGhq0(v.:\ft24,|&9MZI&&{R$jy)KIe^Mۍgp;9${AhӶ-ih7\7f a/.0 ‘82un'UTimN.dFc%gƒրV7.~( gIE'H%h*F 8\j[7ǝ>$71'ؾ%%kzeH"#9?!BDu~~SHO";eDIJ=YFZXzT\drJg_.Z]\Ql߽[{on@ٳhHeRMƛDym }l%edw%H6 y܊LcEƆ_ R!jeąU 2k6/"obZhwKr߁`E3%Ei@,6K=-̗R&-ķ/LoSvx@-†r+NiժNa7܆)gg%cd^/Z]S."y''C"1A4yLzHnp:;6~?N si3e8x_mI;g)[+|fg#Hq,#v`!x;]cu@@p"bSaGu0f)U~Nʯ7 / b n@ROun!@3`HBʟL =O 6I~: Sx#շ7SU¯)pvoSlz2**m2L A#5 j>ܟ4KRTE*ZJ``}h QTÉZNEJ_]([`NB6޶^OF| Gc°mVw5f;6v%Qhϩj^o9ӅQOjEvAj>ZNcI睃3zN ݱ{VL<e=wao-^ۭw'uF}|O;c*W??qⱓpвH9E9w͚/1s]Ka}[њʿT}_I .{)BPV^0"UB^eJr>D&SN:H2fcj'5'~mrj[/6$U,4J (*>|=LŦ`w}0gބЬDu hgSP {}6x}W4QPѲ:Gi=HNx^XTMFD-7H5,yp5S~iϙ37^~Uʕ?ݱc'4R 6? ^-f6̋i zޭFh*n4W'7Z[(Mx$G. ,81#m{Kt2Ϭ^hE*ߩa0 oPmh=Al&7ԋI{T.A|l0=2l::1rc-V#w̋jYݰIJcg z>KUktǺ-z. 5Yq5%\U1=ٶv}_(!d[*مd@յ-r7ql Fg!hP,0L i5y Bnۖ>K&HJ7,s Q6iͰq{ό-޻U,9Ub}!wL`s;F\R?g^;{]@GLSqաM* >w%0;C殑_'AUHIy&*w9ɉնOB7=qŽl}Y$~ [s -|r-O kfL"`7fg?*W/ό?b!` W^PҷT_W~ c^sZ=lK~}N?r4٨0q_ =T/$*~FEzRmqɅg/ϻtHA}P I.wA-N.t z_?߻O0̤FV=XIS^z_ ⋈GʹBu-T-k/?guǹiw{; wMN}o+ xh:^mثn:x!*l7 p-iPy?ɸIS{I"ΰK.bqԲڪ^|\e<Ԯf< IXISp)Gӗ|Letbaxn3C'pT'L &3c20YDJ-5 y O'* '֫#$![W!tjҟSg8}D='M⪁Ϝ\#w;榅#fC+O<#9wvv&^ Zgml`?Ev:\aJjBis&\rmQOgO G4' OeC QDy"Qn9[}Lj̣GAQѭ=’@ww`Eǣ(sl WMCxs Fxd Y'hpN=Zqʥ='G,-<*7zT'1wM\d@$6ɟĆߔcr?DW8 l.p3gp#(|gz/ 2#>NyӴMߎh<ʖM.F5pf_nz \9kWsa&w++LL"8"3_Ki9PPPPWlh%Ͽi(n( B"0ly<𺐀 IJwUUˍjw9`Zv:I*4{sx Y072vSA_||S-񼵁2´`]fլ ;dFh9WK_3I?\APגyDfi[<]B }ϝ>Zf3yur=y$kFV!v_jh5! 0{ ]o9^C/x@ɥ=c:WdA4;V4r{pǟk# qyR=sgX84׆9"!Bm/r!qsV`+u)һt ""*޻{^e1Hb&1!]M#;3~.wg9s9 .Y[rc N 7w9Yq©LBadb% 4HBD5ݥ@naWWe<9׶3 㦪̬{|gN$C ׃ s!-kjGgR帶B?Q&V/ICE[ŵĸ5;K $)Rc yҍ=O‡;ߩpW-Δ&O?j;7T,84ky=R{L&K?A#K(1^xi2#Œ2,*FcdsddNp/vѸZw'~+2JSVP*'u]ՀsR%B#= DB/L lI y:w}ֹ0 b&Y{#G6OYU8S=w<ԜҠL8;dFM՞o#{D EM8VB9{^ 1*웸+\_M$h&^MF? uF?r)8*"C5Lݽ\E.@`@pwpDHc.H6%} `iaM"X@)Dz6*Ikq @ӒQó`s -il\\V:͹FL 55έ[\r(~49wy!u2 ׈MJ wVԔ Qq|L`iebo̵Ve$PϔٱFB`W&^TG4SEʆ3ZϪY8=˶R]IjW">Bq|P 0 FdjR.vRo }d¯ CfRJJ 6NwH3O@ >! \@#39^ ' \Aҹq"-~]+Yrw8Kuv`x4+rf]% ԛt@-#yooc]!GOh՟(T')*JS6v#%Gmea>8w|!LY~hapۭ[^5}ԭ=`煾 ا8 ) v5loSg\mśqxmG7ڕR'M+#Uj\DݧR֫ΔkB\Df]7hW`&xPH 73!{8xG#sO6k?y[ '?'p:X'2j‰*, X~4bo3mE'ބ[)p^dC0z?y_b.pr:%TW+ +zRۻtP :A٩ !yU>ɫ*R]j-eWMv49h`‚qf{zvw߳LAf=&iN )%rb#Cџ0[| ,NΩ=lȝK b"c8x o@v67 @"07pFv No?MR*A{$kiװ]8jlp3;gGRB/UTHv n~.3+ðZ($w=\/aveƑF?p N dEm -~`^Flɪh|)[Jh$* sIpߤ]َyfm֖VuJyJROTMRIL>rBs#4OX" dTx߳p?Je̳0`a4^9؞̏"[2ꄬPQ{H</%i-SFq!^4x(`嘤&wi45U^Ic/"%jRq^ԩ%6/S=.Mk|iZwT:eHOӅAZ!xutGOClיU[ӑ@xKq:!ؗ`4 da+S2W-`ؼ_K _Hj:tfJ*h. d5NҦ'N)8E;Y>I Ql$9J6''V(lO B-࣡`ұ'̦\u:ꥮ>{_mfy^)F% '2:Uh+x)!D#N=uofAӵNDJG#=aVei5B* *EĹJR%:I[8ጢ!L[d$ :H?@pRz۫Gd 6 e. w֟tUؖ-6 4+YƅS]Ӡi*6 Ntt#]gb,\j3gW ^8LI&q-9aqR6GL)nnvs^BᾜZA׹J7u* vqp ?I"E> .{6ݠcܿA$6_|?'|z6^KsM.6wG0*(doe4F}PaVbk<| ^8 ݴX Qg7MīaVm_?; lDndGm IhɺRf)MB4/_/K$"\H JxZV5Ώsu9ƻ0lu=sW0a&.S!bڥƠbI3Krfi:c?4e;3KǙ>lufCg&I&:9i,M̒<ş\.:7%2_TՉP몴RPrm+⽿u+)buCMb'ho7gV}4wc_j`pC׸컲>]cpLj9ҕRO\jTtk0* N\¹N+Q틛Iu=,ǛI&2cĸEȐ z'=w^ߧcm7l޳w ?]~=1?9_Cr]@}:vbHw|6rǜw ssWBfgcFH4ȲO1O̷Jl<Tw-v^Cbs/P! ,n䫢(H/%*\Oe'PrlVygj8FI)\NَL{8id*8˜YN-`gSy]݆A–`YD(cW"~’KE !AgDRV)+e'V'l|fƅ[Wa~w@ؾ#}w%ra$I+c{`yQĵq'?wii%6Rъ*ðquV!g`)6l`WGB>ɋD!d`e)JWkLm=bmg{jyoIrw߾ KOB5bUO3woCzpNjʠ9` Pp"T(Ue2 p̣B&]+Xolb[$!NoԷ |-NLmK5t~A[# +~VBy`BvLi]0$[]R8UZm\%*_hpE+b7&D]o:Po5h p3f֫xËdi}qsu$k6u=A3g.6}I3b}ږ-)[I5/>t쬙e =|'ݳU߷쉎z7' k@? {AЭ舌F%UJ#u=y|Ųm6"k:XtH6<$%bEorLQFQIW--+~t 6FqIh84[2C26<MX5]]_P{7\ܵ $t`lߺEmajIptelaDf8||Z b(OjY3h)A)ur EKJ xҚZ$^J휩tQSGSNJG>Mi"\ :w]pT;)$( ' xN t\+h-}p5ZSU<@k!'޺,de#Zү5 ,:wvF`෬<|&P,4\ C4\\*ê>d8ob SBXfbWuԗCӦm~%:O`M]Մ`ow{ x+Mf4+\c L?ި%S Zx8+bئ{!IH'.I8 mY>L37xWR+ YUQlԍs$ۑwJܘ9@#y%ӑ : vL+ pbԩiO hYXև4",&u}ɗ w (vOnÌI}nIj*l/"5낶DƁ885_wf*|382ւz,Kt#yMoDܜѪˋS9ba>2G8G}s}E=~8ۙLV^fd~sY['9Cj}pIZ|y5PIh?&HӺ2BXy.9u}<{XP|xfR¡ p{{w OoO`\ qUL ~v6t>Sa:|a*#ּy ]RaFL8%:m6/|HGa7C7nZab]$)Ǫ[.'Enƭ !DnsK ZُM-f|~x}.^^*yԏS,c\e.lC#C_J lx6uzBԫ4w.ggZ[}^?8UOC~D *X֤T9Ց&">B#D%ΫW/'(<{逋Ȝ\CIgy^:L!WtjbtK'Ey'X!(g?w`gGf6#}& F`0o֝o4 9+܍U4_䆄ĩݖRA_ =mw} Bq$m &5)f9erqTfz&+Ë&mjk*d TtSY QVO IHQ3ώ޸|ob_`{7`]vR]Ob=6o2GaI=S_P*;PI-*'1fwJ_'n v|mŶ߻wz;ͭ͞=jpWMbCk-0`nnanx#>^p|wc,;;,~ޜ%UqFrUB#A8BpOvirxN.>Fyyxi4[SCA )!B)Q5O6@Ѡ+VwpsݖuB9^j7o[aϵyqok-W(fG >4ȿeAnSA~pAg9ϛ "QK_ L=x~ՔAR nj7zۥ6?s͏|͏)Ȯl;TG+[f3:Ϸ\HI.]/I#)yjy#O<s+u-0A/8)Ѝn.8DN q gLq[L\|:<^1V u\{]WV`͝: @V̝8H~>_ynHY%[Fj H0Ǣɼ=ܢln@z(ߋok(%^tȭ#,q6,FJ3F+ wWObEN>UOJW飛CEP0&6[LYzP,37p3gi”],{@!aQp[T8տ<٧K_Il## cJ$"knZ!2o<_\\ .eL3k;ݟ2M)7ދYH½bO :V]rLؚz6e͓*nuuo퇋^viӧ63Q1F؎jA׾8rٱ|ըىq!}Ӧ{&W5.0c9WϻV>)'?/]p^v-aξctA0hDu@Y!c\˕2gkX=`TAAOʸP6>T۪6O}dTiQ0PVi4CvTb\?Jk[68Rn`o`p5 9zrTOT+2:{[Ȼ !NZj 't`-~R<4ٳ>\R>gM@zcXR"ep3Vh4U%|SDX-Rru%m40Ղ H}AA jxKG7ref 51-FSX^Z>Zq5?VqKP Iҋ/I+k1`wbf5 \ ϣg|5]h\";Ğ-8K#OWGL-g%gHN}'{ լu6IT?I"U # RI/.:4F#bF q kBZ@HBT<dF}6d ]a*@,'`4_l훷i[atrk E/1<ϳ͞ K2gB` \.98TtրKAbN(:2pp5͛B  wXs3D*Ed*9焳TG'lɤsLuBlU|rޱDr}$ވ4\@O)dA9]GLx¼gt0>:ʕb%'G(0.bF{Ffx`݂H(trN2] ZO@IquU v{WȏLVxߴmυq\]2U%CS_HymY|Eb.$ۯ \ _zu# j, ӂ2\Z`P'Ʀ_@dE1 l\i I"G :!^CFчX3)j:+sHgA;Իs^kϴSYg񩌾1:[@LzP8FxWeZ:}@ll[s^yM#ՙ⧿T·]Kw3K<&_ncVtB» *TrtDG\j6;q)m|:B- (#aʔ//Z5(2xUAp! #+$ozy:xE#tŷL0j鐥.`vSTNMWG^b.7cMw:D+gZ=rRbxidv|h 2bxxLߠ1 O\I4H Υ֓縐Ax !/1$70H͜T(LdnBݼy.\;.">A;!9*<ъ4TI멪{b`,sxdVzZ3aLu/_I)]S=뇿o~;y=kj R*|GD%x4%=R0Ka_hVoj^.!`e ٞa% d`/ ip-V]8vҥߪ68p [/4.ـ.ßZ-~~2PF {{U ~BaPB rl0޴vő8Z9qSy@(}ǑCw]{.JUHqeŠ4U{U= RF2 Ka=UfLqa>$:=;CL7jJ|_{fϟU GUfӅH"*(s]PJDEY \Y^k`uNG>J*Ǵ2J\Ҿ $=Pf),um@|o/=>PќnټNꝤJs%UҾH4wRbzRsRGҠ%Gt+XyB :,1-o.N~UM;%ܗ*: Ú%4>} ):26yx<qZT"qRJ@ ^|^Iˮ\a]*5J"m$PD]]$ѩO ];h=V3;rF\stHt/?pզK4NUytH#+n#qVPǔ vnM8ΆRbֈi;FIxpk=h:}< 4@:yess39^,L|)\w~%Eʎ)[OpsAGRQ:*H$RkT4­Ѭ11pR&SOmg ^TtoչXDclE*b |:ᜌЊ#o`tm}y(0>)m5 N$fYY༙C`Ù%;v/=^t@jgv}\Yy9^D;:XBzLƗDJ`.G` W ~C`4=Ԟl@7"4:[ܲF 5];_%lS쭡YVs9C׵v;"Q>U:tik@<#$"̂= qgn Ev=:ΠΈVXb4YcIAPVhP{nܾYM{ p$w6R pA5Q畋SU:86uR0.̠;D] q! >~~՘y9_+2}ݷJE⅚/>h!4R< xRȊ@Uj_rdCԻgpέƝj=fn5IJy_UG+4Ɵz7cxžx`k8IYp4.NlQzRFR>W QB&E 1G "]BEx)EIr]aG26iշOӵܝ[ 3hUC/;7w&3ÑԻmm7{.vv|Z|P?Q4A5 .P!u,kb߹]+%wĬߘ.SOl4IA3t@|<܌7z_2xMކ~:ЀlVaqhQYr:P:J2BwLQU(ND`qC#(Uֿڳs P==ANiSgQ']JS.=KFF I*J窔b]piO4oBzf.O^)~|8m9P(0&*>Oק?*mDz oge N^J7N;E,VhAH횐zv&bԩp~~2$KLH[ FX%^@khYMnQ7v'e+nfO!=(mG7t‚}3oCqb07ԭ[]>[ᗋfNi|&J6fIC>5@O!gYU;PY]iƢ{I% w428]!+^/IHoIO;:52bwGtTؐS&i7P5^ ۰}yz:BKӴٳޛhm'{xS +0idUڨ"YAZ_wp&YXBp^p+~I#}B !V=*zg{7N1r˻tYOc0˺:yZZz@PJ5z%%Yah.O&Ei"UB'=r :7K"W'ŮH̋hJĦ1MF3w9; y̔Yic>$&m6GE99~2={-2wtS9e g|.N7;I< G#+$4%RJ_\]1"$^cwGzJL_MpF6lc"=K(&ׄ*=ÄUi"Ij+uVQ ,UanaeX)k/'{ܱbl[H &Va hZܳZa,*Tk ^rUCK6wB׾?3(|Ly1A`B|D?[.餔^elʯV_@LT'jYGgv,:^BE Fb$y;*C5 =bb|-줯4׻aenx@fS+ZC+^j= !#~%W^TYͪ< ^:\e Mk{*\4N5%2|{wL~V=! 24}{#JCXOZRB0i̋\i, ,qwd@9짮_$H0vQ8~K bN'&8)+Şq7?r-ݹs-X `m{oSM3p67Ƅ1!?BL1 ż_AJǫ\F=/jw װ7a @jVXoo)wᥧ*[^[9@|w6}ցӚ™I@2IY mT&l5|VNk(R7YG_*ԅ IR':I@{S,i;c 3>ݳ}]Z#G} $;mBzH㏇E~ ngW߻!9!㸐\|~b^qp?M~%)X"&ũA0=|gXx=8)jp׍)~m>*R+'$xhL:aMǙ_?޼"1#䲡Yo^& ='!4xΆ`[bD(~wĕ&rQƻBjDHsAJL9lZ~Y ݸۦ~ms; g[,L`<[!/[TIMHti`VMSmżZV9: -V) &7o%d@r,4iT.|*x8g )8dud#G"#eu""Dt5!_OjX7g{:Ҫ5Uj*HR}xStCjjI- _JWGC(=7$B o {G%=S͖Y,„bPpp-W7IUl7̬q{XSgn \SQ8$|_:YmhC\h N"]u5[8ҳRMT9"mO<@% ØsnAB o ΁ߞiB{%\jE<=48>{vn\=|aǬz(= .筻ᇰ 70%<,VfX =cVہKA7~?b4|CakH6 N3q\"pu A-~݇O-Cc: + |;:gVBz42 /CsM21<|>v~ڎ=ft)۸{x;aF_T ;d-Kv-Yz$"r*P]a96Sjy _'xW'l'0? Zx"c MVGLmu_NLI= ϣ}7s!CMyƾA?$L7;O!0`nlKn[>~4Չ)8&X:29q\0yd<>;Lde &ȯkb?5ˮn?{f:tc>NE{B72-P/Nj1#,;aD3W۔AztXBϱ.kgr_ȧhM/Xg#q r~6ɱFIpLÙ[JKzY|3r۷n[^Kg:褄IGgRk//v@$~Kg0Jn(I,nsb"c*ɤ^p v:_dؑ fwf쾟uvC >6:sw?2Fv i4 xg~Ïr#au_tdpe="B5@&1MBȃv9z;\EdtK@~Χ)Ȋ@=bARb@3yZ]Ge(: $| `ܾFNfmJFaYӃ\_i-F"$>㶰BBsa!!#5X&; Ze913zľ/Dƀ +'%Ogaei`1wAACNYש=Cb_=R_۽.#rhܺ1GNiucĶQsgH8z'?,Q8#я1W}\Ff;H?\Pt?91פݣyHn<C2.dbz/k ',qB _*6ϻovcW)BG>_FĮ& MH ~7`81αE `&ڱf=v<>vx)w uv=G>xvo~Qg -mɉ͟xщNfN:ohŨĄEFMuQg `b:ДN!3H5A$0OO {kn3 I} D&0f$zDk?{ =n4M:_{]#cop_-$T@xo)gs~;u]r7v/qV27$z!vvflrhbwӃ7t|q2=.[-l˺~pgR7 W䮼}wAֽQ -צ|s }+:s (9`9uH~;3qXڪ ̨Ko{ɥ.8\urEAXʒ ` BW^.<^p'?MWX84A"|ė3&v^ʦ=R;<@LޗcF4n(фvsjB:<'eJŬwiKÏV~K;ldxD=5橻E]n_C~ֶߐjac}jl|d2 hK(aQ:Evxx~uƩvA;=DBs8sO9eGQ\pMXpz;OފɉVhZkv ʝ}އ*uӵ}'OdFSi7=4)kB[KNK]r?66!]r;bU=^=v J($k$^P"CQ/{_% lн?ulF>0iC9l..2ak뚭mb;cĕf#dMoEzHob2Q I8BMGɣ+nYYPPe9fa~ NXvʎ>P~oo}aOZyq+-Y;DUDT&`'d[G~Mnk?X?0h;kGxΝ'h;\}黋zЅ*ʰĤa/ˌ&6?pG_  3`Ԃc}@Z)ct{y<ՖNeӒW<`UZJ#v6j x`LX7:ĵ-&8جZ|Ö$k%D;EV`{|əGBؽ}yٳZEO,-֬CX>)]gH-ʎq2Be/^zv?4=ť> M7b^fdA̱u~m[AO+S{11 *E M[Y$hT"& S>؞)rfngͨuua'LbQj˶d,*NN*Jᇞ!nP޽;#ON -\7:{:8g]*.-Vkj]T h Eh 0൮{#{f K󿽱(Ӽy ry;bH̵S*G0e w}t흃pJ;}ќfuaqU }M^D_ʾFxrUq`3ӂxh0| BFX5^W6I+܉9uuڎFw|>u : -vh]Xt4;ymCJ>LbZy_wd:/}ϷtNsW!g _svPN_PesֿwξevߊI;Nc;:G.{P f"Ɨ]4tkG_1hH*SH\5zLZHeb 'A}.#FؙaR==XrOT{lCO9sQOaZ@GuN#;''kr}bS*?zdDck+7sBJw ZVfMT4s~¬bg"q|/ɥi-li#5h $HKh`:d $iMK+Ik_eԒ0f -كgn+M`|>i}J%gU67g/xN,ۉ};NUx fd{ uy.pɮ^G Lq8O 0ѕ .{0L7q#Ą|?;[LN߇>@t*ei:=Am ka"O=s^`>3];r|e$xA,+F4p\l:x,X$5ϴ.v k`4KYVj% KRH.J茀vc̜h+rt6wvs&?0!bCICQ-67Kd@pi0bg8WOIoÀ$)o؄C3~b#B'#Jd 5b@ר6\Gu'#GD`NtϘ!}Ò99ڶR߰( MMDk_gN{9 BM)ZhE|x:aұ4,C;wM<9/wJM]2>+$w,AW.Xͳ#"/}lx)gr`={{ WNf>NG_(:^1I5&ln~Q4Zos]/hLp}r!ɂcw4^Jhoz> xpƒ EwO 5,ێ:K،;oEEnQ؉Y|W̩p U-\C4*Oi@UjFSP(F8'4' qa< O`'S` e.TYTH]XjaF2BBS*('y`F=?ۺlH>qcV :͡:B_*'67 f@soU[@yN\p k߂:D 3AuB,cr ^C#iJ?Q^#gNJ6MnnRHl p A_I"h 0F[ჭ`B|>t+|)pv[ ;%S/S $a?]V2 _m% \n+#=y`Ћk џtGj vՁg(VΩɨӔLI+#?[2{")gAi u+=o+ٻȿi LH8Y#k"v,yah*{P#G1oТ͜sd}j.k@4R4YUCCLhҩ\3(<X"wݫ«4>zy5R=WMd4ŒKkPIbdy2 `ϳŷlBO\HvϹpJau'=Ur\'K'vz{,o6mY>VC[/A_vB|y//?{&%{IپR k]zTBj]$$z(}:抚ƼyjƴgB W{R.Z/+LAs#2sdb$>Kq Ez[x?SӢ >^d$vt>,ޱz'vIe]zUli9>MG]U5$tQ;v7 ;U+իU'uMMV\ŐX׌ w99mީY^G_}h*~=OFMe^j{Vшt.sO:-,XpvG2'hNfz'`C[)*(켼8䐸 ?M^W>Ds)~Pm;JiF 9'%L(c' "YVLz%Xkm-ױ>qRkB֚ͧNc崝Y*4{WTV+ilj|~`Es<w+u[?8v.xgv~s\6bld℩N`y|0Ct'}upR/tp{Rջlg2LXE-j7PE rDҋ@O|.9NdޤZ T*;{+Zӓ*yFt Q{n+ I5=vsm5-Ewuv|qPC*W)Z;]7YH-?])犬0 ¥J[U4`tv|DC'Rԃ j2 )n4>`Q|''fdOǘ[N$᜗DuOm/^.'Y"8ꝫbsfČLSc(<òG@={qg87H{$%R Ri)-$;V.U,.6 67jN@b0,\ &Z]s st:'XLR.TEELV=5[a ߬}{V zԒ:}مU`MõMسd*Q5 paW#VW0T;ThƎfkJԾ0Uɩz*^HZYk Ej>-Kracc jѽ{d{̞;&?&J1.)b{zfHڞw.Q9]g7T]]@{2-?˴9XO!.l"_!d 6|ֶr|6>M5*9D4V{B=# c.| ۗy֟%Ԥ2PREzVꢔʲO^䂩u'$Li}.h![^I 'Vڱ`EUFpP/yn8V#ouکO9zHy7+YNU[N8luVrlJ%)\'y[3T63*9M+o%|=t*SxŭsuynAGpˏ/( F6[ ߂yP h?h iz㇯#"FwqO>=aSTZwT8Kg憄=Ŀ̿Lg1pW]pCKpt \ҁ&!3 p_i-iOIkwpӎۖ-t~a_u9wtlW"8D_Oj|!I=aR\y|RKHD9UkS];0TS;H :Jd Ԉ=<sMFMǨ`MLrX82~j XJ=#ܵgTPZ`}1n25>0 ֫.3Q5;.9礤V)rr) j4P!"rE`R) *I=u$YHG .eXXs[e8VjՔQv'st72aiKZ1+8P1u^< z-|kn_=2Jw9&;t}Bh@mE̜ҮR@"ylUYkTΔ349|>WRyT15Bژ{RW6xN[bxo-Վbg3YO&S_:uN+WkOl4r'u,ӦKhش|RY5&79["u_Ӹz8dۦqóu1eGqh2'e QGxKH1>sՕ<]t}uaR3Rw/& jxqwXf~&*g r:크ykUuzn3@ GV(/:K v<<9yzv u.Zq|1 >·wT띧JǭﴪqbU0K\8y)#xOơ?b%F¡܉\W_%ȷR=P8I0n@r릺p)2g t{~z?OX/fڎO]Ŏm~2;,+ 0-pB}QcAyZi]g; ¨|B }Ib7GPAI+()k9Ü߾]>IyQ=CdtM4lֶPJBȽL:?/zpX9?8i'TNE9aO_iO`I<r:1vI:,M VSkjlkj-!DqV׶z~0ʿGrOŀ8քeem ΞSHx7l!%_Š;Twz&.'&. ќȕ8~*` ÷{z&ssj4 m$@p]&aB|`3G'_=&L IHGhz[dly^]Pe!4.0By^|#!:?e}S;eOnH%#w"ڼJg|)JIժXjt>L,׮HiӾo=tFu̝ZKϘb]ԼBw!d)%]ĆGϗ۟7J̞%/t|>T˼=_M0;S"W^$^ij%#Gĭ#}ɮ0)zSz3f~sWٟ{ aJBq||:?=ZqmZ#W .+𓏾^R^ʑf3w>i~i뗀bd%RÞl`nY !9YkPIy)}೨Qsz٦A{)Td Cs1\@c DZ,4W Xi >o۟mpe}],W9x9"1Cx,J'@c =IqpbpP4Hy\,P &d^7{x6]2t3*%@e0ODEk284Яk*u"ΌN. ϚwnAu*`)e0~Bboد^4yQ3xaRCqn`U7}ᑍoTWG[:h*M'&:UfxU_]DܴdJ5c6P߈T ;k&ֈh$&op#dyt;.E0[2:zφ, c18Gq.qP3=͆zZm)o,I@Y/ف #.aȨнhOyjR'yɝE=:Əpdy[<+ᾇd~.U*Y,򹚑XS,𱄎^l>i>(a< s q0EӇ]i|hlĕ-6!]$ = H-(YٹOΑ)=ivLlFOUgr΢5>FF%w)({zUA]`NY{y})>bp+xsG{y&pa5a5=-%sv-t͛poرϷNeUM[OԠBjE ~V |$:x@Xxdn}\;z AZ24sMi+P+:wh @ӱҤ-2L1FrkdC_y#ql{) >FAE_;l~mYqÁYDDDq[n7ul:D Aˑ$CN_ +P<Ɉp~;?D>mZ~$}f֐GC #,t_rQqKn&:F%b-,C 7 K КOv~vsKaթe9 K&K[Xv_S;77)^eq Ꙟ4PVw  S+܍y ݼ]Rmv,ͨ ;ÊjSDkȞgB6!PW#c9\%:{»6Dml˷Aڹƹ" kkۃiE6>ː5$IuuLMv)Tb1_Da!Ъ43gaO$AdHE+g .-@WD ઉM%8}Ho[ },j\SB}[p iE̜:!<[!u'P(LZؼ4_@ C| N'nd)R-I0 [,D6*cJVP066]F)"vuʈ0dAr?{uOK:ārGsvw{ &/fKo-0w0`=f @O <|ÿy4w3'4SXrT ;%w5.q^_*ZRbߢTn#uy *CWg"L$Z\eX!SB4CbGw %; 8wy%/O@PȏpB 5F46τ߹"9Ra4i&Nuk2jF0[v93"a> %&pp=S3/WZ# $fة8.n;]?oLjи/BAe>.d+!)_ũ&ˮW㣘߄)lSKC{tD-^qJrr9 6H ,ӡ]Y1yĸ9Iz2wDlJav7O ïL~m~13.@|U`PNr"*X—'i1{lPڅe{xkya10}Lrv_9xޞa pG{G3CJњh[CL@+} tӇk^F m4>HEH͆1 1FuɾWvtL+'hcx ^=P@" [^Ĺ a I3D4Zˀ pgh.H*@OJGvz7X1CU\$^epT][֡xO%%](v+뎸 :Vðmc4 Kҫ.m%UE{n1)*.9Дe9;Z0r@N;<OB8 Gw.<bah`ot^ԽUeX:ȨNIG탆CV,䟒8(C^'b3m!AlRe2B%|`FafFć_ns_-m}xʨ`c߅}G P&=:yarr; (ؒ[8a xkv?B&>$ 789=@\.@2j.Kss{FTǚ3CaU ,40j<{xɽK{Sap`Kb-7!6mb9y3Ooh b6*9u{x0 Dl$Ý`ԪdjGl^3J<^#A\XϗJm} {r/ 8Vn 6ϯ*;#8“B*k3U9vGP!m!i/~<% $2N1+P$V@E9bM׹h bP/^K?rqriJBo^\C X8son?T:Z9ցp3Nʥ l%A#hXtvc9%asD΋5|ye;x~"<iu$GǗ;N6 ;_eE^kUZ?AoWx~MnJ㉼^D׃ sw^s+XT|>3^;a8~x~}c]b]BЯ6Oeͷ!3b?MhKEEݻ\_j +p,c Knk\6n@WKẏ.ȹ-rYA/p^#J.DA5zbOՑ#aj9'p]AUXczqdQ5p@AaK`ldaʨg94!vFP۸>m9 W_}hAo|q8MRItyDϨ%.0-=&3)bԚ&/ON8aa|k; 麽+DsE4/'kp[Ws OOn^2cy{;V|+UQU5j"F(!kQE޽g 2ÿ(rN!(B kjcu2YƦ HR$v16(7h7-hx!f={x݇5;eI >g`fK'NA5pUnTF?=c(MQv(ObX2heOan0F^pye˦f`ߘ\TKƆ nxD􉏈H`:s٢^st|_EfUĉU6*E){M䝨Jg*6SR4J'D!оFvFbqg,_س">S,^ =V^fs?XÛSv[AJf-h~24kh `FBxOC34͔qONҠk`-EB y 'H!hgF{ *W;W4ɵrC%nDb6_אތp0/>`vBֻ Yq`a"m9 o<9D5FF~Px-d 8 _դ~Y$#IJ\.+4Ru RScH-E& Z[Eź>.HKUza,5uf%P;U2+ʴ.ѩOq55UR&Aܐ”ut5ƔmELuLF,E2cX[Ī %f,U)mg\<Sig 8 2mj3A_FWpdܾf fMP6DIA- bV:!=%gX44S1@V!!`mi}8"5kaʠ"Y+ rrevf=}Ȅhnggr/Jʃt+͠X"|Do# 8UD{{DuXѱ;+J!| l[ t1 ֗vYa5kW jȫٛ\ ۊ_2m"45m/85k2#f 7 :97 xøZ-8AV,Bj] ?ǖPAh0$.k"fxUl=r*xr>&+h22<QĒR⦣5*N7ذ d"nx skjSQT%t$Z^{$sAĉ9 s)67ފ *J3!^݁;+P0AuEg* 53|K/IZ~Z>߱2|`yk BaN|ez³>6?Ͷ/[q^\  ibIӠ.oBddKI CDIGgꬴ^kVe:͗z_ _S:ӓy?&<OIR:644[& SI5,=Ʀ58:#AKlJ {R/sA( B@BIA,1-YYP7; #;;TR쳪SbjI8,̲H~ Ϛl ەύ8PD!qksscl?|nX8|!Fhz6);%-K͗~`=Os340f[V? fW$2L!=&k$A;DC>|Lu;a9]ܷ0R@7`gCñ8LQB*\.aѮb=m8m^u-Jך:{j,!HFi%O@3L qGJNJԷ>,\&Qx ZsA4^q`Qy3ns>f7*ų:#qKpN 6ibB&#|&;pX=3fO_kqٯ#FN9}]7+L-4/l8O9{ph{b#bF oiؾyӱ]GSvQQ.@ՙ/]V8ZRfy7eRkp@J5T!eJiyH}9@Wb>FW3'qEB<qIo;/?ApG"_[-_H֋ܼ&K?iΤT#yqC4e6;3hBpNcʊAoRQZn\)dTX_xj|ZXCZ# *2ʁbX7L>A~GZ>Ga{!p=MW^GaSYcKq??l|rrlnb|I 8kT 0>rF|ȩ©kCu&?0&s 4GalIzeHCX{>K\ݎ"FA4jUE{+rf=ݱSws)Qkoòftgz#8=hvj's5P8hJVwO]9cwr)]]B&FO@ExLBF8 T''N8;]}b |؉3;194em=;kNFd#~'#mN$BXJ&(+ d l2+|˕0*Ћw ޕR)K:lQ#P]r 2&O,`<4{ۖ ovcGW^JccIE`x`0"!YY"]q`5o50~~^ '"F+O>M:vVO7iڙ2WR(wHUȸ63Yz."9uOcFr'իkHZоy??b#{̻rauKYRv?kjvVi4~2O׀R~|hHo}sEkxYKIv1MNп ^bxe@wYC aJDmAڹ`)c.|z+0(z:© sd4nRpW r+X -6Z"([t!",f u-ھpD*r "];12,w7~w$͹"ZCħ۶vKBt#Ox)jf7uQ(o_CbtehV}Zq }]˃D)݋bb ϱhZ7mX Ξ 2c,7ݿmkWi8I@[1kGU:V~(7G;xH 2')UY&"їp'egɭ\^#]c•M=@FcHf5wJԫ]v*#T&0lN-s~R Sof׏ FI>Sی*N1i?+4v>LGr{JFr k|TOv́EGb~g O&zQW?'|r%%~|mLغL"!Xöe l?_ c ;v83~Ӎ-fl`ܙ%-Vsj{q`@R<.DHJ :9Ƌй[JG ߿v^w?hri;cz՝tW98s2o%`ǚ"JN)d07ڛ :UMS8 A&SizM9ͯ B̊BGa1l ^MDk"?F*|v~p;bMG~rn ŏ p :t}jk+yc4+?I8T:GBi_V(tjޟ Gh>kWTnxVp;OMEk+GkӑlGaMeaLj: wJk 8  a5O5#q%^*E~0%ޝ-Wqǰ׌"E*_Hbf {3q@#O@K߳^o&':OR}Omm`0XjbFPIfF) 0*q ذ2N^&˽5V/rF?L[g! C!X\zk}b=:<#l=mȩ*KZ {KHX&fͻAO] Zj :6Bpj ׬v"8isy; 5ali I$ Do$$YxatA  =$PDg`OWw | @V“}S MJ ڕ{a^{$jo5RZCλ!3wUJ &Wp$HXr5y@X|`|N~k#~gu~ 4g;h2nZ|FКj@|4P6By*pF0 6AVzk69M>`T|pt|Hn'7" ZA4XߙhQqv}~?kBxvSNn &r u @fh8ObEW^hwG|I@ëH?zB`Λ~ӄl>A@n hF{g?,8-Gmb, )`AOC6+~Tg/Nj京PѠ&'f5ׄbN1)r ͡8Ob"$x߆cx-Y(alz?SZG3H- d. $;,AP wrh61x*q3iMdVCaO)5<*.w7, Ñ88HU7'GF mm68{ر[z~xJw:v^/GCwvԅvY6n7$:O  Ib`@>8@1"%ē=73iZFRV]T G~bw?XCحSЎ6CP!ĞcmJ}v34J[/qpQ̝&ZBOZ *6=5. 8q.^@v87 d{#X?*{ =nC&#c^v Q &S{DDKb*W%l5<1G_)΃cm^mupIJJ"5U֝xn~*;?7Mc%c(5[KixZᬑE7k$|* dѩ "d$_C H0< \\U!F'qV# NsN+Q.3D: +em\lUmk=ݬn V80$ 4( bX`tD_/A7  '/ٳQWӝ2+мW4=!qւ s¹nzFB[<|b ..!Պb|c'K:v |zdA e7iZ|Ag|9l[o4 bYkhgLfWN ,w-R.\<4,*FM.4jHƘp'[_^\th[gLtT1 o[A'x_p< ا@o&z >u(LG͂}_G)l60u7b+g x]rsvs>c+f^"n?mVEO]>~v|qCOs{ h<(_J*Hsoй(,IqMia'MLp]uS]}06;oEWga`<098dvf+6;G07yHnu5|:|O&F[F @dpUm \@ :8/nAʇ~a ]r8cK 07l":@''F7(`>nze, :| <|πwLoseߓ+.z'} a0Nɝ٭ Ibs!J 1]emN6hnR ZsDw98-fɹp+߯=9*n`ΝO/Z܄?:'&ϔߒ(:ǎ Q6 g3GS8v ɦ.$7_6*yT0RZϫX, r21U58+>PGN◘`AX8ُ2C-س 8;?ӡ ^,ٳC֒T;.ѪPm?)o4Gz]Fcuiܳ,z{f1nFG8%Y-LcT xe\IrȬްZƕƆ}o~ H| 'heDm\L!Ā8|t>xg1 $,tk/NOO%x73db gi9e&$TwޝeqoܸciGθ YЄ"^~H=AIA={NJOLļl e;Zyeug^WÛGG]x&)Q-Ix:E7k*N-M0˻֬@]v'x9YƏFN١_ `2>)f^"rm[h6HDŕ] #x(] k $D{`^ xRV;G'š <xv~AA.nj*2%̞ WԲM EG>%M7yݘQ)nɎLI/)xfL__Fʀ+cA٬o` Z׀]cc0ci' ?~A)VbJgI6/Ƴ8kp&sI!| |YcrĺƷ荊~-03S!`z9]lJ"K%P)ٝ܋/L[#S,:R➥-+pܕ>%ڤb@nKh4s|Y P?%pZna;:{EǁTQfÎ lX5V슽`CMbAXc5{w1o̾}̽797EL} ^_@nǰ20FO QCebN&oN'H<߈3O<i9}={b#E^X9<t?~:y7 7Zѯ| BG"}p97#Oo!6'WЌg7z@ l4~E_d*i#Y1ڄ$Dt/?8~2mCߍA[38a0?Зn&9B@0{Z7<=Nkנ>a^NS;qÉXeWpqupTuЫ +zkعnG;֝69 Avh b~ ̑} \諔@G}rG y1O;^Gbt?e N4Eg: xUlD3z FQ9ꈧ 2VxV?^sh'0 悮؃ОE0uL&p]~zSܮ]w]Uݹ/A tAn`n% Ϟmarln`՟{3B,My?zch%w_эf}wЎlۺyox/ܼe[U7yFh/.?ʆ(c裨{:5@; VKi ֡?xޒx-(}9d9+?&TC3xXG"^{YRv-BB|~Y ,,(>fRE^PqaDﯢ*fB [ޭÅj? >EAN[]5`%X]ڹmJS5UP'bD&&(nЊrXx7n0~ԡ稑d#`ˊd/$v4Á4yQI7í@?]WaA:J} Vk _}۱bi)\_]6gQWB?EOO=;7{e5R]T>Ԍo8|C쒬Hc:Wc[Z@#(YR poh u|wkS ^#T4öx 9O2Y VK UYsu'\ق}z$V)Tm my9`N~ jJVϭ%%13HU%$!h#ĊJbN Vs>~Eߟ&A2P9P>~'?|ݤ#G!@c圢1 ^c^/J~f%@KE8^ (@g\.x:Q6U|n=px E2t>: ǴD-0E %RK GRUH1Q؄x FvwR%ר2U(jBP_Y÷pgE߮^Łqu0fL u3vHIKҒǶce͞Ai(̵Zi ?=Y oPpgtIG ƙ 0eCO '1cq,}{@z[t;Ev^4te~l?vڒ!z3dʴhVw :7s@*VAoYPP.9ϗ!Tc6dJ7TbP޳ h C֠usTa1l]fY/q -x *w~,$]'d1s2eCGAή@({˻G/jv`?7ec'0 v@KV zR'GQ{=^[uſ/:)xPr?}*!p늌[WOoY }3Q[hdӹj^%xd8ŝaÕ PήE(l%p&6t,NػZko&`dѮ}?7wTأS>:Sz8U2r;wN^ =|F9pW%qⰶgπ#pR{6(k nC2ViGN+!͞Ypx1Ztd>[9`!8I.tlRH 9G_X[ Mhi#`_+^?CC-ms퇯P#3/n0=%MyT㾳R\FϴՄ`̑g;/{=SϹgAh[ϣ}` lgs.nn>!5 &Z$l?F>\c0Y<b M%=iR dIPW0^`Kg:N;Q ?Էž@P㇥n0:A>I^B%Uԥf=u;gbk&l~<.`L}=X&݈kԿ:Hb@R됼#nDY6 &ϝDOhU85q`e)jujQXő#U(;"1UO }DZfK!1<9JaK.1{rwEU- ^UdtyR;I˧r^D+*\/`l>{8fܹ-'N8&DWhP3(}wNI,É 1;f{ |V0I[ؖz#r93 :.8δDۢC#IV2E'@o :-*2 Sh~#`vx~;r"(U(,e2V{C{|APb #Zщ!}ê-'J5O@q"Sz7}t rjUPztn)uB+o _s-=1q5TٷJ)3,+Ǘ`7_;=OPG4GkP;n S,pJ5δim+z7 7>cV$+32۸'~Y6zĊ`yV5m6Yy=Zɣ4Uמ7٨Gnش1iMSy Xށ}xXoi={Qt͹/&m&I6E,ÇÑ^s;A|jg/(<=iĶ^z?Ȇ_j" 0)1y$<<}bbAwT}%Q_<޾{p8P=',d1 ۿkqE>r5Z.QN9z9:hB5k#etro׶2C=.@O[ {_cfe)*>q١E: i2YR$[*G[%T$bwfa+@mF^?|A V\0{cZz6[?^կW{H"عdB A>5<+5Hf砬O[g[=>0\6n,l#*+dQe8nSM[H* 4 p%!*+9/V'- 꽣G:N]֜iOjR:5կtkoEMzQ8 @Ãonhz/6*$܏n`fs$e` kw 8}BtqGa1ZYdV_=1=Ԧ>KA"O9v_~XZH|pB'|=`/Xi#O\ N > fu|hD7t?@ޏ=VE^x{`88%6ºlK⼝5"PU}*T&J`5}c(kVN7 _CGdRI9K+9X>p?AJ%K[S:@~ &_Fja>t$`,>+'9V?&Fghǩěc!t  ֊9p O7TF|i`B0і-ObYO?LiȂ.yej@ 4)j21a wz39)֩Upwɳ DGotE½^2L|͂>u'C\! >g txc:b2TE-A89H& ƧƓߣKJ’g<;LwZ:2Z61XrTY1T ?a\<.l&#$*T,Ȼbz:.>Y22p2(fƝMȄT:VnI Y>Gj1ƍ 78ɍEzF -V.,lܬ9X56Nl#S[6\ b6)y~7bjOz)a%5<##NR &RC;\'ޫ\/8vٵTؿQ^yRך8wR@)g-*s,dDǚJNżYĩW8t:_ӟhɽ>ُԇ}ك=OX_𭏾[}ŷ>o}\ϾBW?wӱr.Ll fc_ aϐ!Io[${"$2ʓ(ObIG̮~*9hЧ~m.8 ()~8β=v/sDByݯ{76!yo,jsUw b$,BδU'ɺŷH5fELP;Rx܂/9v3MMt:ڵ7zDzNF!:1*-6ᦌa9C2"Dq`P4@-GEh2ZVۦ/ulWWlZKšC8̘ڸ2;r K4fزlXgTޘ`%`O޺ @'on#uC¯z{,e{}c."F2ϟ zUӠx<0[LJsY >. vmG"?(\[P]|JBG I#C })OK 7+E^Úa3ɼwG˻fJROBš7H7y"oX1FcEd\LJ2fHO{E2 p|҆aXlז one`]2W$키ʆ)vXN+ <) ԠS„ /frh5Pު >yKw,ټ\jT~y/QY]ϸ5<8Z)TxI-'9pJ?cEw@Vy (7/ٱtZs|K8yj{t 32u)}:q~S1\N7OY4##B󎹬9Id}.ήӲ-$wm{W}]_$J?d3)Jʘ]JMѽwKwSs!Ҧ{m&IgΘ7y ؁#]XPdץwYIl9w-͆Ѯ{0 1s3EX$:nnߋR# cHu"^~>Жq;d.e܁L,u!ь2WR`6]-))6/QolÌݜQeŴQ+w,\R[ 뷄~˖ip7 Vd'^JN~o恌(:SEN!QWQoْz&D NGXT`?VLKQΦ~it-?Iզvj3z~_QiWLWLWL_3_3_31_31Vh#_L&ȔUI~kW㭸b0as!Lr6K-NJܨ'j]q?rdsu6Qq"J>v[i^Tq>N1PuM < 9^q}֕.99Gs _=>ճdS=KLf8Q|W~8߽.>߽?~J]~(: =M# mE: ϸ& ;){ q/6BN#́ }lKƐ_?&}$yÔ7zހ.@F<줚XRhb낣8l|]LzeiHo$4jn/Xu%N:jWk[/]}҇w+߼,\*;IĂ v><5Yk aaWvҳ[.Xy1'՜ve'$T M'\m->lo+}E~`Y|5$ Ka]#Cb{ƶ؊Nfq+ 7 "kqzPnmW HJ)?yFpGjBއ'𩌷H~Q;ƹ^F 9\=bVŕ -WPZw4$M[wHc֎l08elǺ_\rSE`Udd-FOv ;?(юjs,7gVA[/'*piplv}gݴ 4 s:$tKlڲ}3f͚5*OQf:ہ;٧7\Z'XP'ʒun߷ua`z0iש}6:Eu%,M2LF")6gmy*5_qsb޲x85x3)؛!k3 $YKb 4(`Kj_pׂl!vMc:ݔv քsbB-X#|oV]ZUMd|&?EK [9r`cAwAQdjS mj& :O,ĦԶy?EeSEu1܏Ԇ/3+LO;JZ]|JWg|o75`k$& ς;Ƀbm޺McZk7yYV C4%'i˸leáC O@G^rS za;Ǹ[ZٟRKr'Q6R* A˾x淪෣T k%TuuWbI8k,%`КZ(ca*/Y/}AKН4EXv@˚z ݋ƞ+ 禸oo5x/nbbHH*hWӦy`-T-D'cYq&*'oq}f-p>c S-.;*9h:ٷH`h v;yu̪(k q..gs ⯨'_QOՕuiRJO鯮O鯮/^\L_יF ?QkȢYrYXxaG&):?Kh "0)eM9\q\o/Եs/L%߁˹vrR\*!ܱ䜌p iۇ]1Tz~}{;aRRe( aIC&LL ؋`Poa,9Owe:_Td1#̯\]4橼OpPNe* [ J/菹qlаwMz)5;4ntk؝'FL.bVtbӜ. F0Z|R@ 9>LğNײ6_9[ Fŧ6z6-0/ZS|g3ԇy`]|:/{]&Kߏȥ6>+y*F9jB⍆Y8ۻaa&fm!:1Trc`NZsW,;emh c{7d|u(J+#ıTN4 pJ@Vɢ ]oT#mSn_ȟˆu!Vq:9`i18I'K7wk:~6ix38]\5^=7JE"\ZQihE\/?~DV_eRWSWj\/~D._ WMk?bt4cRfXJoEB8@x/X*MxBpmY!/>:<MI>;;zp W9PZx~.zx$hs>E9[ҾQbK|}ҾF KB(|Dl]4DrW!Aw0qX5[+@覯BvQV*f[1>>5[q`|[f1d#qe*C^|y'g֖K:dp`]m)9`kXtth`BsqYm%ACo OAƠSZ]cV@dLto]pu4u3,+ 4ꋃ\nce-v/ub?oQw l m}} #C~msf4 Lh8/M#55b^K'<.|"Kx Y!B 5N$k[+w\.ƻH1/bi֪;LAjsΰM{ڶέr:w=eC'ه`(b|`LԊUZni{NU.-)O[kZM{S|L33-R,8Bw/uzp.yܲo??O&%4k.4-}snn>.JuW9u hOe,hBۢMIk-rMUw'$ܞ>z}\Pl,(leVg;&h|[gHm+$zF #M m{Yp v7n)>&lԸCJ[k;g7WMڒ ݶeУNp]mܰGlXE*oeu-{en4#l0,\'6/-Q]7u 3a[&,< /z`tZ B~3zajP [ANPPN!}7TMbwXGO??o7?mZmvR~Trv~)l]{*Ғz6{fM۵ P.] ٩eFz;ծmg\ 0t5EU fmQ[L\;6U$[|^E̿83&{kUmŊUfma-] װk3. ϮmVnQo=[eQ*°]7\/} Ϻ愶m{999)'EfrXѢ 7ixq&[ nMgMCE пao1s%ԙM8]|CmrUswu1߽70{p) S|JlÎioBʞnIBKbvQa1r4̰'ŝ\,5tlL7Bw.&ë}훹Kme'R8?OS8( ¾pLGצ#ҏS7xiPDIJM*pOԥv--tk` w뽋KE[9dt/X;Xlk&l \ng'xF2H螒>d"D6|Э*Þ95{. ztˎ8y1a(s+ƓB߉c9'݉'d8B;gܴmq/J)@Qv6.R"*r)eF\A9\!9%i5MvaSE% Zz)t]!3k*)Gz\i vDŽdWE_aX_Y,<Ӄؑ.\T`uM0^hQyIRK< &ӧ7>{ŹsuHm~pgGV3ĽD4f1䌟YZ|1a5ZNl^N'`|)Ҵצd}D sNbX2_Kzȍ ${Nn.;yHxJR$^%^*{paº o u2p"t?O#s޷$dSZlI߷r1ӿb&oYA_a39{9ܡ Q I)کy)p[A%YgN=oZXEDO18jX B?Pt  Iݜהq@~1svZ,PKU)4X9jp4N}ځ d}ڱ>ۑXj~nuQ̬N![h𼧇GkFk~ ~t 1]%>%\-%ۅk:TF8VR1~`xyH)).'X-A0 pt5]&mx{3`Ծ9@@+x9_*ȉWmUa |ncۛڈ.}*v5_CC:pk7&6Ni} _Lh5o*뷩:>D݊ůۨNM[渭^~'AGo_U9i%OؓDcuc*$r^/ xKuFr<,#qt cC_#bZ$Zx jZ@ڄD&*(+xݠ`p>r؇[>(%oت* >WmH&z^WYn'Kr9Y޾VhBQ<\FǴNetH Ҿ0GL'?07mlAh.撿DÅ--٣b☖L[&BzH?84SbuT+߉-#3Qa: b=ϥFzd*/AvdsJ?ql ́pJ4 JPQIX7 tiήaH@(B-$>Ix~ `o%m%QG}.~6A߃3+m ya/g=_b5[[` m:V][f/!ٟB?KsLΟC@6bJ%Rz䅂PfxHOP 8J6YrW7Knf`;[]9<m'vjǂM\Psu!A9+32mZ_Wg-Z%E7W&1cǍ~2'nJ͚;Y{\[اy䰡$}%cYY`k ~r̲Tx-$Np/w{oV9e(ǡ"v3zB ] e|.GO ߼ s;ӵAD5cZ1#7ٱWZ*l P֠R5=0xzDt?t,;k۱۴jzvX٣G=^-d[gyufmPEGDt9{b,#왼2]#Gp9UQǗ/Ro1,88753Syŝ4 XX1Gc:B rxq [ĚQHĤcGtTp+Dz^O]+o7\՛d,oDh$Ӕ7B;zw^y #?aQ/$U AKw,^kג7{/_3_7_%9MPGr4 (q@@64Ww^tIk;wڒʼn5FT wp>mObs|0m}CR*6$';5~mYF/.v)Xո5[DZ]t:?,L3phdCFw;L G,i97{:w4gC\X \{7=]tlN 'Lpe=?dQN#/='FÒ ܇"DזB$과dB(tW߾P;pٳ'0#Z+ku):Tb P߶lrQ&,`a'v 83 g2qtG﨨QǍ= 5j=3=YR&ݻm?N1N0U A n`㢢z8&-`7yxxEG[U듺n4]uog4noߛ/=e|=?3GRoFx@uGmZ#~ 3qLG%tXRRrj.gWn7Llב# ]mYrD &uۃc+v^mpܕ+hBEfL{#GZ9sQ/9sv?:E_ohA*aL36۰1 ةsN&,.gπ>i{*Xhdݺ=W6~BJĸCY` Htw*mPtDŽ4DiEyK^^{Zь¼)B{eЇ6ˇ?A.LwBՖ,A: [H<^;+,/if*zDCHqCO-lˢI}pqf&Tc-{jp#="Sa !F_:v!\^r?BA'WVGL{4ѫtk؁*4 (Jpt7H RSf#Q>q&nƙd)] >3oQ3pсS= ٟѯ7oRQ{p)wŴșkX0u4|~F<] Е!!jڬY,#hKƍ:g ܵ~~jO8/pu͚Zڍ1b/Ŷ[Ƒ\cV땞zx`7h*z1޹sf_ LĸI/)05gP<ݨ BA >FpAM'A㷃kZ^M\claG?!ptI&ܦMR{r0k0 R8}ѣǫzH (GZKxsQ ?@;@;4Jg@_K\$8DYkX)4)SZ/iԽ FUCdѱ!t=Mo݌n&͗hJK0Q=/P=?кeiHwX%|ķEb 0hƕm#Td&B8縶u|bW9`ND; "˶" 5{R7>.z@]&;+ycnjǎ(YѫWƺ^cƜq̘1`~,_>+1_P(OT4pntVZoղeªpuo R9Cc>rC'51;T*vLs"jjgHߢŴI{;А͚6 QYlɕh}ZpHHpyHf)ttqegCez{i)L'jwO܉/tא~Sgo)sCRMYYUFmJV㻄D{:}m9㶌Kp;_cuO]& vODW(ʛP / yG1QQ3AæݺuDh`^0Ptc5ߓVZ"Np748C%熬M $i5ztÊ֯48;y:>:*reDww֚~*;mhAC-vvql֤d'&\lH*G-G:"g5 j=.5o"#{?zGd cH]VtcJO&r'{Z8J fX-bccZѧoVfwݺ!cɚCGDPYWzaU!#m:`)̪[jٚ;2W~~%4̱[bs2y^';⏛LDDD`ƚ;BَtSZҴ y4jM[,F7|5 L]`2s뼧xMúJ}UwgޓU~aG3Qi4bk[ L hҾOfϦ!juvTiZZ1 }e%0P*Β۸ QyzYZ8Ȥf7g2)RT]X{foQRib*e)Y:<9aip䮁 va]H60ʑWHCL8c vS_bM8b6i(L#~TjefmOJ/BCU"#}"":O뒔eZ|v؃]d],CTwT05]y3xۚ0GNmMFy9/x/EshU"`n8 Y+}mȄ[;0RvNtЕȠ;WBOLJ!WCr1:~BBPlW9 k.qkcuH"sHZGԴNh0g2MOBxM*ecWˬfƸ~HD^4L~IBpYC GDv)Єq)`ZZZ{B+`W1O8 mYGg1Z}91mb۔z8]cOW$q@i(ڻ!'90·tҍ>QnmasD"Ư@WxN!;F;_x|oK,G^8zN ;AaaډO>r@Wl3 l=+#T8һlU6wp/'|0T[0{<^y=3p"Mϴ_ۦk<{8JgYinGt%&<sdLR#~T0WǸ5K{\5*! I(I\iGGJ8aayxQOF{$0tb< Z4 4N횒uRR6 iÝ芦4WOʏSveEzG{Z#˰ l1xd|s0u/2zʘ?Tr$=1uv3pS#EC<8mS;hZOm 1d;Nj#fm?^VnIa{OvRƻAa :9ǰ x'5 { c҉>'s_sP~lEuР^PCt6Z8rڴ9;eǰnW9hDc-f'A! 1$w,8`y?WWbo1PFkߔ'6oF67͠;]E) 3T/aHmٳ6Wx(񛩖E AvYw] smc=입Ji}⍽= vFJ~PiJAa_D 5dm.o<د Y5K$_f|(.4q*ѧ"R0%22טFs59Y]g^uxr;244$$x`TɉS[*1q̜2s }?)})[ā 0Ѣ"il}3@r1iujKXXHhD]xTWU^~0*#}i!GaMvwS4(ui~BBQyrIEk%o¤_qk,8>&zRmI{AϞ{?:B5kl$1y_z 89 k2|1:yv:YJf)MBcbMlۮ#ʺq*Tha "ʳm#4},G&qǺ8>]ь=N#w2)pPP0Yz v <4G}\Kj}X{_h63yԨ<ƒn=,R{7kl+&>רy ev8OhѰwRQ{3f̢i4||%~׉"4uu@A=2naKQYIj?*#+3+zӄxeo2Ax¹eQ-ݭб`!`|I|f{i`t`8w #Ǎp>V6-nлNel+.s :*ن0SʆptQ-F%B9RN8Tq&t'c6k;S6?MHSIך $ &:yxTt 8g8v!l7#4:s[{{n5uCqZ"iz:<&I?*=c-? Dj!Vtm.%,2+X7aBl\#l2pɽ#"ZM%46M}BꓩQ2Q0^ XOERp Nvg-#w;5k'/H"<Զ⪾Q>Kq8P"+z )X$ Ac-p7*hٳg|dF׭hLl.ɌF*RR1>%YB,hfrvfM:TY0 {چ6m7s>58XuT`YJaN@7< LЩ*jT;<#yInj"E$3-軥>AL.6yoü k h Yy`@~A8׀?*!!L4eC2 8?p;~kU-PnXK$0-m0= =IKnOpIKUfDv5(9:p0P&AVѵ]Alݪ|х$,Ѥ$q1dMovʆi)"_+=B8y0"dOӹΚPYMo޹[+6ڷp40;Zm?ʵ@9OI ^b@5Y 03!b)omgѶs[QJ#P'J sSBvzX fK7~;8Sp-4HTܭ(Bs[VSR=ظ[ܢKibVܛ4IФq&pNاY1f8"ᡇMc%4&vC%AW..uWJ פSNMKm3L3e l;JEKϡkTL*^-}R:Rx;j+0Һ4jTq/%hv}8X)Jm}}$3z=yK-/'?pK_J~Hr߿YI}*?ɝ`Bd5 );2u&LOz/=6K1 bxk*陭=9x" o-WgLG fFt($ o2cjje"t?(ϷJ*}˥K(f=i+),,[]Vcx;"u8O"7O߃ĭc4Dn W2 Ƙj ~Zo7W: yۀE2ix?\hoN)=oL1Om0:}=J1& 4p @ùk)o=;ц%GpL!Qo @D|bD}Z@FPI t(}.E|-{AS_R;Zc3Xl#:8?z^ RfzYOӇ'pW Kࠝ(kǼW =? Ϡ "( ?[qtS_7_~- !aD3' 1uA?EQO߁g^P8јqΕ߃Lq+T =ޏ㐷""|h{@=81ƿP8hc3>Tifi":c_FjJ'v#i@~iU n>C=u|>gQ8[p'`"ny <1-9s?V>{j.)OtA􅳝o{wtx|?X/t\GQ;埂KCS{$?yO/Nr(~ IȤ;U <18M)CD3& "#|lnL|j1\9z r5r"$38#[V7ߊ‹?A F|~HRɰ'(xwSf"^ ,||FRzA"='1nX\YY=)m`ނ9mRV6j!v\ο%ފ캰a w,  9GP{HjO3)fc͎o־@*ҵ.9~ճEӯhIM[6m}^Kٿn3&Uj0W? 0;zq=:Mᭌ<>>t|UaܸBø5%NDFJ~zI͕7lTr^&w[{uFk%0}nY/8"sbO#gvF>6F Ms~n*O V\>2Wc|%S?̀_eYEZ1w1Azb"\eȗ_'ğt>)\C<9O#QOQ c|#|'X[⸍v^G K<P5|3f4nЗ+-@A@0AV} יqE~m }|sMs}|DxQ+ʿzw>JyL̩pn3Hg! ෬s ?>zW]*b>g6Ha e,1M UN4ēCJ´|,|?Mz>2?w|u[?cE4N"N ᙺ2ӥ/_n_n ^8ݏc3{fXRO:{ Ò%K&}9D9D[ǒ -#l +¥O33 z}czg[158ӏ٢S p<ڒw~`DQ%I,N&p); pf ]7KRko膋}Jʳ_R몿 Y1{^ w#~}kk?\Sܮ?ۄ(HMevTCe+ci{کZ2-#⵬Z2&ml. \|?2uLz ?C4Cc+˙5ϒ3_R9e*gⵝ9I`2GT<+cix_]=%6&ƦB1h3Xyt :Hj,O-T9Sw /O2Oᯌgttm@wKǠ ʏ|-YLo؂ʿY}czKlkFc^audž'6ذ 7xmYA2_3~“Ex^WYt]/,r[RxQn O)"_N)“ I*vz WM0=9߰Hz~wc8mWccS?Co Ngct}GH;Rڮ_:z)%颟3sp?mѿXpӮ7Bs;@晐CD*a9#^!,'&^q;v8)ȔGI%R4 Sc-8oBk ?{\$pw}xc ; 3_ɬ?:Xbk Vn[18_PO=d끼ZN׋w O@q|3 pńXq5cr|mxծ;,Cn$31B;}W6c6I- A 1U]3}0\ҽ'qTVO '{t#8› :&,ٻGuG3 Fr3ћ6}.]I>VWvk@pq~A& 7Ct.a[tk3}_9^/.ψVc>m3xq #E2W؇+rH|k|pf{jcov~Fiʀ;' x8dZ֚םȞ69c 1n]-0U\AEj-he*sVpocWxvU9m9ͽbiP1طCf4,d%RJ|+|++iķjA|;s[ֲ8ۘrdw` c?} ӳD\;yH}CptZ-u/k.Q}W*ĸ՘#i'Ԥ/͘zqɂ _\e!I!cgap%t0uþا9[2ةc\Dv,%U,zmdn q;'2(շϞl!i zeun܈?:K*D5}Ǡ4Wux22Y@~"Hu(44K^2{ at}ҾMoiSkcx~ީ_>s y| Ru|8S2m/9@b$rϙR2<)9x1θD8l!f#hF@S)Owi1w>ޏ!! ,n93A gR27($|p=sp@ke% X9}p+de\]r&࿥og;.dNG%7Ugi<ط9H,JMO I.a?26ةEK-Y ΝhR0G(!'869ߨ(88y̘ K8iW[pxJ0)| 9:܇ E=bUycL8pc (R Z{$X?}/QEc8~~/Śa7G~Kk<5 ©ͦs m)}\CstOxX& ޞ@[a#xV\8Oi<9HcZBN V?Le=ިHr>˨*#W?RBC!1>g|/Aŋ‹Fŋ3'Fs#rЙ{!&M -܋0v ngŋmA.p@A @nXxE8H;ۊm|:OK} yG?k9zk%k` v;v-Ǽq3$0V"}Ko->$L\ͅULF3jmvI}5PBO K, Ɨc׽58zb {l0F CFGЬ"T %?o(-ݰ_kw {W{׮߻w=Bs\ügĜc&' $xcݹL,2ô0;`w}͚İһ<0.VLČxE9>Ii HğXfKB!74 c#f Aѧ (\dHaA\v'{xVjkfkikekmxO{Jvxr]ò 1ka-@h9eѓ"cc[6mxp~sqvv#ls:8b)g6z`K޺}Դi}eop U$?wWZljQ=m+:sԽ^832W׎fLc̈gҺ.iW4p<C*~p? 4w%ۊiB*cjN'z>B,cA7Sgfը{͠ArfA#=R֕HQ7 j֣kHppPnA\Ď)2BBo޼_;rBE;GFiA}$+i$&Գi_S= ",੭ZZ(#[/3uѶCdbP\W̘کX3H94zny?DRe8=\m@f͂woܤIc 1Dnbh-x#-@`RQH|K$r+HGpJbIOwL: _ [`AȶıNcBXNHTԮxȽX.ƻFa JjRXƫx] n’yfU ZlXaFx?b:{;)RϽ;L@jQ&f3BJo)=L䰒4[`z 0rjm~&FBMԧ/+{/B/꿯s}\r5 6#@݁F^Ҷ__mB"t )–:Z;%d? L5*)- K?ᇟ\ (a9)؁-bj<{-\V[^z`I0,%:nmf?hU˳kz5*r!sZǫe{)mpoXߖhj(z 2 P9z}k<@A^x+;ؿ>OZ"xUFVi 6@I۶76#Kev1e>|WH6];&i˾|]):ؚٚ?G)/H5<9'vY!G;+b<";oV_xJ*0ˡ?ٵ?|7h1Kv?KaXbퟅK /-\g%c1f 'RpB&9)'X,h4$89s$<,Z +9)rBO{@Н9{M!zÂkrv밮ԩs~yܝVAګg\\N '\GHASԚ> V_y|X?5ܠTj h+(@oTٺtTb\5'\5 z& P2VC_wE7e?h|pTY/u{G F,` s / ͽ5HlpT60{E4nYr@/?{Ln5Ch?EFIҬB|W)>*$\ݍKA~8Ӝ*T?1+` -C; jg;\6\>n !ý{o8\3w%YĮ~gWwIeOo_I%MJJ6 6n.3{yp`OL&S*zK AlǰJ*$jŎL܂^;rVx3"з^kswJ;f.4k>G>7_<^L̹xE <Á-Ty)msL8vzO‚E²pv2Z jCCb:t͈z& ^k_=MB%;`]i)w?fo~K{ېwkF9g~A曱N9aÌemONb&BHz$?) ח5d LVgHmxo3@jcJZ %`tfƆ!zw(mҵWOMlP=Cd Xhg{VͼΎ=Z{4۪cvbl3Ux[[;8 <ب*R=tUdsψڶl (1eaURO]5up/AV,=M/ԑMn=:(ܢECE 9߰WOwpr\4o-TohcclkC|K3lhL'Ygi:S(<:w 5f>3{;gj n v\ΛC]99=޹#7v^:j6M IS1yۈσ1dSG%Մfގs;8USVVbR}Y#J$ݟ}gHv@þ],v y?m\0i{vp Wv`VnM|6+ѯ跕CɚُS[u#q8!2я=ӼUO`TԒ"I鍃O?hAlr!4~*ZD@«W5Y |tLP$(+؜#o-x6ؐǜyTٛ΀5v2+ZOkcݟg#[ݏʢ:|pXBeQ>1w췚^&PfBO\u1y^~ZmN?c%H<ڞ+UJdڷy>UEQm2ks2rDVA]&ZUWȔ%6I>UCj"F dK3?zv c+[Jpx|`SC8QpdLȶ `kvh~DvSN`W;h5oҶ²?[1~ΜóOk_QזE쇄N脬c..[-Ӡa ,]3l_C/^&0^ӷ&[q)V4oiN-?s%)'Z5(x圊ҽ|SX5C0}@ ~>S++;I+i5mJ @??i/o?~iv `&6sZOϘaUM pW"'Tsܼwc.a8_FzKi~UG#LSqsa'Pvi `w889 O. !9?7:<_$a1UGRWa,a09- bԧיS'T?킱U}WDwع&"Bӹs{u!q<駑Q yrW-W9YrMJy*6nm{Dc}|GH 5"a+:]Vܐc;M/72 jbXu^~qӧdu¼ Y+ 7Q7|ƉI} N,YA[U6AG(Ӿ5hjxSyYNW³8,$ǀptWreR,Èu+y^6fY:ߴ=㫘[m}T$p(iV Y&=Z 0h54 >5LH[n;I㡊x mpFG&m,zum;;[shnn`n6)q%~Ҏ^Wm ڦt17z||eM<EPA"+PF>! C > KT]T05Dx &z*\CLV:rfjuI=p{zmڷ陷៷kY?驉4v?*W%W9Hy/SjTіcΟdڷpuҴ MymN27ԕag r܍*o`1tQ/ǏoM>/֗ȯ6Yxu!@ gY%;G[ ^zktdl?-d7k3ڠvݳ.n.8hd ['Yҍh %jI MK5`Ѧ` J +}~vyG~*ի_mK{6z b(7%oGB?JsL`;2Ӣk@-ہSKj  /Z#sUyYZ9D%v;0L(ޓǁN<7-Z*M)4s3s)V,$͉7sjiJjFހx>ly&>5M8@Y& /{|II7ކO&"+o)&M8w &oOJ;q7w}Nd% j^ڼOs:>0Oy[z.:_s֚ ?L0+:I03qPw`7~|XnTJVw XJj`3RXLqN~6d;$Jn`3Ixg9f q3Ϧz8G&);fu*kf jtmɂ񁭂Y:?=alQ <$`G:'Vɡ!7<6۬K\34³``I:r<˰n\uܼ%s:XFt9MGApZ׺"<^7*; ?FR_剑yIdN^g9 i4WxOW 5?zȆ mζmGNhߠmAU=˞?Gc @ir%uz^ _Tmp~7~ VyXҳ}O5A}'-)[1All8E>POSnY貦eʔ?dqx2,1R^fiW,SxخL!+k\,P&$Ĕy)ˊ *hSЦwe G nYH-sH+sw*cqE  ʂeXqee>L-߬ëlˬI0H]fYfKYY.,7qC^w#)^e~7\ p]TXh.#{m~R:xaI"""94Q?>)rViii52s(see_f)d=MdRƕI1&9jVZf+'SGk->^bVhK +VS*+?TP5Q,~86t$$ozhJ%oDŽ/2l%vZϼH^TyWKTsÊa޷OK> ?Vd%O }IzŰۑ?2^[G)WJ,DЯ*JrB Ƀ R0C%/𔕗{~GߠϨ ̏E{S&3YH|*E-L0h؛k6;T%Ί2ճ={=czkμ :D%ZM<~Kz7kŞvӐKOvLۢ<v1h<7qmw1 3e)6W>_XЬ  L|ER^\q"']FN9:pXxŰ V͜ gm<\B(Mn(!.n_v6]8d]Jchdx,SM__"f'u{Io8wM`J.C?a_ClPf ի=՞nk-7^hFYrV {Ү9˩z}1LнKB#5ٳP^/xGIS:> sP7?x۔D(]N26"O62#pI#*МyV'zx*بDm{i6ussr̞j:^_ G&4\նJoOpwTn;70OBG5Bbn(/ӞԭvR{!!G cQ՘TBNr}@aS.M2 0o~etm-|y7o v|D y5]ؤz㪅:tp8\2ր ?)(Sfe5!gϞԞ=S*RzfY@էMȾB|N/Ӳ-1m90wr/ '6"  IL)>r𳽷[x\,рEcvjG;< 0!bКՊiMWˠK)2c2Y?OcE2.ۣqSbzdv`~ӵOf+?^#/[u_Ȣp_l͓ǃ3i3Y?;(\Ÿ[c)âav n 7?lK#Ԓ~def{+4(h4ժknT.Vyϩ'/@{vmv8 !B3jPLK:_fOff1bzXfӲ&IǗ5[3bMi3!`KKfuЍ|mF߲&/'f Т_ݺ$$3^sYud.=PmlNGGtubW>5Qo6%qM9 #&F< ?K꾑]1ؘQ;{좽S :?.&t 3 zGHN[ep`1zm4k,z)ռˤíƝk k5g<3ᶤRMI(h }M$[tl}-?YڢݚX2t'~v V˙Bgd=HN%y)"ʚbW["Mu-=0n{pYp,,eg.pW8Sah{ tܿ>}l>s{iS꾐FJv&%V%hhRpZ&I[K )͎cnzD:vZls~[D-i)ËJz/\|:P!~Ik^2,G65i^OGJ ђcDPI;X6\k?/Iif MU:eňq[)*_<8Llkڗb/cR7s{ߜ=3sì Iq̲'6)zQC3}`Cgd5ش;E`uYM:/x@O"JK'hhp}VEu͛x^")4"n;XfUNHْn>6+:*b~[dQzØ-wVu;3"]Ӥ,g\;nj[r3_QR# pukImfByvuAR~ +{9B[/]S.q)" 'Sd&hs ]7֨(碣3p4wtpl3զbx7גq5΅E-c#歝dxdtgpU۷jhmb5y(0Aj}a"}_AGVFx^%-3֘6ŷ̛?q|IGLjz> ټѤh m"D`urbbWA6FBǫO*<:ה5ʧy~˫w^@雳 zO6ֵ\0:$AvT7_["-z IKa՘u9m-[[g|I&Cl+E^ҽo(o/g*֤glYR7lVt:mfC{4|9vμyb6iMQS%?(3vUq0V9t׽i= {%J&z/й܈cvz%ey$E[۳HOZ -^βUgfr~~C~OJ|b,>$ jr:`oJQtyb|WaeI+߳ʌ-U Ֆt@QfY &·C{g[ZjigjɁcj9>B~KM{؍m+jˊ ()fqOAسQ69bq߂h^,_c5.m)_'5O?Юmb%=d9zWwؠz9BOJ[jγ1qVH۬^E%ʆA쬱dؚ}r?:֓/.YsG'ikχϻ^6ƏZFw43g~3:4[N#-ju[yO\_fPF*h$еfbhuTkTRt9ͣOݡw=~̆򊱭reBb6l5[c-]vhY*=!T"-x$nb]4 >lf⬙l~)3̲lys "'el-q_RD[O |zv#Gj mv0y2a2N -i<媟pJm:=~Y;ҟ!gٲ}&-m3R0ՙwYI H8W٘zeA o~pнϗ w9okRK2A!A_<{mV`[aU﬷ YD 4zLu_F=MSDvo[j4Vc7/]Cc.S>8$6st8}o>pwï틟so<[{x {ij /?n}vɾ7G 7h?N2Ϣ ;!,si{ŋM~ $l?+WȐe {+{O]YL?:ڀv=?St{wh9|rʴ3K;g~,P,@=ot{iC{ɧx_~~" ,O7X/u7d;,^>;xΐ꣣Cm}tCt:| |{Nǫ{; k|.>K<0ky;8f_ǧ}AnS3fzQl^ )yp6щ4t"lWz}ꙫU$ALI5oۤ[zC|LơP{wNǥ@ ! ]pQ,W/_-BfAh/4 B 4 B 4 B 4 B 4 B 4 B 4 _W+ !}9NYfpAKZW6*l R"B_|*gϾSXJJHV4,4ȁ (v%mj*(xZViH@``0l) P!"! J^4v;H8,@cH@q;.6灾XXQBmѷ{p[z(\GrEzd1ҍJ>z14`p%bf,]|έPzJF [6T=e+_}3Vmm @{F}Oo=] [SrR#_lLo* ;*}.|xH)cą"a#Fz2(7)(\@)Tjd\Y ^1䇅 aa_4$8((08$8{ :Ѱp ^ g sö7*#0) b8\ZC|JXWMՅO ߌlLAҠRC2"n$#2j&Hɨ2,W%\wUJ:iCذ;|t&#A+=f7upsJl-3Z5AꁔBWo WQՌNG^.YHbeU3: {!ȎШXNok 6MP`aJ;xŊ#؎.Q8Qޖ fFs #ZU+tGwj]%?+:&Dy[p55WNԗ& FFue''dr1i{6X-D%dD0.Z6o0R%5+~7W[΄|bC1W}&sai^4l2 >hd%yw b^Ο&WQz5گTuIf}y[f̖Y@cCڢ̊;:-^pGGe6VTxKq>5 0eŷ 2]zm67͒p6,O_#"7܈Im[;2--sr c%>Β|>:i¢fZ"F(f# ݱvum Ͷԅ&_1(icHУ:] \׸(ę %KtR5‹ |xS1^6hd[cz"6MC:k=7>%D-$?' ~e=5MSMm*}/xy~-_묿eA^eRbcdcrݑHA#ّe8(,84("iRJo𔤦iIEDf즈Ȕ!#<' E JE*/(h|Y נ-I>I>l>7DWo] ?xBi'^J,ź?H鬖[þdY鬧ȋ\u{uZ.,iOsvD&T+A|ބ[OjjmPI"sh LZ14]]OSZjcޖ%g[G n"{[/]j+){FBi(UZ4JwXm}z:];wC:b‘c9z--Y6v kHGNڴ\wMXV_WB9f az݃Jy蘧bbeʁ7,KetL)֞j b+=H~XHt2[Nտh`} lSv֔v6w)cVѲEfOjAZPv{X]zngc|V1}g 91}>0HB'0ۉH%$3h䪻&iY.5YJdEʈ sjL@XU3$0Qs厔2$yb@S\ (n G9ZrI#| wdYAtv,R7cjyU'ܼskpyGxx@OupnT6H~sP^庼d֑^~Pv 2}2#'e\/('eyЛ{ ef:U|ax` {}uJ<~)=k4ڷƷ/`\ ?M Xt}>/JVJoX+<S>wNF]X"iC4`pjZ0gw~7 xk?@s:=oT+(P@=wNFŲ]RrzE< |㙚mbE+wsGmS;ey eǾCٱ=N q8/gv@33ΤjZKϽS4 ~y$R3gI0qFr'Mz3 a涌Cڣv+JhHhXS|ЋOwFUvIh4{.w,y à;ۿt92+-߸)?12l}RhuI<'wC}:N#jg> <\wE6l4&$!$I~an h=w !cuo+tX1Ŝ }^2=\Jj{'OjdCz_,G?S6er˳!6CvOԛ|FgMoacryNĐSKcfpTϖ<)ƄQQN)v^'_'} ݉ 6\[Xh#]M])i?ONV\w <^x{צJV?$I2_+J?1?O-._)iZv:ׯ_L=g:üT kql*Ü<}*oe[d= 7z m o Д/zM?4vy9{~xU}g{~ಈwA MTwڰ'd} =c=7R@ߙn0EA: so8[ZSFY./?:vgw|X3Zv~(е0LؠSފ6Ib4K%Ɔ@"L6s ҅DC犹^p*ʩ%Fwf :|o8VcӫJ-ٿSd*ðD5$KXxF h+Mz ګcWkRS<'ڜ% ͎hiuD^B r/kd@:a{#^JY}0QP<Bgk$XA8=c {S]<&hc1㉭Hӟ4^,gn&m/FRwdгa:v.؋#oƇ*NeͳqDrgi/KɎ: ݸQd"~u׮f Vp:Ȼ փciIkmGۧaV[Kԯԩ{6¯3#$/&&]<[b3qGҥj3 ^M@x4qˬ|vpp C(OdQ+ƒL*j WUB\A(zYМ#éILëIu5d<{a(lbH~.S׎`:%2*G͹A1)?ʹi:4j3-oa[Gͺ1?ޘ{Nq01coc50 (@}7VX\IxEKǫ0N npH{&n#|},; a6ƶuq|?dmhݾEN|rd0}lba)ID%,I-I.Ĕd%)q?Ʊ6D%H4K0FhO]reo :}mƝ.`kM껁ޞ ">)eo'IqnϑS7S²kKëWn XZƝE +|ȷmY*G/aL"y0zcyw6 ~ rFhP&6?Ǯdd>GiC\'2b~(#v=_e5@WNJ]a9\iKI8I.Eg<.55G1I̹{ ,h;._b fM5Rϰ3>!upE; 6a5l5;<fj2-bXTկ뾐SS7v ixU5exmk7^Gz w ~ŋ N EcV٨-yd-swC`m]g"{=qZn5/Yu?}_eݘjA?D|Q.$ro|4ʠo QO:eCsC;=i23/*\FΥyу:IqOܸKzCxޤk~;_Y~0 bS \~HOk~VNHtl]' ƜTH@6߶m}')4u5X#YKJeIdS%y`#&vp_3dF)d:TEd+W}W*Y~S>22MZ9ʚ'Z(h(zFr\t y? cNJY]+W; aУaXnJՊd{l71Hq3 @`nvQ@*uXSSڶ%c7xbYMT9vpN*U&` 1ctNo&[q6X8/A2M]~\F2E:meɖ~O5|e%dK;WS醲d_3ȳh#9’ (}p`f_e҄k?-G>8h`>9O- Bˬlmy0'Q+6yXsqq^˗sVm-v+jOsU:s2'L=B'ˬ8vfReGXa J#Nd !Ah@P-0`gfrE,q8W#Oo䐊Ed8]8;x-Y/`4˗wKӖT]şj>&]St>Jsds(GQa;@l(:/JιYumGgl?Pƈ{wI^a)]Ƽn_xށ'ЩPx3+lg{ ġ|/7Q_c--7ˆh d7 Ƕe1 NȘE+:[=&eoe݃ﻶK~IzӦ[ًVW@ce~yn9wDk#>-Bk/to ]6zm}!F,FS{4?| Y W yS|#p)ւLWeK#_-}UZ`m>`gہҥfxϫgΠ{+6iⱟu_DK,\_~* AB6)aM 1ql;ߏm7lvÊuEK#]o|#g+jӜ&&79j٬4|A}fmsL˕'GE1s?6zM۫kN.ڰ1N0+a]N;geQFNg2:w#_ږCn>.Ӷm5n3yX`τG}-..70s۔&^iDjzV:-M{C,mۣ+ :~qsOi҇-E<6Ν޹E'\/< t0sWA 3/L1m>n_RQoWȆG#>lCclpD-63&v>*ݞ;l@~ddIi'c`ny=#kz+x7vNp]MkYza>q/ѻZ>\ 7O-<.RJfv[9~g [8ȳ>7۵ͬ]C,*!]g.T?'f-QGyyy̗?tx{ JfOe4Q1pώm$(EL0ح!|so nD4 -t:\j#U9M[fɄjc{9ƻڤgug֒DXEvxd$L-FO7DR[pcL _ɲ/ nAA+am;G'ym#}y2:[ gлʴoe /^-j 7T"6+FzT;Lc*dhL|/5q]I7•Dn(<xP/MCF ,Fou< Qf v@Lwg{j!]:p^ ? iA)?O+hYنc9g_q7e\# %W}<8[ 9灢$4pV1v43i7iY9˂ճ1kGr;NuB;FvuHJ'_<'[BKHœzb,WJ{0|aN_źF()MjT\L11>$)D!3x>`x˧L ʺ5x d*u>dš KDd\2Eb-y?*} d*H׈*uC\}=:߫U#<,  |5mR)Ɨ_Z_W^AK{蝱QKN!~*;7Pz?}[17⟱c7zw  oÁ]K=w-Xn%C}`hӱ=vU|B#AL$$9?rT]R!3&@`~ vяH}>CN>Y(Y lP)`f +WdqHVl\1x`~bۥV-ڷoX I\ aDDZRbFCf q:s8 !=Q)%w0toS*;cDfiOV)y 7Am "O0_p?UY=(8nTn{z˜q/kgxYOe߄|C&J AH1S|}b.a!EN)<<3|3w VCaal< ]&KNr%7ᰕ({()9޵={uycunsyq+n貎#G=#iӱg=c܇an:zLɖ45>l84e 襃w,Ԁ*:'`U{jNўd4 F%Nl>(4MXN;y$FY?2٠:|+׊ )>RKRLi_RRfvim]#g:ٮ/kUe.N**+15Ia3Cu'wl(7N9fNJ &}Uj}rm†}7[۷_q13GKouXI+*nW#u4$tcXoz:w^N{,WN bhr^ygcaܳt7zDBffB\|GEVˑCffX"%Q6=#eLf0WZtK|hPb+]V4%4$H$oJv%Ͱ1 2",4$@b{oB:~wr<2Vڌ(`?_ wxj(]G_PwA!ﺯNw].0IH@PHB$!q}mf97Ir^_ 5{@{5/IӴ W~G-#!~5NLg0yWiϓQ®Kγ2Aϓe~|0g4/v K#W̖H fbyvPURWRxR}U>2銙xJkrur_ҢL^}hvp.uFYǵߧMi  Q%|x|N" z>L6w/||ۡU9+{pT:,B!θV/ |2Ha#d)l{'xkxïu92G G,u/!wxzYV(IJq~XW9ж lt?ڰP}ܻ|i hyBܚQHU}I HGӵ٭D&R̥wBveb&?O;x }} iWz"ԋ f+c(7]ufZ=GB: 'K⿖-4ZBR`ps'1iƖ(=Zvuc0HچV]Oy] YA~1CSF0O׆wk4x522!&uDe-em`aFyHybwj $R _p)t4?< >iKںiz[d<b߈ ZḽY'o}XK{,W/ T0rhڝ$!'<Բyg^wlyzI [7:;B[SV0C%A`K#:S {4ZqFţӅ?aq^s GI'Sf^GeY,>[>"F} F! GTbq),:'ᅨ|B6~y*=:Ndi'l`Գ-Ā hw ~0^/?7m7ѕRoߦ)=Ji$FR5x"泓'EEPkB~B?#$.=cWAo_%/[7?`lw#d\7:{}?C.'HMA;y_Fdp}3:"sė.Ou|o_>ǧn9>@|[75/>^FH5E/ٜ~E3ʕRϩ'\.>ѧ_Zjө+lÕg2 #\9%FG6rMּt~~&?;[2Da6NSLLJǞ!NMMt LHt\N7g wŋ)e MEgԭd#ш 8.χtLDmt Iާb'ĠtXw6Hz{eUWdidZ'nv:#L&'WhGЯ0x~_XgF;`NTҰS=So3Dv@XD~2jYw-+>1,Y^|ӦM?۴)`)g'ױM~k>)-+HFO#[# _ ,7}H[0oy~rO؈f h0^p0['QƧc1Y+ */p7"K0 v[tyI`} fxQEc eՍx!ECSK8 ,s{N`+㓉Ω`9[0/?To;\RAߋ&uMMߠ5 v9g?lho ?ƌ^uKv+ptql-ztw8x),cnzmsnjṷX=1ts8mLˋ:oř{H?ㄍGfᲸq Г̧7,@Wdz&CuZƳU n?h" ɕggt@ɪfGs 9|?W +bEԩS*ޢew9vrvZy)SvL_"sf;:r$3}k2A[E +YhKO΅\h9ZY>ppSqԠ?}OOyπ6/#Uj-O-'W2gXOmX+?]w:ovNl6 zKjEɸ_`f!`E/Lޮa1TKf6cG ]!yt4n̓[/H2[y,u q僅&i7~sŖI$*D'Xȼ# 5Ey}K0E"nY%4K^ΪRg[|)/"̃ ]AlH>McSah5_J;~KoYˮ53{KwOvo=sw+ǘÛ(dBv NhA\l#5Mcg4Cd/}sͰ׬^{.vh9x/8S{F^GWWN239lFٻP?U{Py,>Y$'#VByކذloHom.;W,_Y&=-uշ/KJaއY[ӶdEL•~/6dgYn]mQ] M$?kCŧ' |wXaz]Z9Z_%KWUcrjL+aZФT EFm%4"@Gv!HlQHTGYMSh8'kkh#&Y!9',qNS8 qڞq rm2=6Qvҧ5_ ?*s"G3˰#"K b&M4sw2Rv⪟t>6ɧͅbk^/b5_Ķ[ '_UpTUs*˯+hnt\ur;A^m(s~McbJ=HkH0\.>VlP5׀=:>t&007y,N/HyRvCTgEH|ksn>3ū^?i̓vqDst[VOvu sQ a6g89z_TEs.!u|\۵ q{gZ[e#dt7C4V#M&TU >lRo??' lVoц}bHfTtx$vC7ʼFg>mvAdKhPɦŇWTZ7mZܧ ~g?!#UKU[4kѭJsY]xS0Vk"O/ {?h),9ҒQ &Rl[0Ĝzƽr5r5yuyyk59]U1PڊF|ӧW3jk />5`b&K|ے< #(Kt2 Dwpnj9[m0V39WgNí4XS#?s%cu]a`{*Zwswk]^=y{njpHOk%sk(Փ-0LFg~p1oEȳEI|Ņ]l%ڃPϒ ĩήW+Wto8Zʬ6'MzwUljz(h~|3(zݱ|l\ṎҖiˣ0SnZyE6߂|ToO'\Nk}r 1N[ỹesuɀO;cl!M׋-l09:eΕ>#7 LsCGR'vQUJO`C\6b`ϋAK6W!J%#'9 kz8Y9`_p|G*T}y_q~ڬ6@e UK.s|ZXٺM6'4Gdqfm~A8H4AbFC/I|O :5OBkKw?瓠ɵiU)lòf6VF7m{wYIH7ssG~2^>oD\O9/ZFEI6I6$RJ 5D.}LQ dcmEd9C_{"]+(դG7Iz?;; ',:k{ :&0(M M6}WJ߮ ƾjzT2"iA^>z}墁~uQTխnqWH&[n6%"z\~拆ʋpt"qnDJ&zJPr5?=ؽzP_2Soj i\h1`,di0e)9'yx޹_iM^9uۤqu#nM7$>ʾMSүI;!E1Zu:|3OƓZ+:䍍:3KoQ?ˉt! 89u*}SqLxPCx=Ll C\)wEmnIg-:{4k8]&'Zkn #|[ZTꙎN0 Ni-iU||7ܗ' l7յ&ħ=5ڝ;^j01-騖(_#8(kg0k0CF}yF0A[3ad6Z#Dp"p{S;mX[jm몕q)}xg2zڃP[K^e9:Bw5JD;< + zC]m7WJɬTw|WZ F}i,7֘!=lF[~uk&{Qc§}4n=7t6׎;:כ,_[T5:K}2ȓMEvoAEn@k=<ݽ -^$6dCv֫~=Gt?OIzA`ဇYY|db&V;zE;Ў]l-GH3ةRF_Xc[WKi }/pǟ#6u&+=^[HKtAu:r]{ (=^~<_ %jfuv^9Dc iUiǮ(lX8?F:x ŐǔgmLU6`u3YR(;ۗ\]4'Խdݺu❾tl!%h L,G X~apqxx/c<1Y׊c{i%9Qp7{@(c`߇̩21K%;1Űx .ZA>vHcr %+W҅t$< Q|GEMCbFڲ6BKLST̆@`YMPY%LZ#@_4ȫ! $V,8}8N=ǎ-r;qhz|ҧrzjF{w,Dt=j+G@"Ҫ%Ǵǖ,>A?8Q=c0zptҁGuTt u['om?j^H UKsP [SeY)ߩ~A,4F]/Xed:uj_҄è.Ơв3ZsWcQwr:A:u.i6d^M8 >ɢLp@ 9y|l+=!&\ 4N4PAH]LDx_1-z}lx82ǰBiZ`ѶU3GeȜVXUi\r+dVn[ۥ/^MG3eѴJҧWҦtZFNX:{iSPWY cvvVu܁zn fY^X& Q*[ ;5ڵk\uCW\TWJ\UIT+ %+1lR R`_m 6qo34Jo@,|HEW!*&, ۄ=a_«9 'm$H^5_ 6Cp]WC^D"m֔/݉Uvg_kjol ?%n߻XŋREw*w$tۻiWTiv}.v{]w}8x0W}f&gSհ}'֏Roqy v+oD F)<.L]f1רp/ߖg4GHL0bN ,eꏞ|0 }^ /V\ غSڢ"{L=1)y.hm~CBm%x8LBoh-,㴘 mjIVa1Ͱ[?cgW՜+vz5P{aƟITVC~ !{ 0*/L%F\Y(dP8Ǯ|qraSEE؜X 8FX72([>,/Q!pŵۼ%+ŢUdӁVɏ.uM(iǜL Tq.`@{>'U;1Uy/P1/x6Q[8 WK,DN8qbb,D0eYg:5? b~\G͏f ur\"lU=F%l) Io ,X6&}ԛb L<v=öFd?tv|7~Gn6anHݒ/m檲/W[b vy(EiɊ1:f~vlkw<8 J!3 {@xt(z>3j^ac&Z:jO)lkz\-%]Z^Ψ..-u7(u#vs&^ya¯x "fxxMk^+G:+x+jiO2!AX_Y8éSDŽvjQ& &6#EIH؂`)0UHKEZ8xf (=Q2w9%/̗^NKt:'q,L>/_ޭ(Tv7-Zri1 1 !!4bBLCi1 !!4 !SDMʲM0HX8e0Ou]! N)^pDkq=9kUl:7J=~N)ߴgZR6/h=,b:l<nV8<煒Ǐ. ^tW^Vg[ibI7;Yzנu8wĜqR }[Ek?Qu!Ƨ yÓV8-IHKҒ$!-IHKҒ$!-IHKҒ$!-I^Z$/-vŎؑ;bGZHi#-vŎؑ;bGZ\3Y )z;blXX z-Xn@MW?1(:'^gjy"9g竏t-];G=bhx`-zcypV͍M=VhMQ4QT93ڤy$y%mK{6{[ctsЛf6mTKn$q.l6 gC.CZʼ!-eHKR!-eHKR!-eHKRq=S##LoyBȭǀº 7'}fnۓF6Ah>estb;mMfoF}I8:I {OػG>}Uy.;w)s^|v߹ .rC>WԮ]Qqvڵ۵b1/n' r{_#-HK1R#-HK1R#-HK1R쥥i)F45R+V jTBZ!UVHU+R jTBZWJg.Dw!t/lQlH7Tοe9۳^;Y{oOz!nQzظ͇2d4R Ƿrbc\ͅBn|t(Y8ePJ sJBB(Y% d!,PJBB(Y^( "BRP J!B)D("BRP ok3ɱ.>Nm$=_Emڿq̜XJ;v,-)++Y|˗bRX\ͯ"o~hͻ|ǥߺt魷/%| yΤr]Q9|Бgr%W>Y>})7_.F7֏jyQ]`,v>:K;%4=$?uĐwMvJKf([t}jNM/Ne&#]2F=K^Üjj4 H0ao1bBc8=zte-ke2"pE>AIߪm΋}g@4[1iq;GvɨF3joţ.J񎖟덞\@$:oLcC瘩CP tKutǦ1J\HQZSpj|hԧ5xe(K#FM KZp! 4 ד_O! t>QU`&t$VJܶkzGDXJV:̚LקeȤY>"íKIm^GUSKŸ謷 eu˓教ɴv^5NoJ[ՔS/<^ 7SS_^<ncѦCtstmxtxu_7F)rQ[4Go4Y  NE=g5pN,[yHԋFUog+?-ㆲiD x2ݰn<đ};b,II5>F2k $Wgsj>$" z\$g4t; ZO AGNJ9?o +y?u_!@ߎݵ*B=}R1޴|3Y ,Х VnDKpe|ӫN!8,=_K|hVCH ;[kiy%6S8b@-\ZZ?Z4-bdLg#FMOD>;gdtUrgm֟CE`\a{ WR1jφj:َ\%YTk;p]xշv䩆HT|ot=IXɅѡyK<-EK lL$^%U՜E?``|r_^)\c5aZފ<2r/%%uHVM kKzmb.W' +#kM:Cgs\S갱 =T\Lr Bz=\dzvp{Ģ|,Jȕ_5YrVb>N&L^(u{-?h^9}D A C)_gZ^=<⨧?bnX+zޫ퓱NW>&.`00uE؁TnY9:K ܟM1h <eT7~~qLt9TқZXToY^o ˢ~#H<ỂH7V.`i!VKz7b2D_ql@[)j ޡņ`\чX_w^bzY.=Dl$z'JmLr[4kB:X(~e;If!_?k|2IϨrݧǴ㫈; IY1T!eqQ{rརud:crU>3ʅFZ兵ue{Z72T(M0H|*(mdl^T]kw AG"I}qbl89)'%6S'l_)M4=N' N'= N'0hGőa `_lh'<7N4#y Ǘ҉3hBRo2z9sˍ^k/4c4'rEٺu6݁t~@a0A&&, /eMP'f͑rZ??)K?w5_n*˵7:A0lW,{Ħd ٚ ֿi=/] G3.b3gdV)}bT>5xS٦}l{'٥Q]mOH?/6~nv m#mjS٠8m fvY4v, Ne5S)m<=(MYB4"-y 2o6/Z[ϋNpCZl#Ħ xtHHf1pNRgLqB(|*X8s3`P Cvռ2S_).-;@/Mf 2..]4`u{SwťKl|Z_nm&A0*alҀ.*\F] Gj2_ϙgҮ½A}@CwuܪtKn߿Me'=Xݰꋭl`%<L3ǼArg~?H>c?q߿ZI_hAqhHuЏɎ8&D 1B[b-UvaP,y?UKyvI OvEtyA"]=\,X9Eݙ'3M\\_}.EJ.Պ֚WqJZ'dQ-FL$vG] S{ j?d} AF.5aBj+Uh;[S$|z4T%nAX\  <~O~W^Ԓ5qjydș7/gpa޽.gr? ,O.X>pBqłyTp>=~\0sHf# ,t8oCB|ɀn[IԬP%g\fd:y-{lFF.U5 .^Qqd|L8w~6aa~T0܅0crFE.B_3]!Z:$Ѣ#iv]1syr13WOlUapXJTVJjpq34TBꕙ,-kq9( \m7A;@՟g,G7@O ޵=`NzNWz32@fFӗ$^RQa[Q  [ 7R/[95P|B?,JL͋!Z(SwVd]/Nfg" `|6 o*=WtV!C6P!޴ iA8)ǟ ٥ǂB_oZGQHkg#=él|"źMԬcɤCҙrjgpRJMpH"A__^3Dd.bUBCŞ7=/wLϣq9?3@Y!;U6c~BO l{Mia٣E٣EI`(\4@;,J$fu6-Zet?l"7glgn*SA|OZmf*(i#NS##110;-YE]$e-:]Xܱ]VӚSɈ.]C gAe>{B~ɚYh+6,0dPض/včkmK,/}dx"]ç<^xBR gRkQ*5wy?AR޳S2FTz@YPк`L)ࠁ<8orsm"[vtlt/9p3=a:Ur2J\jP"bbCㅳjb7N6K>i'yɣ'x蓓ߓGX=gEl{۔TYwzmzHYh 0wp! 1A_w 1\SLT F_W+6^2&Ű],kuz zt1 l;NI2 CN3h1]-7BVX zM78x}^/x_e-*)"3VV)W 3ERW ǥOI͂}1\Y;x @ڠ~67Pz&CY?:kCfslͫi@+N:O]&C\Ŀ#`2^HӫNX5ROy鍫)fc;و]v 3;HT^ȑzE5n+KekFZYt}o֘V*0%qzmzwO7jq  8m.Ɋ@ v)i0u+ƌ[*AjƮ\9v̊c:_25Ll XmA.K[3lSYZŗV^KxtP? K)6a5QP3hu7S͋-~orc1rd,P/!@}=2Ds};)`7躔D{A#&+%/~m>' "ZJiҥ K /]ZoD߯DߴIK9bbeR.Tb2K!n+;;FGx~$Wsd\}E/8rN˯_&>ZZ| V9g׵D\f!ԇ,ezxzf}КsǏ^dX?g nM5X1a֑#u"z1_'FJ&1[oXA޲p'RkQw5F/>J2y!v[䙅3-!"ZB ^;{a$uuLucҽLUnPw}tPTޙ7K3Y|cN'IIk̔>r~76&gݭ18u|wzϔ&Wz$ij:oZ 4Ѧ]g ÎZb "4rB[ "pZL$[ `Ks9Iة`8#ϮEg4Kgwzo8PES$$Yo =٩ŁѶګݠi 6lfbk$S.EJDZ#-}%=gZ }rBf-~Jvsْܸ" },/UNlK,ɀxPi\#VQ"!%Qm L)(^G R6kBĤh c$%].rE*0 R)>B-qB[ČsvEjq1ddB+hN.*PBEd݇,о#%[y_ #Sa,+NڠBQ.QE9e5ܩNJs仢-E-.h3[mŜ¢aG?xgUbg`5 ֗B6%ږbәͤ?k`ȿOm䍈(ߡ@g2IQF\8__ʢ't}ŸQzU c셆ۛE}3QLo*iDtrfo>*"f]0lvuQq&}GLxDo_:7ܽh3MDi*IƀFIj1Ln*a- 24+$(vI 3d47ȢMP9UB52 3bQ57 QH !MA)@}Lb$1"0BDT$KQ("@&$Pb!RlH"C AA PH %01LZ "_J2(LIB̑(R5yP,BgD <,<)$6ceKgnEf;eJzT :x=Fb/a\_-"sFֲYȸXLkzaa},WߚCSC!.t_xela E9"r@?]ԭSa,CfyaTm;;.>+-nI W" abRdN 7$ZȉfH4Eġ&VI}ds`b%9b@21oHɘ6)" iD?u3>$?M#a`s "OU/ے {$?5DKmNr-, OPyRf+:T 4)Ki|=NV υ/kB2|ߔx4=Z2D3rO>p,?{!ƛi{%KD7*lɔ%+}JO< Ò$ V}#)={Lͩ^C.cn$I=G~Coۿ|)=+*1O);巅 !iPG6ލ҈b_rSS5U^.'*R~b ]Le.]'L,C.Y|y L``%UO 0-to1ׄ ,GW-gS%zj񒡽gDU?S8zz {ߟK[w㮜|7@$#@ldF-S$:_F+1<=$I6Zb-1䩪%G+.S5oZ;KZ3ߕ3a >~;&Gٻw^壞i'iP*B.$``!&?R~c1-OTdE,a&[ۄ<,`a0S[= NIب+(XG\{*9ٛX̨E8V/LQOP?WphH0pm ] - ٕ*# % o`3ON)S:Ie}_1+}twdÖ.6|jIߎSaap x5[<::B hFeq"cdQ4C ka6&Ȧp 1)fI~ϴa:")"N1~ӹݶt+A?$(G۳GyK~-kLJ:+ji-B Exzia hRB^K {@^ l7kޣэаH)( !f KF3/G6ıta\(W ?[%&+[:'o77I_UKKAXAmAB]Qd.ƣMkPežT_qq(\edPq7L)^5ꑇ c[Ld%" 4<f`3Jї*eIIifm?Ƈ_?W_=׏/>VUu "9sF:"KAf/d{3ߋߨP!QK3~8WU(T;mw_i>.N_*҂yqLU^~`|!9BIHiZei^l~`Xج,7GFE5Ma a9s*-&ab_N reȧ'HkSo/aNATlC0gÊRC&}zwfxb:uˮ]gmVfҶ5-϶i eهl7!^Y`7GЉe'IL'5DNMNj,v ۸UȥB$; Gr#!gCH;b =K;@Ȧoʥ48>O%jo4x>6a.o㰕cGG l鰓 {/?bP5@ 5D%M)!$ 3 1c V0̀T186oREפ7oHVy:-bm]"WwVD1E p|ܢUHi:@a wl~R:',ء̑hެ\U1GcwnlUYN~[h #'2GkZmp奢і4S`\`q.yNl.-kJdx54K`YM @~s ̓TYa`b F?:'RzbG:>B/$FgDRD_ɗ&XMko0yҕ }D(`E,/J;(ZEDGqrYWY`cEABHP)80B,3f͢;KPa_sJLP֪_j%7}>(`+5EX "׻I餾);,yM}XX%n# FY)%bP`g|V`_DǗç;baO[>oN$*U-aV򃮃ifk=U萗cy6[!b=$ZPj#5c-UJH}rfkչZݧEL!EE8\͓RBRC׿@^.)! *}S& QY,mA{QE+lD9r7ъ*HK+GwPxH&`$xs ѴetlG(1K;, 39Bg ̓/66seE5065#^?pX=~R:Q "|T8L,55>xgIF9뷶kxɌOU medEWMWӋb#IMr`CqhCT1߉Ƥtۼ 1%f$e;MIBc̹ j5GjF[A',{9MO4qىHOtdlBQ@FĉYwK战&Ejd(N2E93HpXNr3H^!rҕQ3dM1Xl)Nn6~s؇2.Ov2OLL%Jw[<^}I](ѷ/ط~sq߾ ucK0QRCŌvL~΂{wҫ[gm's?f1Бdz36]>#X.m>0#&)t4~_,yĔGG0⶛Rs[]w$ R9f'hѷJBaL>Oوd1MnDhtDTƵ笵-]̒m,eae#1\l*͊7o`eeD "S$Fu4Q s}D@(D%o/s>:HڴӫV1 xI.ݺw -p='=3KH Q &BL u`Y<`t`KLx3QMvQeL l-;{nOh;wޥ+i/&4"t۷(H_BB߾ÒY]!tedY`U5I]M>G:  U}apABZ^IP+ԁ@Ҡ9 [V-Hֆ#08ӊDЯ;Ǻ%CB %Wm/k70K9\iy|81 L5ak!Yg?|4Xw˜d"& :rb0oLuZNuS3b,70XNG:6|L]{LdQ6dC(W;\< ;d|=')vlL )4nܕ/qdzTgŕ *Ύ';mgFX_oMh(֬»bCnaZfH  5&8nqФ$ӧU"aF ҪB oGk11 xRLa-F3=4tl}VO/VWʹsʧ1gaoV1qۥv{z{DzdpJ>C6on60m")K䀠.i%f #n ۷mjagNH̼Y9貗vR.у`f_>dhC3 9;exR)"m+r9a٭ wȲ ĞM쉣vlbIZ꒣d[ 919J#;r ~~|\;sm2Y.VGTUnQԞ<>89~<:dA05=zV{{8ybVN&K7 BP( Xtdɬe|9͖lGil̺V.Jf3k'g"_\ `&}NZ3'г/ˡOw>.ӳ {׼* 5t $E1e#D:RY@ia=*;[l@  ҥޑ"Uz&DXg{ ៹w7 W3ssf朙3gbR/}.{=x$wTrgϖu{d識}h \]KtmvE"y+VNJ3=@tCw0cqi {G1XF`Blƃy:jc! ר.j,i-{y0;Ӎ3_8OHaݞ:wҍsȋ e[$g_Pf1)y2z~Ԟ wr{WOf%8lіc0{Jggy}-/HbPp_c!oʨJ2TQgȳ,>V,$Ki %%N^\Hj ǑZ f\.1oVy;;.QcD›'Dņ-} kwL"/ұǽ6x,9BkCuDV鷐4'i] ]hL} g4hʄ:T ރyx r;Ǯ}j&DU@ËD= Ao3/J\V(ᢆhi6ID(:+HJRfP摳kcSg|~ "']! ƖvEj(a{cO97uB?|NRڕ2¡'$kYH͛aܼʔ8_Bg|:UQK++zse8[^Aחb,EPzŹx6O(RzZg#y3l :.u#IBakb1#HK&604P>ȦqyeI(u`ヒŞ~/dz]l&ѻ>0*bꢑEYb7K0CsL^^Gءr9=)- œiw.QP` l~~xř!JOJb#1ndvly2Őo| a `u߀'}{>{9^D<,j&g5^[ 0#0#?iEӻ~f:Ypkx*cAN5T׃H'.y`ΠO2:njgЇُ'3vW]f[<0IA&3Y9`b NopkXFy04 j㷙ᾷE[ؾg W0,ze&ŞsfV7n N(dkӞS~LsPunɕ'v)Z(gJM W7N W{x6=}="~ m%$ q.1LQʎhࣿG/߼G}3bQ#c|DO_س$kD'C,+ <:&c|Zb'@BwU0Xa!x2W ^fldd `'EDnraJ6˗hږ-VIXdlSJ%UM^ɯ::D0MO-stdÉc*P L b?«N'`9| 6Lspס#ϑ o쇋wȫ(ғ+8_Y|!C ~oyh맸NJŠft<;pU؛;*?鞈LSD/\  ijѵ+^zrrbC]/#4ø77-W{n[lVV,Nجo9\6*=z{7Pǿ$~}{@.@⻤GW{ ͫh+!& ٍB$m '>HgIЈD?$c-^ATC 0\$-ƈ(ϱȍ^qՍ/ AY _@kJr)ɝ:'fcM#zVĜXc}(X}oKNxO,9Hѳn]X˓M׺ PzFE𚶜<.о^nF8=ٴON0?%%o ʡV\vLOSN#*z`ݨQSNHT/Uh`x`ܠ!5[q6m2 ^vD>݊ChH$rlp"ݱGwt#6bCS9gvVUUVvOjBu5r `") C??9 < ;9;;o.#ǘPvϞpzau(,WR &dl6;e1c +fl^ض`re;DmxބRvKR3{pJ]a/:nkckjL5`]0U]59n ͮP~4#z:!18xxI𻙛@ ᯫ͠n60K`2~ؿDF{k=UBxEyf /<ݯv5A NqeEVջa|Ƌr%^u_k+.W_%`+-{gB~=9w֓zjyO?5I^}m[!ӟzzhp{J [WW n`z^^&H"筺 O a{իWrx8O/v|y/ZÏ<[f*ӱ:t T{t" WMVr m[dpAt:v/Bsr0Vk!؃H5"1nYA&%2p*d؏_yMx?ᙺ/(oTXP"Y3]~5bǗHO7BAmL |iް&NJhNi<.a<@>3~Àp<l sxh`S  #7ຬ'?`3PLO5|7uF2}f>BO1ܳ7׬ֽ;K41;=n`S6>D qU%چg]XӯoӡJC5iR^>rOjK'O2مl*olE@FNθ$MxG3}YXR*t+|4=t/bPTx]!Oy<*e^QNVM*{g 䯏vj\'s'yfO~+Θ56g<cT| j4[':=l#j]xT=F`ЙI ێz Nn3;@w=\spgNTz (5[bCSS7l(zO),f5a˱ĢCP'0C[EkE ]@% VdcfIMj)Di4a:v,P~ |`#lS r!"ˠ5_ rï=7ǑD,+)as\N0BԨ5tO" G4za7OMd囹d6m[61ISAswo/n}̰Ul7 @dR21>߿Ro]gՋ[UnG@&3==G8M4\K<0?5Cbs៶Qq#D~8&>v svO0à!hBT3ZgDQgpQQ);ث&#hЏFl%%%.xw߭sIi@-..--.vNw(*)-}w7uBsU3IG﷓@G|J$(;߮^I ^1f t7L e D)x>K<` @5(vA ANC&^AtcK:`g3gfD1{ܕ JvNƟijA3Q楂1Md#T% -*C9Yjڲ^ 'k=2rK͕\6|FKz44zd76!QOԣ.@LQ؞k+{ Ҙ=+5ST$| $9`D87bãIW S.2z#G h%po!ހ>D.TTJTUD31XI{UKW:N %CmDbѼ_aĊ؊DhtO Ν%!Zd@|ःw$v=1r ,klIk9~ԓ_ZɫZ')-XE%ƕwEJ<2?'+@DTL9}Įx6dfdBA }1x$g#8D40c$=5 +*Xm]0tHq4f8 b+] >d9OM4?+DQVx\Ml Hm„dJ);.ᗊ̱ ^a \15 -Di⥩M1YAL3ZZ*sv"IʥwVy]GF n&\k(|?_gd~6i͠QY^h6jwx hM3vcZBydJ' Nп9;t|ȃxz17;7hnaA7ԎOQ;|D>l}jgx:Xl7"3FICN)|%:XnkVoG"kADQ02bLiyMxf{YTLDW:!SdW, 7]\iqTHh6:݅7TGJ[d~YQUHFI8 XY3%vE_R:5rPxm|@mp{ƻ_!ޔ'3݄g@v_(^]@b:f=P k`#Nqx-Bi c8V;m3d܇̌doM| ss{~y\ȼK5"tӇGbRB;DB~S=ǚa'OkCm>,w9ANEı3 Y~' jN|{C$TKUK@[1%?.2ߞj{OXSA伏 <=c9o4}f6No_)ZlJ)}_w w Cb`,Bΰ?  %֌Hÿ,Hη~&U#Ej0"i4Pa:LЏLޗ{їퟺsO^<<ƇLO}h5hLR]Bġ cLcq]Jz C KfE:hR [@k8'cVӘg;>LDm~0NGmGןRUoas wyr͗K$%(qr-]]mooq(L1f<=Y 3х{tY4Q9B(KE=x׺d}[%fv >u1%yM:,\LRHY>\?dco v%DK7p:ܴrrX8get tT5zç?_ K򋗬hKU\gĽtmLGyA)8I4%Cswzkz>Zxy|JWy׿7SKeݸ8C?{[_\=* /mHON{d3#x7oFZ̃Z.]%lrmM_ܲ딃 |/ӪHګP)\ &ǙDڿs%8v)xn\[ADF>N)(O k s8mnh,*H^ #I`!hH%pJ0 u (NWbK_l7 8F!H'S` DO8zr lS`Å^!s}({OL{h|`)Ţ+QJ>p Dn$Wx4/.‹|x䉽+3Q-GQ,X:N66FvwxC)٩bX8iϨ~16Vq05Yδ ՟AR&"ߟ0`ČQN|T i`PG|$V*|S?֦$蒓upaBrBbQ"H윘hT/fyNB=aB`xbRBb$9 q6 U }}QBXq1jʔJz}3{ gl0;aw3sQ_ XLL&${JXZ4@_C1$G.F NŪ"&OǝYP~ ۭD f"r$e,Qc{FNߋG";a( JC/14?Hg _&5K, Cp7:#O_76h=";m|Uj~:d=WYԹV,Ȕ/B*p(Oi{&z' ǹH9gp@ V hބmh&GB's:+Kf%VUZ2;U_R(Hґp:$yQB÷ʡ71Vݽ2 2xu19#!3kvM mhy^l6M{h )xId:J`I :eV8/AU` ԰|@8]-H^ai۽@Br πd~Gץ5w߿[Y % p.6 M㤲qʂVPj!1 dUy;8U,  7;SX6qV{>:M*( Hj&urs<_*M_In^GN@ t/zGA~B0HTgN5;4K Y&$Z@-zvlT&oݺ}))s v>RE4""8U&-!e; Hcqb+*.b5 fA#I>D)>S>C 87O# WPM`/]ORjbo) EJ1g!omΒௐs6Nl+FeyR eZ.ftx ]4JW~= ?{qFSk b2f*̈.I='}ZΆ?~_ޠ>Jə!ybyEt}d" *4 gT g䜫FbMlDk*&)t|i(qz،$^h P߂ ޺?4Ym? LZFS~MrbȦ-zEUP{ 1D?0% a~ec`7}Wo{pZV=Q]'P;t@8K̮ }RU1 (e5?2xRg籶thL|d; "u:5v/tlPagg'W1p63hh$&>8l~` >(=6 _ _;ˣHw5g/e*=a#ؿl@SCI_g\SHbMg. FQw1oV䦍`r^ /[BkSq(' {uI?Xj5o,ՃCk1}\N97TWwۗ~oF][.[f E*u)>lը ;Bү^›}c6MM{S~FaݞSkEt[ߩ+JgoU#[n>Su.~dV4͎*pk+v+,g%ڕ̟HؕSOp;ڸu=XO_s|;>֍cC۩}لm69 w KxE]qC /6E. q‹30 9AřtG>P7 =oGE ++vBokB&k%Vg+_Q}ݷe`>yC|nSޠ7 BjUB|E@^:$ԋ'AwK'%tqw@)'A.9<% ϟG@3$.IN~)Pp8|cܾt;f}rXڸM%Ra`%2 h~ kºt9 5G %zbJbbKҘn/Ek5rI a5..3:N/k2QHH+j6-O 3IU;Lmj 4':/QT4ctT6',rRTtD'6C h=4!سURӰͻ``D`$bt>! hM LN| o~ޡ\8S߼ǔ@zS9І>%vix1;gbTAz*R~(d-Q'N),O=wԻG|4N$رn\tG  JU`~iw꣱?KE^9UW,]A'Й_2B8b$]?Ao,>\$w5z}VixBFucM QPeL&wOz4&y|I}L;Rx\E8G&X %O\"ϵ>$>ɠOcDxc@kcP,@\쨉R.zfg -~[Ԕس@M$jp`倃OJM@-}uΜ臭sMgi}(/dj tVRWDe*̲͛Ag4gS2>ndcqZܨ#y@ PNmWʝ)[]/|aV/Y ==3e93/ R6a,~:N/ @`Y6}tM6a\qQ_dWiRץ&;^?OCYΑHN9}jVW[;7-oSY6_M+@* wo9wmijsٛ3D>QzA;tou؜-#DaC lMS3Oz ^o\0[Ad#no=WAH F~ov~u~b^]E~s| [2?`sZnt~uzu< <Cp-爉8?|T@ =?F.%ThF·%& Sp2 NOg'2 ijk+pTLiX-S;(jk(R~gj[M3- d{ksӲbZF TȻU1dk1+ Bs[{:Ti4^ڣE<@z,EUjAEeoSdǤ(AH_L:눁+A/;BbR^'C=(;nfըn3*sEi$=<)yA U]fv^$(_g(wZ42I%J%aÔq^T8,e_a śg՚2z2 ceJBHxY[9UA5 9#-yDv):kф`G 9r7Qs7—6"Ce5<:]#\_T. \u:SX;{PJևޱla} bT.=Jf]@ظA >c>IfJNMKKMIK&$_/55-2Ș3P5$t8&MrK&ΌE`I.Č Yr;G3-QEgm<KMIɩ$S^9yNõBp:Fmh00'p#mW]Ƥt_R\Нƥ9WG)2 yJoVazc^OLlWl4֌ b4Z;3 Czg{U@ ǟ{q2PLM udpc#ټژ8ybS~QASWg-.Nn(0QTPP~ TC2zbc<^o{Ep}Y}VR-- >2E 7uH"92ŷ`{Ug6CGcGaAA˦}mZ=~M_შQ{o 2 oik+J^3;'3-1`Ϛǭw w?hd6im-ď,vdv؅h/`ȹUlq0"HxLԮ?ӥKA]bP!ZZSԥ؛ Ыρ YpI?/>)55)9+sIX /A t90@k֝jܝh$Zzߒ}א9>iraIH0gݝ Y7,΋xܤ6x!pQՒ[} 8Gp[s pۋjS30tJƍ/iw¿[%RFtb7ntgFj0ߨ듹ś7@ ͉:fYf?Q ׭fAފj5Ch]{W"5{^5# x0{, \# d%%S + .}w._B)h"e9l9Ƨ,x?^=" gq§kke P,aKrRʭ9ߒ!uwW=}%>^~Dޫ|.ovҎoZ&~6LozՅ +YIjXFWrU[E2א#QU_Ab\1&"-+LCMS2":0OFH(fwiQ(3OfJ_ֺvCm6ଭH@ӛp˸_:ϣ`@ZZZ]^>Ѹ6nݎ\{>`RZFnݺO3Z 4u@T","FN^Y2{2m8e4'(ٺuXX6խPo;8/zb}w1m#U!ʌg|i[Z_#^m Kt? cQuHv;% I;whkg \Y*\UvvO+,M5hPKԝ\9~d]L}"Cy3rq 8c|,I nIJ|X8o>y4TOG<2X~u_ [dv70( ƀ2xr|ҠͦAP|o܀eZi 654hPb?P`:~1~;-:IVtZnʘ^"!YpB9v]1rBdzw`>@ɀ{7i9(;gCօ&.x7xgb8Hk֧p$V 3g➉\ p`X ҷ͏I.-u^8歷ok _@8/7yJtp+E,Uj pik'\ӻl4"_ wSYr.{s2tVǠ0xػ| Vr6n݀26pp )Zhб  ǎ< _ua1<4fjFF54r5}3;+e \[O5֖N"+R3p[dWt$o]BPy8oRul:}tsDoT$ǫN#`r෷_q 24Y+%rJ(X*d `g@ r*"(\ƨqGivGt{X$oژf2W2fìo(#WqP0jJ٬Wfu  5yzipoњVف`rp0JQ ׿#cpT"V)v)UFY' <gQ#H:M'u;yQ5F'n#JVɟy|11#y=axm7@n~fe>Btk=:l2Ň j[[|C4.M1pbUS.+%R-(a] X§(U_7(-ovHJe:"[H2^SP.a:BDȭ5*tjߘUJ-FLJZfyɩ1V=cF%Yq&r!OQW&lEv[T%Ih% *L0NR#CYB VJJUXJl}M-:86A"K#V" "n v &sδapj$ ozۖp kÚ ӷt˻ge$'#$-WC%q~nnOo05ϏzwNLt8TJ<Ɣ(嵠g2VHh, ](UWlJ눓tnsj\J~:9J,QO$Gk4F?B<`{W%b$]m3e\dUN{!5JDhڄb&Jz(<??.4#jB8)c 8F\.v90ǽZ-[u8MF3w$Ƹ&&oh <Gf54/*r)z4ZGf^1H/&J.K*n|T!+gOYjIE\e0mvM9]'1$obM_ovyDL$@}mqپyp?Vj$m&xĬ wip̜E%lm`%H%֨14uA C,Y8'7zenٴ|GOt|yI\f|b_OFrqEr*4JdHerTer*2+2V9MR_se/BQ N"eV * > y{a1/^Sa58D~R ^ ?!JHH~vJ rsW8N䏋/Jn['6UOJ-Wej\b4:p iY"RѤ62ҴI4a=+}J6Q8E-.pu4읭pt,GjS+ba2uti"IVCgrɕ)rL"ZLm Z$@( SLJ@䤵0^ͨV!o5 iVPqVOS ) hd yz2$eLHH'b I i1 gVP Q2# xbAT m0_ yf?glb3 n !Z01a6*'Ui_h]ŪeO(ZOelDfkଅA<`i2qa!'PZ_ؔd+?FC˅2NW.t9*S ~2+ŗ#(vMeWy`?u|bjD _N!TDJE3;Oc#ѨIt#ӈYbbbHB̼inh_,Xu~Lr8+FfCv*96t˾Ӱҁ 4?lR)Ϻ2{c/c#b6VJۘJy=!&oZ[4p)k 8 1ԁtkesI iIRZTKv֍M华RZ.nJ1}i˕,y\;{E&Xtu zqRޒDIq7>oln/.cʍV5_['Mkc064!,UoIFr{.,@)jWEK>/Kb2[g jE%7J桞:dhXh|E4ƞ<UEֆ~ t%!*K Ր[G|Z ,x45B>3ӮXdc^ Ãy`Й X R3ⸯ`2` ⾈oF^n xur<Pzֱm1'H[hkV]6)nZqdK r:dhRJ!pcLt=rwE*U1B*ȣdBgi0֛RZd%7HV"'C͡y!b2!~? %%Qr)$)/Gk} $Q 1R^?@*gs7"{;JvvmlaR9%i>p:rDYZX%(X*"RJBkC+|F>Jp-Mk解4 Wr0"GjhPSaFwK!Xp;P-騵iwҰ45A> ըA$S(2q/?մ[2!"Ԩ7kCGDEOn&TaE:F!Ïyشv8ЕJI58 b4Z]lFo#'/b֦B6C! 8 ͘!-,-Bq1[+PZ)dQT[w"Eҝ2{SWB^Y3`p9xB^* .eػ f//Hv\[&WzDo A?[X{̘#d(-gQc[eJ1FDOY}F⹞+VOk-~bh_L*UrN(Qm@GrgRhLO/ Z*W7]. ęs+qhVHj4Zbu9mEBʞd+Y)WXMpȰio]mۆ \&vU&z*L:c)_*4R!#Je 6jur1D1}ժX*ȯ_ߩԧ$(Yx+Z":DJk\zD嚍6ԐfsgǢvzINVS>^ , 텅q`EDzI'X:zp%Sop58rXI;}:\W_VP&u%|ݺu [w#x $|x塆ud:0$eB 䎏 +{P 74y_^R{cy(q1`ze (+NX[I7Jp:mN^vQ󖈖?r ߧë lZ] \i+Ӻtn2M:w-x86BBaH] 0M/.)t0ލ oZ^R\"ܘ" ,,6q?_HF‚ mR٣(Muȥ|6NUA'U)xOa'fٳgCFzy$ ?&WlHD3MgO5>z Ǘn~ zI<< 6!(< ǃ]x({򻏊h$tZ<)5M*zv1L/RS)g_ptSso<.[ToSSep;&nY!kb%Rw̎V5۴|=)]"Ej*)T(ѶĤ*C&.I#WYScN['(PRJ(sܙԢlR-5N-אi޻FYFՈv^Cxo{U{gG$ TylYIR.O\GdcECRmq538++R% A䍍qX xcR&#.M)u`ܹf- ?U+{p}/QqZ=wiwX6aYKt]< y%Q}[ >LJuHRVQb UgPKE*`jن""X-fA- pTRB\4:}9l-p(^'Qo1BxE! q*d5p DVJ%5z*2&YUpj[QTH2ajx,sXډb2a}:CL8x%GV!҄j7)b*6*%r)nlJ1  FiJ([(iqFWŠH%C[èBu+$,l`(uۿ1 s^*VTJ`HM:ɲem[jpJ >ʍ?< p8÷pvޅqo[hom؀4o4$"ߙl]PR p{oGr|#f<\34Qucd|!رX~>t<( uchxQqGpVáJ ?|oULYbp LAy@Q;r d%GP&L??GXd}ܻw@݄\OQ:ڮ|7v4vw2*HY[z$`clٽǯKA6.(Bct'q` yQyMb-:7J$GJ%mzNgoRAY.XtѝH?ILMDQ22hPkij'Wp)Sf)ӝ Z}I+V]i%zm3]wzl֔g(Jϼ-ZVnI>71DqaFpe Qw?g<}u7j vwu@@8W"7c [ +`"5%/B1Bo0-dĄ1aEjXɛO<Ӟ]n27Z]1$#exAjoU`xJreCQʝU:SR"QFjz=X%PvDjI_00mi7_M#b͊NAa&oBdGffX3 Q _L(2cE^Ǩ6~z/ȻtX&dz<\nK>c:kNWGg+y5vK3d.+ci\:Fu8Ѽ]LB?Ow;`}i;[QΕyt;[@0%16!&ѝϔbOIMLINд;IIz\>YpX)QL(9%0k@ ][txﰼ$ACIٹüjIp{IYy# Ocraw8Nia"'&ˈ={H6 d;f <*n6- .ަ{ Jɜ*ޮ-coShK Ӕ4eS? )9Y>wbr:?CpTb0lR RzVl5 ӛ^yQq-3څ p:mia&krJ G\N%.wE*BAnvcCG=̛~I>q32D3TossyTZ u.g^Nku]ǥtQ?˾³ݺ#8] (D"!c_S)"D/Ds_C,tqP;`p)|;ZNɰ;7'Ho\dUߚ=Fe׆ ;֕=NŽ9/VˏjP$WaNÛCiH`0vE5h:6_ji;vHViUH7a{ZpƷPq -2tמܶ dC~"1^,T|A2\jsVtEIfd=Ъ~ɐ-Srm8X/7^u;r=&61枧:>16nV+l`wS&+m4M!b'Uu#1!.\pU#;Q DU4FK5 ť[li |+!0j%DpbԞ(ÏGQND-WSI5i6KzH4=X͕hqFQҁ H E(BjjLHi#⫅"Ҥd4Zѐc0_QNcwZ-IZ3)B(D,HV!RkF}ш~EMzݮժy:Tb)F8ܽkbmvo<(ĜF:t$blV]Bllۣ{ry^.<uؠ9Jr\H D)K$z!#E[L4Ωv Bt p iL N!J+ iZT"F`HbeR)eo0Y}jQ|8*eyI,橿 t 2HO(I;VY|,*w;u6XCE'QA S.g3M]ͤS}xkwS=&̲{lUl g3]`֭`.0gTZ}LRsNvsR^˺s{a#WźhֽuQ!`3ֱm0{ICQT ڛH_VA7zP@>@a80;~ BG/6Os`lxƗ_BvM}.cc0.8ػK@("D D-6]95)ZӃ}s ~ ?/NJ9w{Z /llܼPO4EnbFᥛ6P %B>q<2h#W~GxWofւnm74"a0LI@JO UR̉~_jI#('єH(dNNlNSSp>ި@WFl郲(d0&'7(["2EAefbDR?FQ^@%5i7lDdMQO"dŬ$ MXۜD/V8Ou $tikkkG`^HgsmIw*Sd x:YAE.NT['k*K[k0 %t gD870 ^_$w?>TM D>.vw #ځu0^b{OHP@&NjTv cSΘg05u#*eepwcL~oP]Hu;ȾBn?չ#Ą-7(' =C~`v@654wh^wI4s1|>/ATPN  * wfsEfĈv8{8,$w]]K DhK\!>7X|K@W)jIkJ|MG~g5#~V%kAɊQ2ͬ(G3ed1*ڄ~@bT4 k fHk#A(Fb$@)6w٣L; 5i9F\PuN5dzZa5]d_ n$W c3n.)73'(E\ 7̕&6iN*$5$?';[?9,ĹII.;R ~,h~3%Ze'fZ`θPB6,p2l4I 5!!N#*4M0$-d" #zk3=г=г=w#0z$;ėÞ(A =}szg1z6gzN%OEQhn$!G"z9 a"q1%U%'6BT0NQ8<v+8O:O ?29=ó*AѣTkO< _^"ɗy O9F_B"t[3DXEF".#n<%N߸t=Nv5^"^VVT趲DD߮es'زKȕk+K.Kʊńbev*%eFͽ^v[O.G^AAڮh.}ze음7o0sw; EɒA5_@/P47m> r9pv hcA,D=Q GNj+xn\dAm0&to [ GmvcZd AӶYS_]ba~F~nJc^FnGCܲĆ96N,= 3E}Uŗ$ _x/_|Kڳ|W]ʪc. RsZyl\ET<[\&N)NoXJB~])3e92,ѹgހ'euo_e.,[9ew{,:9P>ܝYm+S.M96 AGO+*6l=]K~bG^.p餔#6:VP!e.gn`B^nl|FtnҨ˙!Q.0KVF:a Yݧr$ޚZ~tyeT*נRTwZCrJ)ňV/dKذ-hvms|zߎ% ӣAC/J:/^3OۺbaqIrQֺCg%=)IO$=)Hғ"IO3)HêlR$I'EIzRVK\|RIl֟Fuۑ[OXY5ȭW(3O#y ;r)m`O~˗jp;r5ޯnՃ#O,ѯvQ 'IxwN?~Zަy[s^n˲sqlI;p{l{M4! wj/@;O,[vjL8o;,#Koc<#ŎhGx#<vG;£юhGx#<Q6Y6ŷ[%nrǠ1mDኻ`L!d(ݥwHZIEjB(ALAL FS#bj15AL FS#YgPu AO=APLBBC@Ky=u zH [66I N@dN U(pYP?nczs=b59yPw犺 L>[UkFU:UЪ1p:>J$gP;2+99;A* b"Sr<=ۦ]vPKk###########c 7-R ņbCuP]l.6T ņbCu,1i0٨vR:Id'gܳ#gܳQ(l{6=垍rFgܳQ(l{6K~<[+;Αmw/G&G! 2hw!S z5'3=3Iƻ֭O&UU{jGڵϣ My\a^naan^-c1@cC, KR`@T X*, KRP^4ByQΉXJLDT(QQ"DDE%"*JDT(QQb%rcɭ ;0G8vpƒ4eJ6РNuN䴾ugp"4$ ]6"-NΪ>:t|՚r$=ҸBGcK?үhI!얢2Ѭ:a(:hhhhhhhhhhhhhWQ%rGģ\Q.(xK<%rGģ\UƈHR"2Σ1z׮0r1><ۨ]ñ]hEw}lոYڹ~]BxssE vVM+:wjag}vv/*WƌB Az; U.M9m6mn1-c2oB1ZP֍{ f̄f+>p(H@[ *M#6nƭKƒ!Q=ȍ]0򑁃8Uɳ-jj[Z]ޘӛί}«S lO`@+#<'#߇DŽ ~ýKW̜;pC}Ձ PBS [&9klƴ>yAC]`uEO!3H:dN>54 6ĽЗ ?iTTo Rm}2|RTё}w`IENFg7>,Rmm͒;tyEX| bݫgL_mRNqFcYTڬp:!~brٳG5Rko^r/];wuX/إS'?y X@= eY.G{=E`C{Iv ɸFwh7`dpfFlx6<ժ:̳A_ϟՂjA'λ'\9>,7!?w´Ӧ9q{h6Ӈo?UO7YƏeB ]X]<5O_?˝Q:J4+JQ'xJQ[+T;g9sRk04dAL[љL+1|n熥o@`P0>ӄ.ml D@)J]S#HYY^^ }֭34vH}-ܲ~-\6m2s쇷!P츑uZk#[Qևף"}"&^Wu+Md4y~hϙPf0^k`w[]%Glr 﫻?>]}F,ȭ/ԓ{ ^DW71]~KCvKm|a"7{geyƽdG}©sgZ:l/pO`ZԴQq2aZb[,ֳG&lr$ȼ~^7#u` {FCiڱ?sǼM(j m"׿S kwKqGrjN1XZkߜG< j5Z-X2{ K{?r;.:.r \^knO uʛO|}sBӽH wcK<ɧwiCΰvިyy/8'PǼ].!R=dk_J9aO/j //͛fn l&_6rt41wiMmh>er,9pcE@pS%B3r?/kV$q:P=sX=$\D ]yðuuo Uvp6B"qo6ijB&@gogwy{ k6MZrƳ!?UDbSN.eg*>""u• `50>/ A=D#TKC4HUyq)!MqGWdNڵ402 廆׋AB5X1 JB8_ `*V\guX+VvGGa!֎hZRVnmLpT#5BR*ҵz9X"7%Q"B`0&)NIiIiEѐREQr8VuL0`ed]%XSJxx^[VC_; xP&u5`s(sHy? `࿗O:QC ŷSFu]t9Y So-!\9peayY~EÞʮSx]:M(#( p04~ރ nx͓jv݋ tmG&q4 ޺ 1|XBDQqmm"١d#Ώj<:hbP~bS\Ŝ^hhQQi(״w~G%<[!2TGT\cv(H*!4*>-sveMٍlns{Dnn-x;׍3sʄș:0@.\߿dz~Py]W0sA!CζS[ !l :;>~ 7 uxȿn~r4zCpʙdCYw-Woڧ} h9I๖kX4*AoOnPv>Ə[1-`bn`/vq#0`o0>+D0}gx|Gcn|kও'7 GϣrO55=Gey`<ߣ7_dHX x`eXqqnfU`/͂_ꙨV\|f&^TZ\ql/8G] 9!AVy,d +)R:[gSQn> )Zr6T/XKԞ=R J=%!cU>E9vkWDe\:/ bM%Vfb _AֹI[mm8R%\. 9,j⥰Br#tA cT4F'~gS ȍc@4Ca]U!}rWiֵզz9`3ctϛ,<ƍF?\OVʥTݺ uzT39Mz7'o/w&:L4| b%big8HN}Eoӓ'_VɒdLD2蠑2i s'|a(0@_ Pͫ)FB[R1Ceg ( &#)y/ P/]cȥJ)ʝ{H(/chhqF,U2'ɯPC hQ4#(OȽQa8?yRp W}ԭpҩX8r ''8D' zN-a8 gԵ li`+1d4܀/nԵv@=![;JRà,9d"hoX# '|8d )@h a*U?X62)iij]S2tyuT/GK$[MT\\PE{žѣv{iԊ'7.e6#/2€^oSmZvGezmU8QV?K(d(g8ل`r|)j;[i4`Jckڹ]wu+VjUZ .Y;gllGa^ RSIwrv`"?ށmgLH $_۩.UR-?B4E9`@FBAZ#rB-ZaAMʀo`쟕fzy,00uL滜L) :6[(&&Fa |g- ß3\+}V;s!+ J\?w|񮤼-WfJw_V< NyeT&ydS~RrHҺ>r8 a[oe[y%l{)6vQeN* gPK w+yW}'yC*,NJ-o,;\q_}m*y+& 2eoEXe刺o+So~n}VXovv-+l[ߟw-~w;Hm߻}zzgx >ᗕUee̲܊-CoʔԑOْb[޲ɿ"Kox޿li[>beʶ]Tl6+\obew_x%|n?)S?-we?*\){+{gx;2}nS-c.[?;tX~hUM99o_hm#7I]zޖ7TbCa]P;Mt5#߅Ki`w(|w/~i _;o9H2g!]낂]+4^LCIUW+n'<vJ9ҢjHR(g)uXz{S oSKi\R  ]WgYJMI .T1}։cuTKBi^bHE>ģ2i Nܑ=--LQaJj;4zspxJi\jKʾJZ/7#󅴤=ShL 5k,묪Biw "k֬YKtr T>` ׼*5#m18' (Uˮ 1$ MΝâlu _pu 76PZۈջӢˆ)0uUN..ޞWT%<&U-:ߙS@cQ2n6/@^6aj\7’.i ,Ԯ7ܹٞ=IQP3pjT\^n0CVYݕ;epyQ'04E1 W)G^cn;rrDTz㯤!"Mnq> ;iG4aA99δI|Z4^'E-X7R`( r fڔ TK8/EnONHkiX8 ӭ58UڃZZr>eԈ).P[$ ơ&L,{O..]FĘnB{>Ԓh-2gm9[^+j)LRwDɧiA@WvE*F[!y+DK[qV| }¤k#Aa92m /xl[ ZS H3XBu-`G.DoE4iE89'#^ʟ]k(j'ЯUE;r.ّha̅ߓqoZ>Fhء T4-FmFbgdj4*Ak$Ѧi>kwfB[xzd({~էD/%Oobyh $¾k4Z?lh2!f['7:l[2>`'"`g3'-.9>"$bQZC@W*nf8j0thQĸ_~6sBJM:|L! h};E0S]dn)Ț8#SC׮񴖼⇟]1očvMvm_]ө\kh>' U;vɕQJE3|´=WCʍCfUX4 k..w3k7ZnfϺxY8LQit) jjsޢ7q^xr+vٶxxc>}Y{.KsʄElч ~n#u7fn_%nn b_ghZ{~Vtt,Ft|jj^$]i^ү.#驒ӺCP)J?)tŹI8wk8dY\IcS>we)#yH̭U#XGf8o K F[3Ω.u;f-kyh-{'{_@挒b:,#>-IqL AM/ ,d&=nB3|LY9sg^Xf_{˨QcͦdE-lJNR~#ӯE_Q~m@z2?Z.||׾ _L'WO\+ѨUt;@k>csέJrl=ŝ{>8E ʎ 1|x GTM^_[y\dU֝ B1@ - 6MHA.<'_[ph%Pjv2gN'41MBј ~r:_OrᣂU4s 26ĿwŖ7WZvr]/s':[&}=.S4?7}r;:n_+gJOPѵ߲qmG:OQPI5Z7%Hv_K |73~0S؇jك}" щJ\]92 :")cEC7sEZ\aS9J?ZLh|_s bU)5ۍ|S6L̝U#?ojGQfh~Nƌam1W|ĭ[c$L4Uw1tƺ9֗JQˆvT*xpZޓRo%j, k+"_ N,~JV弆@9q[?5kո BF*[bu-sg1+LV)ed&4Yp(O'{_KOMi?8x[m\.>#W-.W{芁k-( 9l ;dAĐ*>bPh2`aRչRxfY-EoɮR?p*0";Mfh(4]VXE?"1]t =wHSH$<,/Pe `E#*t”X,Lτ'}8+/q/'Xg'sTIHOjIMYhReI8LD/&N gaGPLRL/SckF(ވmh_KIS=l{䙶u&C:N +%|EJUAT%P7'vlTmB@~YdxNQ_+~E~t%a*2Ig3=hZ>^ v>:չc>O|Tꒃ&>!n52**kD֮mD;Q 8QW. ;pL$~:L#ŏo cƖ0zjc81U.6O7M™0bqPN2Ҙ aO#iz!/MPxUCbJ>%+UDg_Oت8tOJ?5)]KNk#v&eKK8\^بK:.X$1QfJza_tGv"ϋ.W>?.Si8.IɈswBTҊSw'ߢ *; 6lAkP"$9T)ΕBK[ס1<#d7@^czizɽ_Z[~mΎ[EzRqa.P:VX'\Lҗ s)vtċ\W]1Q1:M?@>F_K~R+pH|?xG4|=p$((|?qǓώ\p.dH$ |G#>Tx?HLzq[vh?tR)Rbi/ 9*n&žxGmu`ZD?%0} p ;q;f܎X cWEEy+:%ΥDZq[w]rC{8lf)Un9 Ñ<G $(lj+V)l T-lyP޶hҫM9h"R2NZɴoI+Y9L][Ngv>ODFԆ|.CW)oLݏX'P3ATz7P'7{ ݋dIYQ/}adt0ט /a1H`h]\$Է^GiS)n )6!'{!;tZ 'd];rCHzN̜Z W^xc;ߍ!mʺtd= l/Ο;XILtӖq g=o;o1=415k6jNwhosTW*ggf ᯞ_RӼ1#ڥ5/C vۗ`HūWȍw@|*Phh 4AhqJJu4. |]g8 f{*7 O{3UKp8ti.^q˚Ô=NyN␛.hpӢMZу`.Bs#{A WbDogV:u@%;2gvjª~}c]f,ᄉH^JgꈦH9}{$Lj9ㄣ';84^='(hVGw83ʭO_Yo,jql/.[\ 1oQ'rNl4mܜ=[\O(b[Yvy#2iןGFŸ?zu`Wlvo2>wڃӧM?Tp/$됧3vH%O2C|Ce1>'vBUg==EOhJ$ah4k(rO9-0^4ѐ?Ǭ[F#D (t\;0tq΍s詩-1y"4-_1^5.'hw?})D, 5eQ:$|!t& #(Q@gt+ bk%E?6#CLMѓgY}55"=J|I6CA& dE_|3 |H. !Mj*KF|?HLM:t29NNwռў"R:C&Cow<ӱN޴_aHZ4 O)dܣtU :lyuL,\?.[ln_WH[ͷ?q8ppZzhtcj6Vck#$?ҲG礚Ae|+|ei ttlxSПh%4_QjbtG6J޽C&Νy3YZ;_\"]?¿m\  ,{QGC:+zq'60Fe gV_>#Af$7 R~bSE.5^<6ildDCa4[5|jٮXkwwN1[iisҤ/.vRg=wC<>/&~BzӺG6h֕ѓ%1`8GIȝl&%nX!l9[,zV^\Cz~ZwxӦ0 d^E^6 r6IۡҥV?BXU e vKBQ?ݟ}~0{&ZC ȠS'<nN+3|wv;Y&UWavGML:G؉gA#R!Zt)> ,#&ѾtF6Y1#F?_ڌkBd+{z[\OUŨH^gij©Z?o65n/B\;D{W=;k5~0m 5{*@by>_|=:{Νxm͚0S2fdwήY+=6F64&7aC^}紮AF]^n녧Sy H"DUy!Jf+MN> _}P_8'1PZY.e{_9 =d,wn;9s|QB= C>Ka~VfOet3U"U/$e\0_or~} | 3hg-O~?Z|pQ5dft\&EDp;ST5;>dz2|7X9[_Z/A9AORǣlJtGб #ɀ6Vϵr\Jv\jv-2,]x̓UßL%'vJrĵ&YZ6:EF>ĪU}Wړșd@FaCҵW=[VE\S?JN,;鉧;{7,ӵ]0pf&;ߨ]}b.ub)+8e=>*#߇)Ј*t5nOUK#ok` _ 15-gCs>oţơhdZT,{*VR"c#X+7'N㵄_Σ,E mWYp i2Vݸiw˟/z@uwڗDjf-~脎5x \okE_:ןF; Kn1U3i&ky@4n^)GS,Cg+:=Qn'JM!w.7Si7dl1UVXW+ HaxV; [~Pin]='uƻz,>Jm;|X KԵhw0~P{z.xvc.aq(M؋/:M1Cbx&V52Q'C}&w|z¹VAS` q0i7j 3&Q;iޞq´yOV~J (XXsaG7!88XH!HKTGj5W=$ǜ k.DiF6Q"# ^))816th:iq/7PDntRān'}tg@ZƇJo^1#WI\JoTqJIƋTn؋)oKzA!ӎMdFD%x݃/I= j3g>>[B\ f^Qn {5g:كFy_BHDt^O_~l> OtjS!_d x~6]E| .e?|!t}IQtF h?vԿ5omTǒҟ7E/B_o.\K!mK#] s9W7/c{yAIGInSxf{}\t |]o4v|nIfж ַ6AbC/5n҉0MC/\c5%^gZs)0W8 -ݣ'vX|ԩb8ͪ@J;jƋ@W+7i"\Ff"Wj΃(r7`brH")dpVg:ڨjϐV|Dy.U"g G\rYfOþlҽt FQ㒻x@ :C*.DդH ~_ϖpo(>x}ߪA|Z3otBnUrG۷ͷuS1!ϓ5- tE -t0Oq9D;ƶ.μkc6htPtYࡡ+ @gcP &cъU_|~P|_2PoҨQg'3G=T}&$…pan' GRNپ;+e;fKjzyy.%(G*J@ 0 0-5:n'Oooڄo_,v.رM)\ LdyB?} >WƏ|?Yv=5ҶfhŇ5 Yk%lcU'ɨ'<yҺ OxIXs3rv60){(87][. T\ݩ8sT ?Ā P `O&r#8GW#9dCʖ9['O^=Y3"Q˩8Vt omVOQuTjNe LG7+q`#d`^1xKA{X&]z}_1::Kҩ3E " `pĚ S (K^J8oGVA#!BE"O40Q َvj>V묶sh&\O( 5k*μ3hA5&ڎSڙygAdloI mxXB迂Ål1wa dl`t _tMǰ猉Z^K]GmvP}F޻@_PEBGYШ3W=y9=O'ύ3p_HȅsQ\DMLkX9qDd$`5 }c_K'/^2{l\w|9t7:U߿-,#M7҅Q5㣣kn^4}ڢEӦ/2彑ħqpjW+QuՎțӸ5w "G}Y@mF9fDkmLmΣHjR~IƬ&]3y2~KqZl//}`&t6z|\Va  ^hEU1quܨm3[M]M񨇗0}an&K'[yh[uWww@^U6\鸤ai{M5CFm*niνJUW.U. ˎCiߥ&+K %PaАNH+Iu,7LxT&G7d:\*["f,Ɯpj ^3Nú'??nS?}!z -zUOtWg DIuv;;ڊ`#p-H?z~0vxDD]>+.'Jgk~mջAUh{4nE$y-Hn4WAK4h~Tk~b^]EPq># .-}X{ێ4#L&RevQwڊT$<<"Qk>·ȴ!~u ?!3AAPsj[YsӧeϝMqDi\Jsl HӠuJNkkcutrTi6jXZ :HwJ2qvM66juԜ鬋h#fbvt`-Eܷ8Fn QP2&H3ʜR&:wVg;ml{^su|r뉊KPzYfZag% ;lРl1&[ *Ev{f3F̶-*~ԁ5R ;LkЈےAm2/,+|S_W qE~N1Lhg p/".J|}5H{-xob "Ml#tJGa| M! _onN(̢ƆsnΆl۠PaAD j. w# UʕA׶ ~A1dvcb| q\!5м[$Ue /D;27 ~Yč2r*:@@{#N|4Tk{ٰԂ } kUy-VmKjF,`ͪpIϨu5Umev|5שI M'iz[ol*g;j1>:b &ȍ5I1]KL?xh>臤&spF^lɁ9FYbI9vy': ٰ[TH&zEӑra&?"9U2GFGZ$؂kFS9gAnGw 󚻬K0/3磆QɧQj$Dd+mR 'iFh 猷HtMmmnv*-" BAϧp m}Cq3MpuήD\%T{x{D._:`4~{he=3MԺYӕmO%%>dyqt/aB{:lgc_SEQ?#&:GnWڛca[utWL(r-atodWQkhwBtXI]||4`ogl`QɌ䇆RYGep5eN?.,d: *m\?2~n7ܠ/&>؜ v=7?;Tނ= ;DXbgo #/|!}CQo~T3- ys:8Qo=p4^:H 3tJL?dz!R?3:^f3AA-:jq:hx~׳"d6(FYp70sDKC.fJBlQzC m}U!ȐwZx*"!bzg1^먢Gd\Q׬Dr@;`S]c rFS۔%ĸ{W`uC_^> LaGTU~E߉O|  gK)p5:@O'Pӄ;w)Gl1^U7[Q/1.+FY Nԕ(>1qBXGEmD01:%)`e}fXEǪ3W}!x'ϯ , QAjg.Y4ȿcMsVA`5jGFُp>A 捉Zц(8&Emgc@Ӧ6ʪf5ڙI_K_fd10GPG#W]B4Rm7+ǧJhOZUhIfI;!>Uܽ>d7˶>8N4j5hX\h;.8f5UFR'44B+GS<{VpxG/䊩_{&5iDH9E\6{tĦNvP6ɶvN6u&~a'R"2b_=@[g^~T ?TEg7QHp%%5W%QBB6g+P7'<\NU%XpdƱ9: H d[b|OićJt"j-#A&`hw6L`6t ɑVcQ,&6=*-@rT;!Sg!9]Ҙ&Ϯl LgWlo{O3Fj^#({DY4QiD_H *cpQZ?NwC~ Ͼy]}}q7o~B w|pyq9΃ 4q9oعd0^ Wtt픸HL:߽}G&4 U~}J.!=Vr #!T@OUp"_Y<Mb%xGl=WeV5f{V \JNʒMY(QłcǢ^ dB%DH,M]YBRS0 a3*$06P/4!Nv_gQb! R+-;k,%Agةukww?W1tdvI Q\x&fTᑚ'1<5!c34[qUNV(ui_ b[_a{ ~ř@~@;gO)ySry~ 'QhN }1Jt-##Ԩ|D5؉ g%~RӔi'+SKOU3ˁ_2 MרRe™V*TXO?T@ Oxδ2`3\JgwO/!ω6 y'#)gr9tfɗ9|8Cie)gsRr|)oZRKo <$,ГMyN)I2/nKyf9pUo˄7c>-Ήe)I7֫7}ӭ)oU\k&j_Od'CSL0u,23%OUr9^\Ò_#=.z(lbc-۳1NL8^ut/l֓- 83MGcc-k2ę+zCci/r_,1~pQ!u t>cSCa߆ wrKKNIסÚ4u5}|?bbxǠV=Top.!Qg 'G~opM]e`gřVC@?袐Fށ)3K|-9ue6֏kVR ~ƭ>8CP@Z =bBClTqF?F lǎew@yym񿿽/Ȩ޿Ν),}O |jH(?xH>N3_OHTNh0SWH0ZH  d D : _Kɢ*N(5* c ^ZP 4Ǝ<:0gJH?^%?FQt\e|HÄsN9VnUJG|܆Sp&xRC ˎB4Jm1+T5''ߴ5G@k{0ZS/Q T)BCy;8cS!dciRkpOɲee|_*t NBPi)3oQn6]kgN=|xj*'8)瞭%<ǿ}D.:oz 7N5R||aX &?"!JG 9sp'WoVk\2'zWn"srrh9\g[ M*$tXl1B: [Bc)BYүf!3k7kiB7old,gY` a7gg(o_"OWggPy{{,k׊nB mߋ-kѢo\8mm3_Ug3S(2s{AJ+WS}f|u-* icVx(BK(ZX fG *Wl<4bH亳&Ns.J/*ؑ/W4RKR)[NIWOŦrA7Z)kP7i۶'w 5Ǧq!}ck#▁ؓTb`Q=hb1U)mBVMng#Sh2@v1!A:z 8*'x݉ni9p=jYpKC;]]2N;β!RJf;DZO&O>{Zz@z7OiBouI,(#m%ɁsĔ9b'1@>r\Pf8e 'z#[']5cNޙONG*9*bX9\t^G)91ygizCh `mqL*yEG,'^Ojtвdw K Yޕ$=n#sjldEۥ$/Dk!˳؆lVm rԩ}jFxK䕷yhܡ!IltD$94j,qa t Gvӹ| 4Pe']y*OP'pf^\X`,떂rBtd3cnL\V׵|)pos4j1B7CWCy#ߜeG)G4^m67"fmEYC%|9v.Ք}!ܑ [EUc/P"}'7ALqjQjJQDRfq&_8Ȃ01FsH76 աJ"QӦ 2y^S>:Ň ?q:5<=j|%djNp-3qf䂌[>DW;h娍W>#_?v{`C ~ vIYMg]FwIH| !mr(}1oe6z3'z[&^Tni=*]}K*R ," #GN٣u2k7i56mپG=tK_`<vv0P]62I-:̜ӡwNjO~1?輭1:-7p!!}9\2!3(avbBѓ01\+Q/:hGCº)yF?䉞i'1;cDسC%Zuso 8uJ. q>:FIVC >iN ;w!^2ٱ1d}# %s+zhy(Q8AO*CAByaÏ{-s@̑ե~q!#~ x25*Ք`Rx2F!$82k-⡅8#lN%}rj#VʠYXc{; Au6]BvGJyf0BX_Af3wQ D s<:B%'<#NH4O1T vXB^srHԋT'~Ck IlfZ>Z;BZ£_0V xVƽͦ9B$;bk-Ѥs?\KhTFt} 3\HFY hY#O2('\b_zS`@ ߸XG6gNs{'go:q́z>W7`L#9~v44̂ʟ_ݼy͛G7:ED\9.WJY tBd:!Tѥs>a7yL;uu؜ߖwE:n$w^ֱ0aKY>|]v3;g޿J瞸J?g>T܃{z5`C "pQhucu&$<Q{T>˪w}y5N5NB5،NçKvдT˛H[pe~`qjb1*.}sXrX7osi[a>}\g/>}z?3smw"M~ylbGD#XZ&p7 |MsE8ˍCn6W6鑞J%ΚC,H𢔤r2AdIdDg|e_ i8:b.k1pD7bjx+8qonD/nwS'"z臕.~ -[3Lqa&ZUq!HKb%2t9@@6:mesEC]5Y˖e3.BY^V<9`e[VYڢ?Eiӛh <(sb1~GT(6swqD踏5=6[95/O_HxQhzo on}_h I\`^[|{/*Q2}T|EJoKZ@jׯdhr|J?ûH٘iYG:>.~NtwV4hRxZܠK49cofOh m]TJSªM鞾#| _] :} -pj4`2xʕz2q. swQtOx!`ǎ6mֵ<澉_MnXC髉je뫷].埢~Vghǻq^AuAZ={དԹ)as{z|eo+ vci5b r\0 ~Aq/lm3?|3SH隸 Ref:v?Jocd 7x汃G`p У&oB? LT(PktZ OK ~"ťAPu#4>EHw w+n8r9iIA +-:U*2D4j[bq6.Qjfa42dt^UW͈щm7h:|etu4F7j]boUO?{@)c`B@5ˤ]_|!pId1?.s\ fRh[._{Ǵ}V0 LU\ޮ}YĢ{bkVZDzc֞Ih1 O"C d™%U+tge%u{Ec%E$0Ar /ȊXj9켻G×Κ}Cs2mÿҍ\vC2B Ɂi0I j%\VvBh,PF&\6n#yJD'ڽ˅q-Ç4X-[B3Rl_58\tb!(KkbIJy>ӹTN+ś+n^A:I+Konue2J(KkbIJp>biid%=M899F%oU̧~s S$-tzΣ,VR2{Kg&"9sDC\aDI/V|Z7M[M=ӯ%-_Gqq4f@B*( p7Kg0΂;gS`OJR۔==v=ڧ썊HH'}J]TDxh\tHp?njFPy6?9-m.,Oo3>ߤ!Qf,O뙇J2r3d@rvp46%BZiG<4^ʣ@qvIP4<~ M:Ü$%h^(jm(JotUpY zOCDjk_x7=5N~*Nuw(&1^F"@o<oѹwsz+iH:,{ %VZ}%??^(EJԑ|:$'weѶ&3mMVW?jɊmMض&?m%cBj=ۧ1jctQ#FqB,.7Ο6`oSa^޿p`~6xZv&IQ'm Ū$(x fDF?W#yU/'-JI/[ lN  M͸gw$Gu3fOCo|r~72~MpՀ8 2D2?Z\w䯦Hׁc)x ܶ ptP^)ďJeKtCۤl骏7}jE/z611WHxj<7 XgsAhS u~P2Xc_y\ A8hŏG˰*Uj@UJÖh@H$^zm9@Dz0y~8,z=8 O[KZms:ȢrEV:z2\~>ƨ7<z[ y.Pǹ9%IRc08CS{r<&$)m`8ŬӪ ?Y y :kX(_ !w+pu_7LGR'Kp*l^׏\q)ƔDC=-=c28'i;FHHDל'fxP!'@Cȃ0O}q;4XM#JAC/ƟTUv#2Uջk8w.F5swcC߽{u 6?cXkKeuFꀋї6@.bQKpaݐn.@*v<aO_ƫ|aKF?yp~po{|w-RS8\4+lY=ө?m`k׾:ŤDǐRS_B-؆# <\1jiC:܆=%.xo~a"EqM#۲KO2Ԫj DR |ak&@H.vFhxvl[vhD Nh_co6<9AjΞkQEsJ$ ,|tÿ?3߆cgL;)?֍OLn˞刂HМB.f760p͒C[O&BEf@o9l֍_%Ќ: .$nr .qnF +zRa2 N? ]Ux!/iTpl,lKG~.C ORN[=Y F@e8Z_l`:!dbnxbg3Љ(:kL\Cڜ荠t?x|+1n 𑀏gƟ_=L}=sX R0F~3 څ!E_ۦ4>P7{w~TpŲ>EDJ?I m`|>~h+!£-˷"5|G`ۜ-j&͈EN'ծ#JJqD)HӡO7{<-@nAGohh`X3a|h| *I#3xw뭛܉6Mb`m~^~Ѣ?BS6 A֭OYd4U?JKG+Ms&!~!L;b.]AJHKdUfĸ@]w%l_z3<5d5OvF$|w>0eƐ}lSuk;me~2'm}r7W7[qի>| 7C^KƔgW9kzt_0WW-(i},kZ⦹b6hmEq-7֣;OE~|\'}O<5}<=lɞ7'{Ri(W#BYoc!pxgSZP|',՜3ۯmC^mW5FcZ39|!R U& miS .#x`="/{5 LzpOSl:lG Kr "PWvG? jb=":=Ƿ篂/E!CCƒuw^攄w Io>N2ewz:3$.mA%7ZK(Uvdj>|$Tߎ^(4|n۵jMёVǚBxS˭8t׮]M]ͤ!^®|] Kb%voҩq$8qk"џwc`JDFvc @T|!:0W'4;B;xZA- 6UbSg"9tsw:J9ӂqr/c/ ;ɓ0|/yM(EB+~-~o>e#PDzRf]G_MlXZ%7߲:rR=6-!12:Ase7ƟXs_xɮ`HqF>4uB@-pDpl9gwp!p1@Rpqnf>"rxʲFěՁ @ttb}VT<\ptkWsSϻ0Ӥgꈯ[dgWBg< _w>+x^waVl۰Kk+.R& ^*L.6ę-zW:Ucrdfހw5ې. ,ZHH Gf?KH6y2vsW~aV<#=nڶCZ/npDPKm>w`fo<|z(2:~;m$]d4PRs {+9vYmu[ [O AU&`#>x[±ؼ3w Do% 矐ϯo >*=S*'}fа4M !w}٪u`GF/\/i 5d87\D] m >6ZF1%h!Qk*<>RUq9B}^Dj^\1/K /(/bΞ^-A>gϮ wUWk)B?[޾*8/(ͩIɵMz5mܜ fJTL/N`a8l'cn{>厈@}_h^;F틼6xeyMx"P,6)ݹ ߃ fM}*4%:7F#8%Qd(ulGZ#Urԗb);PF\`#_e"ra\D&!64^6rUT6>~ՋEu:~ܽka6v^ geCxB£HMšJ=+I)eBw #Wp'Ie@@~7ԩQ:<3 ifޫ0aCǎ펶\,mu+uGPO|uIVAurH9n(8 hn5Ƿج}jרޗ[&L6=྽z֤Id}޴uӂJ02;"QhޮZPSʹkvպT mlP QMhq- [r<=4SVvmeΝOqWTKS֎^>x# kK[2AOO:~wHU%R ,AOHveK-: 8r?9`1bMGSVkZĉ+uR@hߑ hC^Б9~=7Bm=щ;2:c*H`Tb$^g哊N e9d1mtNV= LCUYtѠ-A7'.9߀dwkF!ʪ,wL'DZUmaMcRtN^8a~ ievw/MP`x{ttl /w=qbFEd?Jie-c£G䋊9\Wh 4-aQ*<Ds]qQN1q::Uɋy\Wj`ג4fұuHI43Dt)0cx O 6=adkMN0˗F1.#ò<މ_]k5; Z;/et?B}_]c[@iK:څ.Rs)o8JpF x4GE=?V'y =Z@O֫*t ;t)ݘyzy/X abJҖk,Gf :YT1uR0v־u:B ^gU5:zMa}8|K+ (0U_A q 5?L[U+=WGRU~1ɵ1_ Qn}GM`fiTup6KRAC/ttmZ Kϑ~!U8_^x1%k1Cz3m@FҡCv[c +cZNⓃCQ7iJoޫO˚N#?AQ˕BaQ0~(l+ Ca9(L Qډ+4a#qtϖA'J19r}h(L,">,I9w;G+% )I}&HN/*lﮤgS|oZMOg=˱zJ O1qaVus~؄-7Xm3#Ty0HaII!mXzυwM.(UD8i,>44U= |3Q+t:KUXoX'ir苾aL MH^*E#U[ɓ gKnbOB;,/МQj+XGB[8oV?ʡyXZPX'טCWKoN펮 8l;GiA3XvY"uLտZ{ZcR4nƺt4)$:R&|% VqJpӭ_(¿P fEU? d93=WjnO*vZ>B&t+2RV|Bgt*I0CZ *3|'Ba/&f,:٬^r"3!6bpz$Wr: tW _+uK f'o=ebF/;|_Vjn7߅ut 7IRʇkzDEr:OX[?qe?// dKWҭC+e?I>Nz;6%k>,n X[s~:Di{):u~t9v`x+ޗfN'RE[%Iȁ;t99g4޻xJ;3H_ mtI pUl&ƪQf5A%'_QީuFM,Ώ3FϤCSfԯ3#9Y`Om~U޸Lh[ b UryTHTl!5]l)҆ o"|7"zo&; W~e>4i<7-2|_t[oӡ1.+kQg6gײgo-ײ?% ZJ: .6E/\e A^41DS\EzE$$MkG$:dHo1dٹ^s?G<3<"gCtϝ2=,#xC=/>$?&paYQC9[.ޖP&I2nQQ1}**gWy4 w}R@MD}yШ+ݛ?ֈغqt6G_ttuƁA3oJL GVQ(Ybh;ydUtAjZMZŨPb`(g텽Hʇr^B79lRc` 4mQjAsR9i:hinczZq}uybW;v}/]j}MlTcq"4.iGyS]tyDqI7[y~ɶqvQ8JYnb-yġ򘀗i4$Y״^BC UxIM`7%"QM6T m޽;u)2QύH3cFL:OtwRgA*jDoV>L]:!"d^!r!|YGJ0Ϝc+|㤞l͌>G]cKr#ULv*n1h<0:yʋշCvp 5a)z椩6i~.ɓ.9Ka@s|*iM]Ӣ57xʲyqKwk(g-8gfz]։46WH›/G7cxvSVR!D$ϛw\.a}J0jС|xb(]f3Ȗ#g[! -jB5mZDzH1䘕^&IIMyo1[lB{=-Z'/VT,}bkK`ew/؛^['FzǪ!ZQ@H%0,SpĊsYy"Zߛ':A^?[t$^Z#p fKnM մ?Z:{3D,RkL}_+<~~_>9-/ه!)}9s:兤oNFnP=N\.n;P>@ 2E=i4NjS@ YVWO^j ud<,]aû6 Ml(s:ƠQ#Tc(GRWQ~*i S &>T]S})yi{/I--nb;9\KŸ?fS)36elũ1Qӿ5>-R43<}Lh~ %(Jո谰踪U‚z:|+w^ׁ#؄Ecg`R6Z?t D[IkYyQ?a[K^x7k5y-4fk5pSq o/fa HP~P W1Zh)Wx_Ssi4=gzUUfqT0:ug]-cIZwx6!ÉeRLFn8ydXΕSKFmWd95 vy3tzS6AHQkr]rIF27*d˔ȼ/z>2y9-&dfVQt}tyjr\W#883I3wAZ6m8 ijЧh5 dӺwJ2o\3a(ʢK4seCiQ -|=}54;CzYw}.:ZJ=#>yl8)jB+!,f 8 B ߥPϿ) Ӛ68%MۃѭVPPLH #rj ;MIѹP55e|XWVk y E}4?wt~jި8]'6E:v2:yPn5aTΎm!P5i][_hTFdV+A![wiEF͜#V҈3MƱ:=-Ղ4, rvUt7eKXD6?| \SpWg,z:hkLҪ +ia!F1s4nؾ] _>f:#W̓FA871$lL׍k0LfG(],9].2o 1#"UKIl3gk\HakEȣnFwk4>sXf?ťu;CNe}@_\<ߕBSyhgIq3eAk7X _bj!kRLv_GUSMV8[5*&(&Yzua݅|ۇ^̮*&`U*=4%~'j]īY e\=+U %qS54l2sn1;N볚ω>s}Zvd$AXU |oEl=)-8 *OuD ۡ4c|/EЋ?rrzL;Xƀʕ׺W 9?M_}ssv|a?u }~MƑt;zL|cGo։ujz"4?D[p~_^=E@s*6i4A%^%aWvō(`KZEu:f[iS]:Wf9%o ^a|%v7ǯgF|`b.-E||/S/Fuy|5MK1wK۳ӣ~JzUzx#pYn@o頼Ƴ{r~zaA+,tDko w.߉܊Dă|حxH%"K\80hU|C 3//v;b'~?_9Ӓ0$7K|I2̅?H>_"3bͥ˺p0mRRuPh.!UG2 >3Kʔ&B 9K=*HQESSs! q|7 gwwmyw[!Q8>Uj+]H EcTS§JPu*(L˫ƒ6<\5#eX~_kCgn6ty"ܕ_nr wQ|!ikqW'` }PdlT~ѱnn[f}la[?,w_'!U RSb?.1(z=n =c:~_u=>=KpT6BZ-kzRn.1Oļ u{"6 m mKDڢ=.:9"RfQ Ct]oIK'5_}~PƸ_}=lbӦWj8ѫ.W.AgD9\t.SJoa1 v#TǦJK*ЛbAߊOԖjMPe*~|39KB W,O/~.mw]*_u]"ҘV|mmMw**7N+FI iƭUax'fK؉]~^J)JV}|bEO)?6|e'o3,"z2Ul H]p'T jz(^ xoTEF[{,c"٬ l:\hQQ/Lӯ '0~Y(͂jGE馿店/7N}?=&X5#QD(r,6ъKc9ְ\B Fd:~b`[K,^n?7Gx*W}`̶tH! IE4@P"bDEUlnr!P̛7fvf35e=]@gmVNYLxG1<:0ܜ6W=(?7l/LD]6 {B1_Ӷ'Og5l/03*V%!,(,M%.]#*|ߕ[tc 0 mͅovϫF/0/4>Jj =(_} `0(s .^y7ʸ_⢌)&!Hm/Z9t:$үIt+VRJURx?u 5F )'j/3=ůyT),Jsܻ cj&C"MQ^_}TvyU8cn ?Lc(~Y< ]L]G.E#Nj^^^%5.VP:؇L5;32(hz;!#/00YCS:/ӬC_{M8kOSS'F>x$yLGԜ/V.<ӱt_~89Y(9f08,ny8!ŰKJ/?Ov xAnoGԸH_ "#S!6Zl矋_y[xw7N[7 '|Azg<@ivc-'"[ &$<ޙs8)6$_&,\\ټݻt% jf.QMͿ3X\!K p  1H3*!v"QFjJip*@yF>@w';YG ѱ|uy˘4v.oFi+ rd}՝zz b?"+@Wӏ'7S*5AV_PYOB?.ICO~ˢ - B2}ӳ Jڷ#fCi ~di|?qrP=tʲ.\lz;\`rvﭤwY/B%]v98=u*MBW&mnj~@4I$)Pk ?ٖN4%RiD3E7 m齬@ޝ{hη5n_t6wNowǸY],[Aie\y cn}Wm;'!$"~}Zqο]Az$6دO +z#~vuhbB/e{;3}LK͚?ݻoQO7o&-xSVi/2'w~99 Kg\7g}ߧGm4dkӺ{ c 6vԗfDn3=wENe_8II$e|J. Ob!L,{|3T[LF~/rx>= "c[G.bۤXRq[\8o}}z\*HjfcHdUvAڟ+^izx3< >ІhZf 6 ~9 uf_J2="UW܃ZlW)ئ_~Ϊ3J̔UyrX'keSQԦbC~j;1gk](RYg==gΦ2%=L=l" _opVD$PhxO %!>=7?+QY„a}MH+tUX^H;;MyLo+gKƠB{'J}:K\\ؐmSVgv`Pyɳv>1>z\2q !P_@?ގ^Ôt+~){k[.7Vo|aV`f:uAW{m[i-K-ĶJJbMj~5U~iTm$TʸhMOy|F\`~'<+NR(pqQ!C"4ťNWM%E% dj o} ~܎!VhBi[Z_ﷲ+gOOs{W,ϱ#gj>Jyr >=S( 1w~1> 5/|Sy{)?7[&a-Tߌ\&Ԟ0[kV@9 97X{C^~(Cp[6χiyx4P+|]+ysvx? u2Hxz!OelNEA1_resYA?dw/_N,HM]">ŸDjhS Ý8w hs(K+M (icՌ(u[Sޔ˛XN)S5ЖcLǏZ=F#/s-j~ݒ3MG V̑ +&dNtj ȓ#s9 O, z4-Hi36_Hc :egq_=U鹧tL^z>[ӧֵ d|޽@Eg'潷g7V!?L}( 7?l@@K4O7_djٷy}kwg`6cZ0.VBZԳ)G;'5Qʞj9~h?y;|o+5`WNvn =o6Iύ1>r@q]w+xc=0x/9( !>RbX'Oo]M}.Q;L?/_3SO<|Y~DYlђ2{gzyBS4Zg`Cm.Ϊ@eo5 ˃ CYXl<Ƕ{b1-6me 4"chc&ZlQatGG%&Fy`5E˧OK4Uǫ0O&槱m鸭@tQҗ@&Cٞ#k,xlF6zRXM'OO눶bu$P Y_y8~|Ia2A?cd\3JxGoWu*m~ط} u6u >{=j\ x^x 7`fxWtcsu/3܇_nQbGB΃=Tp:;f~fBg4&cn(CXOMq+c쿵_dڍN³M$yP|lps{75Iˆ;`0ƱG,9EKez_:J Oec cWtY1Js A3A=݃L80/fW&½ M+2~ky o|1+Hݣ$@.=~X x 9eQ"Np:&E\8_VZF为 ğRm`rQezW5TNs=(nrIOl=_{^ƒƥ*{~D"kkֆF:6 Lr,- #{])u68'^jaAAI͹!9\`LwPk r3`!Q`.vll'+'ua$ʮg$+W/+ AfV?'5ƸSeh G\^ {i=ku&halr&:*( 4Fo,&rEd_WGM#\2^Lg 83m{ 7'/&Jv֍ vÍlQS.6u싡d ɣ d&;U?m8߽7}"ڵv$Ϳڄ:T[ w;ܼ.i֑]^m6dTWGJujm+{l`@>Z]"\}P;Џ4jL2W᪠ƣ}pMi쫫sSM.qk;mI:Ae;,;`c4dԚWGmu80гy==P;և6 0>u 5mǺ;߳<4q!W[?0z[|ӓ5(Obu|WpnQ9נM35>VFh:~WFF1&һ^PWήFR\sV]`6TڄzW!hW18o3LS{U7eW_jiGk]UMkSfmwGNSo"j=֣M rfӮ=(0o=;CTRH6(y o_ DLc4\ nal?s~:s3&wS# ߝ35kn57,uS Mҵy2n5;{~~>.k|C-Yգ]NISu4 i܀:UK+nD_alM8t^7ǘYE,P-vi#`qSY]M2u {ۣ[:8˫'G7 7||ۅ18126&YV2,$kFX{[9G>u|% +)8un.vq01 Q $icyW3013(SP}j9Ĵ'*cL2EyF7G60'ۥIEmGfGSI4yyϑ5yՄ)rMHe>+A7>?<ػ޹GP'% I!ޕɓ/i`^A=nٺƌl F8rq唶nZd^ڹFҳnWD9yag?2jpcYԷSޡw\r&/gY pϵj^3JќwbԮ!/M[YGo24m;Gjo1f1\.6`dcj\sL9vꩶ^>m n3Ay8ڰ^rQG60_ⷳ6ԹkO S5g{uv;;ԝz;*INnFC;Fc^GzmQr=?a\Úm2I]E )ԉc77"pWZtիh U~kn_x5mB\/}7ŷklKX;sߍ@-uHg>[n~͘XY.̢ qi ƍWݹ;Ykׇ%@?_~;ǮrFɾh&kŝַǞ>7yL iǩNSg>٧ãW:C89l#W: ʛۅp]O0;n4źsSgWҰ~=?!>wΙ}lw3A/.Mqz矺ouh q[M|sɓ f)ƑӹOM Ct? úHggވYyzDg{Rz~9O~86UzK':AtA oɷ 'UT'NNV8ӛjns*_4K#Z;\:ޕ+rn4?^R]^O1 Qδ[ȱ];ne7׻z,Η})SN=MxZ( õS}v =94 -:єdHJ.nϙGaףoI#/:ZS#:wt 4x $'eޔJ2iʅma]-+;[꽷L7c;[0ń=XWl~wC֫ߠF{wdNM(LSbbҢ\-[4-KW\Fyjf󉓺EeZZT EK{5 N*i RuR?+]3!/` Eafa)76FwONn@~{|fV#gwO]FԴG=-ݣwG7oާo>?S=3 d4A*AQ4FX؋$y2CNqVL?sߨg(cM`-b%&9=Ra:T6 oZM52=-M0mm4|6d薲!C۴k;d@v$sZoOlݻZmܣ`NVVAY ev΍팴.o=eƽҤA5Q%bjo NZ{Lvf6go6~jhCRS]Iw{X曊7cszđJkJդE|P8ԨKH1(SR_}{֕+9%+ܯ:t管k?矟sNsLi9MSPתZv~,}\nsu3xj{5T3\wf;~bo愤v.\(cr[y۠9ѱwm`!d(`H50ifƖ7o)JX&i6ӺvZԬGSqYړW‚3$,+LzJv:n_Ssd*|lzG[JmgծmqCKP(FhT" ~'/_%/As/$Vrw?rwjC_F~31] iNlWLOe I AC2{lOkƐw_ ޑkX,W6NM}jNɅ~ŦI7jͪkU^1em|Y]}r\e]6UW6/{^d FnНJF^]6+/K6"dU" -cE^]NZ1BL4 uJ9z ޫ)U @ J(UPWՎ9iTkʘGWO2jDQ}&NZ[:]d7j.&,`Jy\eK֨ u:hk)eKnZ=Zqe` ~8n}_Hv(h;lƖҏD|%q?_Ggȇt'Qq<W{1l9N>@_:p/L9,}0M9Lg}F8ɣɺ#DGH5I!ٯݑ@):v]<YC8)$ *7dt&AUKwVvA ~or:a19M",hGYrj2KsmmxdL2gFF^@~mC8CgYߒԹq[D[=׊R8q=;'eܒ>t-mM}Z\bרͽ6 eZ({E>H+5_hME7ڵb|wݵœ`NƹxsN1G'$'Bz>6smhTgʜ}zmHiS4l)Fvɍ48ěC2r۔IŴHԫ9SDHruFeJTzy|'OiC#"^9{!"7OIxW8\g2Lvk#=XǙ$u|p1")sM/C:#šyPB}m>9olֻcF+cf{|&73޽U (w1~f9mڝE53F{4oʽ1?mi|yr.'5ixg=!^>nYSNN,!``XH~!a'JN:pJ[OWޭg&Jj1K~R!!m{$wB>]e>L珽] L:~U61 TvtۂN*#^dk$г`o@/yx/.H TH`$4.CDCיK>0m  q=S NL '3#ޞ5xp]GN]+kմ}uQ*Zl-= ]nwM[w bA.һ0߳yR 镘G !~{tOyV!b/./ڶo]ix׍:?1('{yԤ&2h#8c-cPoO㳅sNtO'ͪ zɐ;vNa.]w{N3$vY*s]|nY+|U }xmoٲzۼp;db#q=DlW~gQ; >ijHKEEF"b:q*ltL-``)  ;.ɀjKW$f lo`?cCgƉ9y$0@ 禯'3foɿ<Ӄ:Й G  4L3N24 Z]:\aǴuuvt /ү0i^-Z낺G 4q!-[/Gtҵn);'8O ŀHptm n(]tG'蚖uƤߑ1l[qis{OZ0s>}2vM`Rn_|*@30+כM:nϰ>ۖmy-0G[:$1%?nay1H_LI'˲N£#O[=:b]fO#Y$܂+>+("&5ZB͵ ?jҜ9WƊA;Hw^Σ>Bpr?xҰч.+KWOU`@Gs\l~; Bg϶ɥJ7혆ɦFs_ⳡ[B>!i2 P/j^$ʍ'GL(vm'=<({$T ,kJc[.kPdń[`[(ZDC,3R8i,"=>._xhV}~!ֲ6>o>v6 ^?.]j~X]qQPNaw@\Շ4 ]LE|{xd8 En $]'RorqrO]+N:vZ[xuJi>!5/^ tn<$=1&-*eP[+5 &d % iB{+$3}Ń2nՑUPćDVڞ6ܳ @!YC̦Վ2[W'5Ng%MdqQvР fŅm}8!lv\~iȟ{+$;:ek]bjJײ!MP]h[vݟ}N}8!Gf})t@L{gfzoe8YzpiH&Ezi$kwӧ*!x%_Dlk.:O+Y0J3 ȽOr눁 ȠL@WŴU1}u&Ļ8+/80 s'Nąju|{=l}%6|HI[zJ`hjC1!:*V]_pe}a_:REJS\P.%6s,oߔoĶz؉a+@IR?KKF֩qx(a9(cYvϝ[NiRFХ 2ޫ~EC!(J9':eT,- =q` Mq^ĶeR[Z]S6b€1溾~I] DA&V6ξc$cx&CiRb))Y:794oM:Qܖ+3'ƋF̍wʸiv3ٷ_+׽r;wzp~f42wXa##i~>97[nue  )Pm9&`3Cc$4&jK?s?}Hݾkv}8FXcc ~x^7;};ՙ/- KVvMt{}I?Y6`+Ÿy٘Hѩl~. >{2<.V*J@ |8ul/߀d뗷*o.]o`-qJ=:XTew˜nstJoTDxzAV07PٺuL^_\M jD[;PÔÿ!?ח H_Ǧ@ZirW(gwΐ_# GB5V@ HoAV.Nm\mdp32MM 5]GyG 7AhE6IeTr٥.;1z6hʿBR[zw!rz“G#Y ~"*6),z"jƵ=)@u<_l Z1@zVw2[Ww|vlVކې,۩= kvCDcKFoGCoz~[8uG.Tܼy6͖N{|^ 0l8hкCF{щEC HFAb]:sR6ƕʶ\7\v7-ק)}珶6Dw2OAGl̗8P1XV&~}+y؏.UMZ)8CP 6H δe25\/|/Gf|¢LT!u(+SyBVXiے4 %eٔEggb&V~ZSlr8ͫ 0)lx BX)04#1a6Rµ~?l+;(.q55vAU:}p=: ?(|?Cv/V9zx DQW#Mu)8*5A]ܾ™gmlkb +/eٕSļ츰:呟lZ\y}IWS7l^yJ_Uu$ʖ[~tʥlׅ~)[VHTd߬nK]Yy_M7;7#F5pJNl\=.}ZrzߗnԷ%[H0/`VtAl_jF}:_D !խOPÇxe+#EQG\;6Je +a$&}~3h ׂNߟܵM~c3Ӆ@GrKS^Sij )MnGF d*GɃd5@6 ܤljD,u8 `I'Ĥ(錁XIFRzr5xiMp֭Z"ƘDDR1iH9%1#؈Ȼ#bwTt`SfwtTl|Թ=ϘaeʟfhxAڱmKyyٛC's ۼnVm7nvqGEDV_ȦϹS6 GtS}_ wnQmoMYq[>L ۮ&Ϧ66QmIwu~o@^bՐf^^gBDG& ʂ;>'C7;vU/uSw8-ӟp"-QSٍIZ7iVsگm{ ͱpml:jiilpF~IߨFw7 q6֏R7)ڀ^=wɦnirٟЛ>`!mpL 滑@W ߏ*u;ɟ^c,4ĩ2Au$^)uAŸ *43$M\Q~яMCi%2=^!mRz_ցѸ %%+QvHӈ= ;p7!w?tk~'t|Bǜ4~I}\BV=e;BMk/ ICIR\Vw_ؒx^65$l#L1&\z~UOJ$-&1z_@Lb}t{{DMqb7x} cwz؈ohiJ έٯ&7;4/.qobZʿ\̜qQ;94/Oi$o}ϟ_;izϼ|wv][wx1ddXAvsCku9xѫ=~Ek4D3gF? 7}㙻} _9rX+\|C*^d(h 32WkȬ fKTgL `eG2),tm %M`g!$v"/?<^SnxV솾d\aO RL4KmN]l_%[%mArgLZ0f̂I3r勴~&Ll({Ew؋ pǩKΏi۽D͏?]-'=g^[M۰b Sb\YFZ%/9iJ#T7u|iD9e7{Xk\철 f%77"h˭=kYw3zܺ Bl45vA/^y:$Ti6oS)4!}qyՎ=ɾǪ3}ZT@ 8Mc_QQq~:jLbAQ|sJnL>?tOo~Ys@Êu{8PlwnZJk?>A[*E}rGΟ?"[l@v-ʞ1GE#Iy!9Z0De#AvGS A(}KS+ K;E(h;1t4ocss6]j*s.K4$& ?:u eЇ&%>8tatRx hv4|ia\F BqwLr(ن@@$L&KˆT_9'i}%IT\7Ny6JHl,%;>";eYbBsz\b1˗\`j0cjb\zvJ4 fr}Y+2l&^rn/G4aw#;64-{M ʦu۽Wf}onn?#ki?ѯi.OT[:΢pK\lv6oͳyVz:n]^YѷuԳu.ʧMXPg[}ӃO*"EduT=~E],fcO5nW:;x#OvjӶ[ߞk?&iǵg:=u 9LOӾWtiգ{.I=Zuyp^ssٔp3H>K^)D]>Zx_8ɇ[ΎN'qgg97[<oLH*v>r0s-1hErb )@ê4US~(9MSH8-L8Mk@1` {ij5c*hhX=eӣN6s'E'QRP݃ikH"g̒VvЪwC۶нr'-'GIgȋ"_c]ÞuqA6cd68^MnUƄW}c>y|5 `Di .eLݘoٿG\tgdL"I"<:HZj2ȭ-u2cFh8"SP@."DߨX[ ,P~RF*+t{):ȾMԊ<}12пN]|D`=ݨGpξ Z0c2DKXbw.,inڎk7gDxB*UMXkcO2 me[X )@=Jf`.%+G[-\XCx"Z#=}ݢkXo҂3o{J>He+PyS;='@ gN%S7>*Lޖhk>%w$NO X gL./$'޻m|#zcFTy5޻ו$Oa͜ivRq ÍH3Ln8SQ4% &|[ozKb5~/@Y9(1%ByPex sTRAtsã!oOy /OÑW=Wx.q\7n(7ŹA"h;ҎJ|71LAνIhX3+Ŀ?q4ϝ(Ej*Yn7ְtBd A$|XS2RxVgMQd^b BIo5~{W.̌.y:"C7t*Zȥ7/7ʛ=m|P/Dvl{Y ?&zOw8=l`9S&cN }wP{_!SإBY/o)Vw(n]գpz ZL@9eʚlM%UOe[ʫZ.=A]Ɏ8 YNI'g(<([nn9o ~GAByߚ \1ucZEA]ҲGޱl-\Fִ{;e~- RnAs}6~$o8`)*ֆ up6MJF ! G>;(yІՓi̽Yo.Cm$)6_O-gS6H↶ڢhѪ?;'wlaq 2mP^ ="ᚵ1ZL>9*)9޶$5q]RV^,1y"y=uZj+GJWgdvq<7@> ,6a⏗ʲM 97ǷC{pD~nl3L?K"3آo>InpL k5mp(wVSdOuz PAX1)Af"#/ݾ.mgZmy69lym;vMNE'DCKsS]i=한OwKHևnJ.zf̔d揣#wL3fىo}+f0HhLpnm0eV@-`p?O~CNl Tf}yyyyZuh*4CIEUZ,P^iH|;=Yyy5wROIV ~Β[KZ>jz EҁRҕ;}t͵ϙ^SѺL븁Ǐ6=ɏ[6qP<8jし6AJPx6gEPwE{ CwPƱA= -DŽ[xn TG('M*D s,mF2Lت+'u?ι0`_Lw?%b?.$`' p$s5Tρzܼp޽g;].LίӤ>qg7SƊ<~Vǥ]!r9DAWZm1Je b᠏.JGn,2BU:yhLw<[pp נl?7$N}̅* 0`İW^QZkwᛤwοva?~,3P9oORKIv֬~.-m $#|D^N|C/cB³:e!Ffu" ݹt:Pu{{$_H6@!~QXTZ1f#wɷ[OnY}ҥxi};{\x0r186mq?p |M:SO::I'RM's>VEI_XL$܋D d2U1)]HRTъˇ|= `݋u^jrR":yيk׊]|-_n"ۂI J-<^ k!!+ 3PK7F~TfCGϗ+׷p'# >AKJzJ"_ ?&R0g|>O39x{胄jPL$Tt~)frd,:g'y3.~Xj]U||}P`yyƕr?Gy Cسjڬr#'; qď;IN҇a8WlJ>We>e`$yzxyJ:2T9=x&-YN7!8vv?4Nr smSK%z[ CĻNXB[SMF٘>$,IK~J+ Vy12{| ?Y= R"_XFյkjZ?6c״ /A#n$6CЅB(';~J/P/eKZؿf+ܐWal+AZyzx z)Oŧx z-Obyh|zDM]I@S]J4>4%5S0E5A2NP *B+WKR +QJA+&{-۶6i el9M+ƚ?IZXFs8TǤXrPαD14V:LhiK ,H2ZVoTאPOC( FBŞۓ3xtnХd_H2`hd8,Q?&w' uwI7󻢢ٽr7W<1byoϽqϿ\HsZa1:avމvt 5,LztY©QԳz) r#DdHVxc:\,rzL2~ʕ7wuٽȕ _Čטm9,~+`[xیs$"z^^3UӹShΣܭ݅sΝJl@4 Bk1W_Sa=Oxl鯵Z}Yӎ>CҞjDMWXx0sstہOw-eF&s!zᬇ}t9/0rw&| AC7O(kWLʷl;Vpcաzwp!Nش4o~։Q6UEG Q@+ @$p8i#CQ[@܏ U80CkYnLLZ-uO]ʅ9OcgǤ6 {CeHܝZQ=e&old#}IsIA.yle!N]tb }oxV6 z&=r/zrv fU6/e,TVec̀{ݜX>QFa%NH8 Sr }ff 6'N+OhX3i;u ͉4'1}!.;784$ TU,3>To{x`hwU/|.frS PG/U/XvVmĒT66b:*_!mڼ?쁉f,,|t:h09 ~$đ4Cа'ţ׸ *,!h&|aN^յvWxm+8`U'zAgxE7cH|Wxˢ{ϡ~lCim8bιC%h9RS2y]A{_sך}kdmr NY.S|_y+c|j& lZ'yA`0/DH5+VO*c̈3Ț D&3i5)d1tB}U|"5<|@E 8?iZ )r+,W Gދ%2YˇaD6a>0"&g/cUڅq[a(4M 5Gvy͓iZMLmrձ\z9z\Eg9Teulzbeeu-WtQZce͇*ZLp@D5>kk][n;wcPE9ul'8hxUs M/ٔecX//f?[m|^. l:VSZM4jTgPm5tñ]2ytqiri, V<0Nj.NVvUĜι+Wa:χY@nFL͓YR ݮ7fgbYsD.K0Ֆ&Ko- Jg.78zC\Ј1A^4ԷkE܋b=yڗf/a}A͖Ė{<~klzLP۞zYfkQQGٴ|%-l2 򌞭 1 !Fէ٨"F+>><$lI C7-[gٕŦ$T}ql c6KcϪa_ jQ*}}xS}yb}P_]2Vg9M}4'u\НkmXw3HC-Ŗ]Usc.V2S[(f]$8D-_c1HF4ǵ۹RP<3Vj@?i1_)rCg]tBg録᧾t\)+GMPQ C&%Qй=< gr=fxX!:ySl+~CYSO%Q]LBĐqeLB*;(1e Fe]ERe,_6P yMeMx&BPf'p\8\!/2-ƘKL›;  ` m% 7Yl=)_~KsXp Y|]=Cv?A.ZƝ=\dOe]x*pNΟޭ7%w6\򧗄Z8)=ݻCx ^&q4wy+*bUOhu|J/j7y 1|Gj d{>Og56]|sܷۗ| 8Zd /S¡r ^n(TCmD*{'d /%SuۆSgpXc(gpn.ml\=5Dmo/j9"mʵ5m䧨r8{%^INSgpd<3Ya: o҃K1]Qe_٤o~Ύ7_t͟&۩+{Y O"=j8eMƚGk:5&k:hTNY}NKKMϡ q9i;*(0H OX6ENi?4\~ïMǘ&q l;bd yꓲsqw SE)dIƏȈqI W;bErRfa8Y%ZkI;Γ3^'Q52nu`/*&&Nbqcuj~: kְpX2 3gc̳ÂYBC]GĊv-nSQ˳bj=Gppa1nNV[NHcaG/b7k:w[ө"styS뷠&9nmJt!?eigx 6{w{|-ITK\lϺ{3?ˣ}'PBh݆v$QO&՟^un :'M&r;4ƿ@ސ-bٮ{̒r.G !kRl/)_ KpmW sV[q/МKK ."' d|orBxR^ 'Y6>¿8&/0TrYai~$a&G0' Pd{P@f?K@fqvZ%Lr˴|*lUuo,\d^pߚcH<{A8ZAߑ] )dD Wed2w,5GzBC7*cga,c,O#w':ɟ@rx Tw,W8*ӳ``: u!/AkPuaX]Az /3 J=:7A%Z[҃Յcuu|(+ֽeG,#Fα # un0<7P@<A] Hn(Sl'Uts8s_| de1D3V?^3~]MЏ#wAz6B{t3 ڗ )v[U #}FvA:0OAY9)p? ds(/Nύ"'<Ɛ[6Eh׽ٳo&'t.mLy ۃcˏxcer cXY}O\EG ~ v^B@N"_cyev(B"鮶W ӽد_;~kw?E{$Fg"[̐' ڽ;߃|A^?or|ߞjˏ*H ޛp.r '} +ѩ~BLbQp{}LH &೰KހC_7Jǜg_9Ldex8Ū}U; ~ pŀcx%-Ot6<[ rg> ϼ(% skER˩»{U>XߴƱ4Rq eZ{L{gn^ n?H6Z%)aiCigP')K;>$H#UaXފcHA( : I>Iq*8Yl'0Iծȃ*W:k,}&٤ʂH:B :p/+??5L>C ."Q x7&;s]xtd!Y:`zDzQҳb'9 N$Օ8e t`՟R3[yEގHiFOEiiC$zao_G.=Ú_Ȱw5zamVMNVysޓX}à9H:2 na^WK!!ҍ!IR }}F*cqy]dX*Vߠ^B !Ҿd:K`p~o{ڴhc M,>c+#h?5x ɢѓ,KǼlFx6;CX@Ijl|RHfA'q%`b4 dq?&u>;gű{+NO,.=<|]|$/0wm\Г_>ƂO0~y p ׅUY=M )\A]Nn=x4\Z.Y#OA_T3KB\F d['4ǯ&;̹UBt;@V3'TC \&ЇL~zx] gSGΜȜ|39=c6M"= ϖrVeQm aAg𿀴r@exX:, ][put Ma@nWO,WH3}Lsז nЇz d"'HM&ECKAz%\Kނ`nVVgL2gYp. ,cHd-20Y ӏ1H2(GWNcy @L&Yd1sL扟C;]d:sf z#[w+ϗ~}qmyЇJB<,[u?S?fNns'E>~/5A"QHڊX6@\@n PW}|v%-2B_ ~[tR/5+r,w"~|tw@Cɞ:TS!m_|"?,׉^]T׺n6$6k6E Ki^ȳ3ȶ3 Qxa6l~ؽ0{A /':dtpQzm8m{! v oC:euPZ%-p߮>K\Uak= |qԫtƻ庾[{~l^aЇrAn +U R 8mgOU 'CM6X؟ls9͆ Ou~a@mii( dʡS=`~d`ЃNWGZ1-AHٸc[o .揀{Aڰ<{=`\Ͷ\pK\p!,E 3A+ zx3!,6$aO)Z.>`Oyl׈~M:}Db/y75RwXwdQ8MѱM޷0[c椝{w;y=+`Wx ?K_kn=轓d1]Ȝ5Y̽C ;\?bw0fmG:b;𧑹8+2;O0:l0>b xUX2!JX$ @AΏ$ž`\8Ry)V6IJa|<|$~f ғZ @[{%NLjz;bYfieq-?rs`; Ƀ/$dϾO;`0gSR[W|ڭehwuf4 ?~|#sZ8/(ktlS[㺅gyŬk\R0&׷ o\;up7桡^[[sd sy6sNMR AZop{<كsVx69P[p4;֗uF,{$_]ikD"=4vKĉ98AxtIp=S=DMD~"3z"tD=Um 􅎓!o"D'"_'k^f@' Jȗ[̀Ƕo=Jn s9|߄wG8^cP[Ƴ˵*x_`l˄wcq}~+6|τw|bbߏnw@5Xwfn$ȷ qru| ܣ/)kGw&RWX|ʾ;+|PW󹧔Cq-ťB)~slmE^q[/j`}\/aDWASv m=[?m[ rL N:[;:Y"RHI:[ Ϧqn6t i(9K$ϋln,&qks~![׌"#r7]6_d+ f6a!?]b?HBd(ndCdĊ0\H؞zp:+"A_<l۹wI]KvU:vú\~N[* ˵b18LĠܗm^&Gw/q66vM=q<9*6ym⏂0t1yGƠcrgi1`k|Xm֠ѧ=w.!I{Z}ig8,^+p#?S?'jZ޳#<ل/oS|Hqv/ˀ;VgqS^ei+y` 1I zeEck1&Jd3sb?$>"G XrNn/ 6"sh /~ʾ:7͕n%sl͡õ,ȓ̷_<ۊ{(9sLci@? &>u1ds~#8˿k(Sn:itR^j- ^S8p!_` v\s {Vё񗈄9Nsd'NUv/ܥ8{[Ht762w_ JcoF$[g}Ǒ?:m%2sG^lA_A\ szoau!dshHߜ,rtxVsB[vasG%_| "d]J #=/5Tٮ9%;) p_ .(|,{ CW6Sg?+n?Q- .ﯽ'N1Ɉ΃Cp;Gv_]0F)EbUpUGK@w8q˗NW ^`JҖWX⠎@}.?@Mg2zN{w.cy08wuM^R7s0.ˇxCm+)c9C/~pi? S||$eS8GG+fuu]ARt[u:L-yߝM`Nn7\R u!s=]3.&~~O?Isy9^prև͡}\;_9紮,Os8~j箮GTϐs89zR\4F@]"\2s- wD`kb,?h[XulO=d%$M"p]Dm}+&^oB%IɭiXxL$N]o2E i4rBoYO/e232[mBO.}jJ}. DrLs'cƼ""ھK\gښpKd [B߷x >%0ƙV⮕FKϒ#%%/+umrH9;+IC@)DtC>V u0`G{)Ϡ|4ѲZu& 8qD>RI'qd:Jp1dKc8;?p ttf2] d3f)݆\.80cL/-̽}l{2"z) R!xA7'ݫq:w]';sl`i'+NwHqЮI_. ;ElVpO^b '}L^ړa\C"#>F_cM5Wgp> g{Nmdݞ7Yk3uǔIe{ܓ; F~J ,nµ==H!Y^)ʮe^3a7I] {R RV2_+'&nܻy-;sG;Q=۷~0ۄK}0g*{b_wφ;kڋ<NuOas3WB{7m b{_]Fwas6{GߝdlCV/p@_=zuy-M^GXmi [V 9v(}* Ӷe' `>D~?;fr)K&і a9`K*wevĠKws`[l;Yk_tٻ;]Gbrk+B=!D^ zDtW :_I6^sZoy 2\zvpuZ23n$/8ӷ.||CstȣnHom$--F~U*'ascvyN,?!Wf+ޙ=Wuo*Y`$ivvmacWh~]5?7B"*ΣklZi[׮+q+ع46ghevN)=m={ѡ]D9{ƙói>8vP0_+b>6ar& 'ғ̇ uvgc>o|2xzpo3p'薝̇wûǙS;K0!]L2Y]@;Zm:n9tBLi1Han@&e^LsH @zs9ӬBZ<3iK K?!bI<^B4ie,aY4˲h6tçݑ@K`!%#@V @aB̷i1H됮GF!'v;D ^Gzi#Qoj1 'ҷ]!Y!H?C9Hbz#Aj@uD}!eqx xf0 J5ήa EAE!ῳtc-xnX|_@k,.Bo2&U<iH!-cra4 %F!5#zs@32Y%` B3!-FZiƯ*Ռb\ #P9xh c s>iIaP-j%cHx%ct0|$)DZi R[>tҧ>Y1Hw"݅t/~V }BH`GV"= H,ҏ~3(eZ1~H0 u-u-u-u-i,x-f6H!m4iL!q׋H?w!/@;$/mO[p q ! <5 Ik?ok?Ӏ lXmXmXmXmXmt@:I[H%PN[IXH2RڒC[Ccm[!ÐN-8EH -E_t= H7"݄qw3'nAZ@ZU0#XH# =E}і&19,%> Iaa;H_2ymF-H0;B>@ZU0#QL %BX1 X@Г'Lƞ9E@YOF%#ҒiɈdDZ2'cJpuSZK(XH9Rf!m@{Re!uSeCC: i!Pi ReVL)ې>"ݎ@./c.{zH @*95~ƞRwv $!H m4~tb ju%e2L."i ]@Y?uh,C-A2h&? 40{+I o:0#147K#-AZt9Rin4B HA,;B>@ZU0#QǑw~ƞBe,!HB@zKg#H#-AZ 4$ pPffeBɗw&oi 2q'23 gfH\i R1ǭ#Ч0mx4g>yw|މ׻/݇ =|ׇAn"=w3Fi+/ A1HϠYʨa3$;\0.2O he8@}e]  R3dz03'N䙉}B& 'db}B&ޙh{g흉w&ޙ gSH!}3HE;B>@ZUאFz?3 H,a0RHf5|(KȄ0dL@~HP6Zv: $î#-AZt+mHF gn\v ݉tҽH!ݏ "?0#QOO2ڞŁ O3Aem#`cP;bK {GFn;D q|?<ZuH6p:4>!ml岡h|ʒ = F]yec=@6dc[6Znhe喍[6Znd+mHF gnw ݉tҽH!ݏ "0;H?c1 dž٨rz{ہA=ކ#D:  3=q'@M{?-~ @GV|mHF gnǘ;D ^GziW1CH_Cz|z)zp ];dg 9! +F;6t49!Pjv {#`vslv;D /^CHO }{PCK.ZAC Vs5^bhZ YwñƇ#fC̋d}qF` vp@cvށt']H"݇t?H+wED$VhHa$08L#l.kM# H[!m484!ِ42G tt9^a#x}q =Mz@2~!?E[/hEОp.zG;-B!WESԊ#-AZt9Yt= H7"݄ S>GGRVE8JV/b(Dn!e[e)BAn!gw R qW8+vQ=O!n!b)B-B-B,{!^e/IJb qv1YBⸯ}8+q_! qWB-B-B-DI"n qg q^%\x.yB-B-B9Lc!g qgt qgt qgt qFgt q^t!n!n!|c!/87[8[8[8[8[8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E"IqR8)B!N'E8{_h)B!Z-E"DKRh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňbDK1Rh)F#Z-ňDK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK Rh)A ZJ-%DK qR8)A NJ'%I qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJ'RI)qR8)E"NJW)E"ZJ-RDK)Rh)E"Zn-ïB+rS,1r.Ǚ583g583g_3kfokp~ ~3]Lfg:RY/됫u:gYC~!?0u:üc^1zk=ZyǼc^1zk=ZyǼc^1 kڀym6`^0 kڀym6`^0 k#ڈymļ6b^1Fk#ڈymļ6b^1Fk#ڄym¼6a^0M&k ڄym¼6a^0M&k ڄym¼qFw3^o' ނ[ p p p p p p p p p p p p p p p p p p p p p p p p e[sh8?Vc8V2gOlғc;έ@.{ 6,22!/L^Ls/j8ř880>81~81~s80s8T` Sq*0933GpfGpf(9qb(9q*QWb^^*QWD ^5x%jJ+QWD ^5x%jJ+QWD ^5x%jJ+QWD]uw%Jݕ+QwWD]uw%Jݕ+QwWD]uw%Jݕ+QkW֮D]׌U֮D]Zv%jJڕ+Q_WD}]u%Jו+Q_WD}]u%Jו+Q_WD}]u%Jו+Q_W8L_W!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6U*Fb QبBlT!6ՈjF5bQبFlT#6ՈjF5bQبFlT#6ՈjF5bQبFTT#*ՈjDE5QQFTT#*ՈjDE5QQFTT#*ՈjDE5PHF$T# ՈjDB5"PHF$T# ՈjDB5"PHF$T# Ոj@5b1PF T#XXXXXXXXXXXXb?z8hG8Z`w0;yF4Ze;OchF4Ze*;ViNUh՟F4ZkѪ?ViNU1111111111111118+JyL<;+Jy\'pWՠ֮\5Wp \U+jpW l/5RWp \U+jpW \5Wp \U+jpW \5K l/5^j`{RK UC5jW \U\5 \U+,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,(% JɂR,LJ#-ԝY@ / d,-YŐxc@3 ~ f4 ó-[>StґsR9B|i1Hc.eVL)ې>"ݎ@.{CH_EzkH#=|Ez9yg)[O=^g1Qzl=P.}j Ðngb@{u/Vħz-'F<>ݎtҝHw!}}H#=UUi?O?g!t9'4@BoET% I"HGtEEEEEEEPQQQ߳s!83s~>8kֺ~uuV~UiI~ArlT:uT )zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTQGE)zTӣ(GE9=*QQNrzTӣ(GE9=*QQNrzTӣ(GE9=*QQNrzTӣ(GE:]>(GE9=*QQN_ROIz=YTzzzzzzɿ0_rSWT uKө3 CRa_Rw:u7OUM!u>Cua''dSzZFCzNFw^o-zUw.ޭ{z^?3ܯOz}@g{HL߿߿aH]NII!uդah\9P_xP/[^&C9.54ԭ0[u^g]ږHkɐk!wt ɿlh۳nφ=l۳a&zHzDWXkz^?z^o7ު;z^=zW'I>㾬&{&k2$7ߚ _nJ% 7%eMo.!uPPPVӔ1Mƥ,S3+R7%7u'*-˜˜דz^O녺Ez}^/%zRSKwޫtCz}:0% Ry.J5z\W}mu:MoMc}\o&cKs;]LUES{D$Sz^Ox' B^b^׫t:N}^=zW=~YrN53$2 >ߧC 1s!Q_Wz]Sk+uu:M~ʖ /oZ~'tz}˥0uK{&&dSz^{.Ez}^/%zR]<׏ީ׻z^z}@pHz}Lo=׿duDzj2{.$ 5Y,CͼHb:5Y,CMndN=Yއ,CS'Pe''dSzz.a~^zQt4f~~Uw^?ty]+:e5I,C]5id \Hfjf`(orQ&©:RuKS7^g=[^ZJI{uK^zg^O)z=Ug"O^.z^9z^zIgYVީ׻z^z^'I>kwH _wj%&M.jb'Ne/u'߯[Z~Hzޤܬ[z^]z[^~\GٯOz}@o=&_ot2؂`K5V˃m^oww.zkW^ߢK멷ުJi)Q!b=(j%bE9(28ث(jcEqR\ QQ<>-Q_KE'P2 %|(q Re+JޥWС<*з2]Q*uQTd^ӛrLQ*|-2:TE~尢T[ y5̔R15*JUR^u0M9(uѹ E㪡K>WaY(q%5c4j)Jr7"Fݴ_Q4s&M -н%Vk)nmYmѣ-:O_{Hݑ|;!;#3:`.ض+uoWSntnp_#;cᢠSo~=_Op{VnE[K/{!6dF ;Ƚw 7_}ч1}>ء/[_rg0`?v6hq}l6 Lg |<c|)o| SBl\BlWHBd~ðQh}(BV}WbƔ` %W#g5`F#<;Ď#<n#QGa2F>ь1p1nc?>cXh,6l,Ƣ8bq6qCq=w/^ Žwx?&e"}''3NL&4b:@=a&2f5g^fc9;s yr23 g,Ǝo |7Ko)sR8.Cr0s#?? nrw w}}w= ^`kX>}`=C8q={qO<Ab!8o0Mb$oocwwt) i|xy!#c珉O'Sr ϰKlW9mπ5z ׷=?'t .?M. l+~ ~{\Ⱦ%_:T FMU(y b4fE9l)2b + +nsO0|.\P dEAVde/Qt2L[ kpʢkYƕEFJ=J\;4C<_.÷<3<2ã+0NJ5"+O+ҷPx_ Q j~U{*r`kS AkYEwe»kɵȾ_\KkӵZ]*ȫ*ش zTaua ln U]R]U8UUkUpc^ݫaOˆjI5tF2%]K|b\|ן1l4CgAD B!B< >Ce(ʇG>ء a W F anuE1J6#yIp77on$9g4G+71iN;> wck<;LBI`5L"~';LS:ip8־ia:0fXI|s%2W=H<\5[}e-m1/?m:dua=zt[Y[ßua=<77s]7w7w#oDnĎy)kk&p7M܄Mt\6M {lfzܰxL,oVleV?^s0㶁Ϻ(;N.nbk=^|e>c1bq0{n~@'Ħ8A!6{ ?<4=p9MbgCöw!8G(^¶/2\_^/++{ ֫5l_uƽ]8rN: XCy7Û$z$N[-mwxCxw }Naw]y=.}l>XwGFit;.l>_y!>χ}ĻG#Ļ?')mg _b/Sg 7_ 69g,|G?`?sC#O >?'?#>8쇳~8h ĶAd?-Adck߱1S3x:ƨBA^Q|Q&¸e(-)-1CN9p#O*.ح*Y]ڕݰ{7ڻqtwo['kqcOd7$nVoح{ѧs;n}Y{{Gnõ`_l~el.Yc6`b <|4ރv1n0]6[ A<~ǯ y!c y.ƅ0ah!EVD[mE-B"}k1>.)o1E1YI v*.%h 8Ñ9.Ñ7#58=F`pFo$vI7Ė#Hg$q0Q(b~5 scG1v|FaQ|h6Ʈ Fc1ø1pp qq88l<_39w"N|u'wb; wyw7v܍ǣxt;;;_l:M_11L;HLM&bIȞIj7 _Nd|9;_O7dڧ>)z 0~ 0MA)0?M}*\2~*㧁7 ipiȟczLC1=t`dNȚppn3Ї}lt6τL̈́,gaYEYpcededeu/xȞll6A909s9ba09\ba.0XK,% s\%1?|8͇|8-kX ༀ ༀ/Hybl!6[b-E`6hggo1-Ɔ-;Z%pZBl.At^KKq?>܏_)wxwː ː ː ː ˱r-n˱r=wlmm+}%+qϫU<2Ay~Vcp 8kYܵ%bƇ6Y:p#q=oc7 跁q&t݄6acoy3:o{ [.[ۂ^[Val0X0Xm6 ;nG=B#x"Ql((v{^;.v م]"vc`7vMe_j܍^A=<{^^1~vه]c8|^S'>y[sqOah{O44z=Mߧx`Cgy,6y<9#=#pz~ӏy=^|_ϋpx/(GQdEQ|sK%伄_|_A+dC1*<_#._ö38|c d ooMDIx-\[}ombdCS)9ELBS9wһ]t{}Nd}釴}D?FƏ[| Ϗ"}St q;~NϑqܾDޗ/y |Wpfk<3s}7{ap_k.obo770[-z}Ͼbo[oy~gw~gw~gw~gw~gwp=w;x~C~>ŇL}}O}cK?3?~G?G?~+ ;| 7 | # b ! !8?~!C? ~0a? ~#G?B}#ȍ!J{YQdE=J{YQdGeSU2-?2 ,?`HY%,e[e[e雂ܔ*7)MAn }S8o9o9bR2B o9T剿sƔ r·R_U@fY*V[U +b"+¹:U;_kv 2Ak5˵Zo VA*Ȭsp] pJ뉗ÿհa5U >Ր]ՉpNUǎ5Ȫ5Yj5S~5#5_[ Z[ ;զ6T{uk=롃w 7F,#;Ӟt>1虞lg\:IGtc& ĈcT ;;aWq'0N{1 b9dSo>>jnC7bL#шo܀-o7&b v̈́C&צ7cS ͈,gW:eOE\{-й[2:O+ ߴOw[xE~;䵣=;-u]G:[guxte#-prߊa/{Sm۱|zy7qol}s~r@l<wy˃kvA1oq0F!<C1?;蚏` h/ _Bҧ_bBү^+$. 7 k: 0#_ 0FabXD"Pv"xa"ѷpλ>mGbQw4~`EX88}:I]ޅ̻ ߍ^ww'&pDt71 N&NAȞ MS4MtLN b|wrf3iw0BY𛅌Y,b̽`KL܋lf3n62A8s<υV[iۊFzq;;h N|;B] 9^%!kc>ڏϞ~OI>ɸx F0mAu!|p48Oaπ q =KgsG8~y: `H;?2%^/_AWc|Kǰ1*_k| }_uw~w'h?7~{o[oM&v?~[طx6}A)8b>}ާ}O#4ib4?>;}=>$n>dN1q16 }>!F?S)}>3>3t _}?G ~<ݾDKIW+tp}_ǯ78?~ ޷},x,rwp爝sܟCƏO<؟3~xQ+f?z>ڢs9٬] *^bÉNӊB꼫y_}/N5 \j`ئ, j_k­&j"&m5Wx_ nQx_ x_1 kc::ȩп)(=(VP^x_ S>\5iаiK9 ߥ/kas:HV}O ZRA [xǯqGq쒀W$Le f~>ñ8 zQR>W mC"!:7bL#lFب:7B~scnoj ~ctmu7~7~ع}nH!n$VnF0n7bsA o)jfؾ}}ѧ\Y1N8Y, Y]66f\6ޜjZ`Ʀnma mmk^mkK^mѻ-mmG;fnnvpmvP;dCٞ17N`tF؅ coJluEFW+2!2SxFwtݺ۝w=s`\|@[>nG̷} X=z[i[ŵ۸Fl݆MCo׷vl{;sp{So;C c('nYӛ B~l7F"w$|Gu4%2~N 9w㯻i w S29Ӊ,Y3Y 6G|pc3֠`-Ys/}bd-F%~t\wyi/Ǐ˱m̚ҼY Wj|9#k}znFbczn~+ Q(:l}?G~$zzC}4r3p|=G,!.^`̋|/vo%8O_!~15y;yw;G9O{۞@<7&cO-6yC̞B{9ac8~?ȩ K+8|x}o-q{9Ϣwヌ{/!GB=1wb1tT,ub1ubR,B.8xv}X-))'X bl|X(#'XS){K9aEKOy˟R,(HJUکXRPzZ\EYX*éZrm[ 8US( V㊥.U%^j3rNW,]yr#/sbi )BN:e(F~*v 5G%zK>R zP]@{!v,DBچ0"x]KVmS,# Q1>X61c3q̳x,zc89Y5^͘ `M6]&2f"&bIR7 >g$'3v28?17LƖ1=>)O} ShBڧ>j*7Si}~ƸiƸit;ih:c0og3{q?܃> L3IșE,B,g~g? {{i{{76g#o68s?ysx?sy?̥\!r!#>#>~>- ;. Nb߅|# ׅt!E-Ha"b>}G>b-1/b'- /ڗ9K~y?܏ܥ"o)~2prr/Gr,Gr?+W@WJ_ U U迊A}߃ V#o5~Y ׀5_5_K௥Zׂr!ׁuc:׃[z7 o.6 oF쾑e#6o#61l&~ f[q[q[[a< cyzn}~Ɯpy>W,;cv2D`< XXv1Gf7s!~"5e!1rce?3 '$$c0 8=!pBS{x{|&ƞݳYx?.|G<2N/l䋌yN/Eڏq_BxWz{ a*v}F:y[v`dy[ޤMdI7qw'IdIzŸ[y o6vxo6z-߁;))| =bw.~2O4>@y񃣊C?C~G>BǼN8?˧1|;?'@}$"b3?û5o [}K|Ňgɛ!;ھC~ߣρ{;H|8?a֋\σ "WxFo\^2~'~盻E_ՠPQ*Vc-9jM\R2KZ(VJZH9Xmm)g}bu^͢\PɊQcՃr<b lQ2S5POSzQD~C OYBN9B9MA0 7 ;Lt* (+F 3Ғ(\A v F? (QG e/~ˀ_2 e/ ~Y˂_,e/ ~Y˂~ )ী~ )MAn R.Gr\c (-r;)))Soy3%DB7ѧ ȩ ȩH{E+^أ"+W%8TBJ_ ީpL%R O[+2oel/ o÷?;xM9حf__;䂙Ni~y2y b `LL C3 P8#_\k!6|r"-FF %g8v#IQw0;c1qqpG cfVwCw]pwcs7vYxx|2ƣx2dž= O&y<#Z' s2' s2' s"2'"s"18b"L:<>: NVdl4^5^h21~:?LA)l1S/J?)Ou*S T>:O4? iO}ut?3{N l0 N{Zgn4ObI{hͤm&m33nC,0gɞ: ٓZgエދ]ilpgu6q5&Vfc os0~C!^5ؚClߵ%[s\Υ\bk.5jVpe+ 첂>+V%Vҗ=u={Y Wcմ}uM_7kZ>#1~c_<Ժ_?Ono7F?(M؟ulffn_oA-`m.[u+la|؆oznGGqvG(z0}>}1~DZ`G|B3~r7ߡ`HٿFƥpN)6rf=P}{X+y)[!RovMb*iga͘zhӐWlis[,;Y-K[z!n\ؚ,Ql][ӎc튭92[TlbkWKߢ:Tl).[bR[G)ې\Wl) 4+g}/~uAϯ)ߢY?Gl#|Σw|{b7(vNn5+vaL٠U;}ӊ5]P)vm6imYmYmՖ~mmc[䵃KT ѯvpkvث=mOv :u#miH[Gb#6O:«#:fx u3nfx u3nN:N:!:3:ӧ3 nAQL]@ťrbWsjV%pc%47(NGroT̆_ޤ8Yzo澡[[8I; &E݁{kG}6+Fπh0;VOGOE72 +&_{1V{R\J8TJelw* }]CSE({iX|I+͔P)y,\*ՔJuiJ=I=R)Q)EJ Uj񶕒O:e*C'Ub)k.cFP/&@1&I9!fq7qݔK]Z>"G()ԅ<2MUf ,IַzjZz}F6+).)Z+U~:CvJ*N[[4"_&C: @jӜ``VnS[SZ8ϐ ߨYWץ;e  ׆+}.FӰyzԡ[nQq^A~jZ؟EK+iDe+KZC.#Q\d.Hy2FXRRذn~1Nq𢾹 ϥU .8!ٖ\=vse$}@}dm^%z'VH~I#ƒǕk?{i pwKWiY+:Ѣw%dm=wx%YG]P]ڕ)O4Po(ZRoXiy[P<]FUYxKaKr^嫢~X՗19}С}s7DjpKO"^IM>2~%zDo-P B-l.&#J%b5Cџp݆N~R_W Ōu$U\=\˖+e[GD輮DF/!\zh{b?NbүIK G_]^iK.{Og'L_ga}f⃫+ %5oŮ뜣3WϱVj\OYgTPzeW|QgdfRll&%'m_O"iE)ei|~u]Π9zF!FtI_eʫH=zJc2ڧehp%rt +nCqy`6WN>2Z\FkO_/a?*mm嫢i7\u|dya\en| 4{3j#{)oԿR3|~-z$8{d%f+=tluY-lь7]yN޷PR;qI.L Y/3kS'䷔Ld%G³rtI%%'e6Q[)+׎3S׹m{]洗꒭3(D)f\;^]t+$HZd㓨m^:W[HڿȝuOt}r/N ]B[_n:BS_ҊI{#:]f~K2ґ2utKM.K;-tuK{wƎoǛxlLl]*4KcUm͠fKLeI?u_ѢR7fW^{O_X-f2u_wiy?"Ul~Q*2=S[akPҹ+W1o9s_jzY몹@,B;o]y[[*YW:Wj}yw\꽲(KDWz5`}Xdz%o'%s_˹芬ueZH5qRngXR}L cf7|A_.rE e/[8#r+6IZw+їP_6p~U7$W7~R{߮~R߃?^o{k/,ߕRw%U+]7WRanߕԿ]F;+ߕTҕSJW??ut^%UKίK?nUW&U_ʤ?+72]oʤeJ_I/ʔ?+۠R[lKIoG_oGv#vt7ߎoGLoGgQ_i_|~^?? Mo\AqOuZ?UKZ877O V'ŐхSK_T045(we 醗!0z[nQNj)?OO7yjNjIQNܡ9ES U[44XԁE` (GZZ bErkN--*f@A, rRBZgv۷`h!ݓJ"+cʺI*WGXԜ₾y9 _S?oNH\пd$\]gR[XTox\]L<3$7AӀZLF ,^yD(*5%b?NԡIU=@ֺ VnAQjq.~wTENCla%jt tCEJ-gPnߒ䛤~ lIKQPU .O\]( %m+W"-x`ΐ!j\4JrgA>qQ:(/N-]?::4g4_ KZΐBk^jSCr$P:*!-RR n!-@\qENͻ*դ:E9CK&oLKF+NwX9}Al+&3m{˗:$m2 bJbRs r M6z)sJR#17O6IFݕ:<BUɕjϼZ\0$UnK:)'uHr[ܱ0(w_&CTb‚bIR-Swh%s]gvNm9cZeegVsZ[ui١kTztlS3ߒڦUZ=:vY)Um[eUfmfj")wڶUV]ڥ>TD.Sn;ėgJNZS>}dҩ߈\fTRP$'yN ZPRsƨWb°?hR/'¢<,+a2Iۢ1$M^ rer(_[\H;dt%s$/APQ]7_ߒ %t JԂuRUU_qNYg^Y A2%_@`Q;kk%ZZJp^Y+k%OcR꿾VRZ+]iD>gO-TY.KI/Ho/I%S꿿dRvɔ,Կ\2WLjnZwHlo+wVGQgu^:JVG_R;dCcÅOaO꿰QϟMMEZKο3XWn0Y?T~ZȻ?ðȼyuF)XXWf4 ЗRz*)߉6*&ŬXbSCQR܊G*>ůRJD*eJRN)TP** rRYV\TUW)ՕJMR*MIϸP2JHiܠܨܤ4n\?hV`vGGf׳]QC]nUz))+w(1e2Y<ܧ|LUf+3ZQGy[,PW~PU+ӕ&GZ٪<<U>3 a"C00000000p.݆:D$dT4t =Y{ s s 7,5,3,7<`XaXiXexаڰưaaaaaaaaa6v#G ; ; { { 777|ak7o g 7`8ggy/_ .~7\4\2*Fh4FjFQ5:.1z>0!c1Fee)r ƊJT5kU7V3V70426153j4c1f c}ccCc#cc 73M͌Ylcsc cKc+ckcc[c;c{ccGN.Ʈn[={o3nۘcckg5704B0cXbnaiemckgxnxD$dT4t =ƙY{ss 7.5.3.7>`\a\i\e|иڸƸqqqqqqqqa6v#G;Ɲ]=ƽ}nj0>i<`~\S@Siiii)T`*4 3M%2H(hX8ӝLwƛ&&&&f142kmckgoZ`ZhZdϴشtiii J*Ӄզ5LLMLMLM[L[M1=jaiemckgzi ӓCLO1=kztӋL/^13jz ӛLo12kzӇL>1}j ӗLgL_1}k:k9ӏL?Λ~1jtY1Fl6[Vl7;̪ivfk9h9j.c.kN137W0W4W21W6_kb\|Y31sܜ0go0hĜinjnf2g[[[[ۘۚۙۛ;;o6w2w6w1w5w3w70bi|vss_s?syy9<<<<Ԝo.0pH(hX8wǛ''''g142kmckgo^`^h^dϼؼ|yyy J*5̛͛[[1?jaiemckg~y CO1?k~|/_13j~ o12k~?1j g_1k>k9?ϛ1j|E,FbX,Vb8,iqYkY%h Y–%j)c)kITTTZT\kbRrEY-1KܒdX[XZY[nhĒiijifɲd[[ZXZZZYZ[XZY[:X:ZnttttttbirvޖKK_K?Kee%2222Ԓo)ZY,ŖpH(hX8˝,w[[&X&Z&Y&[XZY[fX̴̲kmckgoY`YhYdϲزreee J*˃Ֆ5,,-,-,-[,[-[Y[|j ˗,g,_[|k9k9ˏ,?[[~jrUFjZVj:iuYVkYր5h Yֈ5j-c-kMVVVZV^kbZzUYӭ1kܚfX[XZYhĚimjmfͲf[[[X[Z[Y[[XZY[;X;Zovvvvvvbizvkk_k?kuu5::::Ԛo-ZYpH(hX8ֻw[['X'Z'Y'[XZY[gXδβkmckgo]`]h]dϺغzuuu J*5ֵև[[[Y[>jaiemckg}u փC֧O[[>k}z֣֗/[_j} ַ֓o[߱k}֏[?~j ֯g_[~k=k9֟?[[jzMlFfYlVf9lis6k-h ¶-j+c+kKUUUڮU]kbVvMm1[ܖenhĖikjkf˲eۚZZZZ::nuuuuuubivv޶[[_[?[mm-6666Ԗo+چيlŶpH(hX8۝lw&&&&ۦئڦ٦fʹͲkmckgo[`[h[d϶ضvmmm J*ۃն5llmlmlm[l[m۶ٶ=jaiemckg{m ۓClO۞=k{vۋl/^j{ ۛloޱk{ۇl>}j ۗlgl_۾}k;k9ۏl?~jv]Fn[Vn;iwvk=h=j/c/kOWWWگW_kb^~]1{ܞgohĞiojofϲgۛ[[[[;;owwwwwwbi~v{{_{?{}}=>>>>Ԟo/ڇًpH(hX8w''''ۧاڧ٧gϴϲkmckgo_`_h_dϾؾ~}}} J*5[[۷ٷ?jaiemckg} CO۟?k~/_j o߱k?j g_ۿk?k9?j~CqFavXVaw8p99#9Ž#((HqswTpTtTr:qTv\QqCs91Gܑpd8;8:9;npđhhrd;;Z8Z:Z9Z;8:9;:8::nvtrtvtqtutstwpqvގGG_G?Gcc#1111ԑ(p:9ŎpH(hX8ǝw;;&8&:&9&;8:9;f8qtrXXXϱرqccc J*ǃՎ5[[;9;qq| Ǘg_;q|89Ǐ?;;~qq㒪ըTjQMUUKuիTPjH 5Q˪)j9ZAVRSkj:zZMPkjZO45]q5fjCXAQImfMfj6W[-VjkVmW;՛NjgUvW{=[^mjo5GUju:PS!P5_-P ajZHu:ZUǩwww Du:YNU=Luz:[UBuzX]ޯ.UJuZ]URש FuYݢnUVGGNu[ݣU''AzX}F}V}N=>U_R_V_QI-mzZ@PHXDTL\BRJ=~~~USWPϩ???__ ESqFivZViw:t9N9΀taeG9(;]3Ψ2QyJ,,LQ6;9;+8+:+9S8+;UuVq^YYYYSyR9ԜitgL; g}ggCg#gc 7983M͜Ylgsg gKg+gkgg[g;g{ggGN.ήn[=:{9osۙuwpt99;8:B0gYynxD$dT4gt =ΙY{ss 9;8w.u.s.w>\\\|йڹƹssssssssa6v#G;;{{9ww>|yyyiaeG;_p<|1ל;;O8p<|);O;?p~Ϝ;p~yγ;psߜ;/:/et\feu\vå.. +슸2W9WyWWEW%WWe׵*\U]׻jjjj4W+s] W׍\M\f,WfW'WgWWWW7WwW-[]\nwqqus\\]C\C]WkU*q wptrvqusukkkkkkkkkkL,׽ٮ9yE%Ů% e\+\+]\*K]o]k\k]ֹֻ66*66(][]q=ګ,ws=zܵIA!S]]ϸu=:zEQK]^uzu\Y:z-ۮw\\s:#ǮO\>s}+ek7Be[Yw]?ι~tuWo ]]܊6MnⶺmnVNv{^wAwvGQwwYw;}Zwu55ݵܵuuܚ;͝;]}FM&LwSw3w;}wO^ܷpvsyA!|w=].vGGGGǸǺǹt==========}{{^l\<|B"}%KWWWtvqu?^^~ؽͽQN.n^>cOtptr?~}Ys#/_tu~Uk'ott~]{ݧ?tSg_t>[Yw?Ϲt}Wo ݗ<1zLzlQ=Nx<^|3/<_z|;<bޥe++zW{xznnnnnn>}wwwwwww1'Ozxzy>=}9/zz_}{57ozOz}{=z?~3/_z~;?z=7ދK>g}&gY}6>s<>/ "/WWWWWɗWw:_UjZھ:z>͗K|q_—kkkkw&__/˗kkkkkkkkkwV_/m}wzr|}|}}|< `P_W+J|}#|#}|}c|c}|w77woooooooo>be|+|+}|Vmmmmmm={ooooooo1'|O=;{9|/^{w57|oN{w=Ӿ|>}3/|_};||?~;7ヒK~o&o[6~w=~?#?_____ɟ_:UjZ:z~͟OqŸoooo&?˟oooooooooV/mw{s}}< `P_/K##ccw??>be++Woooooo?1'O??9/_57oO=?3/_;??7K%`9` X=gp<o` "hLl %P.P>P!P1P)&P9pmJ@jZځ:z-H@"hhhh!pc@@fiY +hhhhhhhhh9)9%5-=#pKg@mwzr}}@~ P( J##ccw '030+po`v`N`n`^`~`A`a`Qe++V ll l ll l <x$h`G`g`W`w`O`o`_'O <8x&l/^ x%p,j7oN x'p*nӁ> |$i/_ |&ml?~ 8%kKA%h9h Z=Agt=Ao`0 #hLl0%X.X>X!X1X)&X9xmJ`jZ:zA-LƂ`"llll!xc``fiY0+lllllllll9)9%5-=#xKg`mۃw{s}}`~ X, KÃ##ccw '838+xopvpNpnp^p~pApapQe++W nP*[[ >|,xpCO >|.x$|/_  |-zxDo |/~t? ~,yg_ ~<.}? -x!{bRH BƐ)dYB֐-d9Bjr!O@( ¡H(**J UU U U].T5t}ZzFfVvNn^H CP<en)$jj eZZZZڄچڅڇ::nu uu u u u5+t[ޡPPPPnh@h`(/4(484$44*BšЈШИиНBwƇ&&&&f ZZZ/8$thihYhyЊЪЃա5BBCBCBC[B[C =z,xhГCBO =z.t$|ЋB/^  z-zxDЛBo z/~tЇB> },yЗBgB_ }:.}йЏB?·~ -t!{bRX ư)l[ְ-l;jvaO@8H8..N WW W W_.\5|}ZzFfVvNn^X ñp<go)$nn g[[[[ۄۆۅۇ;;ow ww w w w5+|[ppppnx@x`8/<(<8<$<4.wLJ''''g ^^^/8$|xixYxy5ۛ[[ ?~,xxCO ?~.|$|/_  ~-zxDo ~/~t? ,yg_ >.}?χ -|!{bRD"ƈ)bX"ֈ-b8"jqEOE@$ E‘H$))ITTTFT\.R5r}ZzFfVvNn^DE#H|,yȗ"g"_G|9.}ȹȏ"?GG~-r!{bRTƨ)jZ֨-j:juEQOE@4 EH4--MVVVFV^.Z5z}ZzFfVvNn^TEӣh},xtуCѧOGG>}.z$|ѣї/G_}-zxDѓѷoG߉r/8p`n-shNߢ|[N՚٧(wD5G2 ^>QξWf Jr/Qqkꛓٯ[ `v)`~Q֖-4rKR*R"⊬ܺZ-:4G\lyW-RY[ k/VIhҪTRӵyWcƼAWa rjs5zP?$'_^_kۜKrC\`m[j!CK痎oǷ/_j‚⒢Ɣ??A/;*__S4|萜%J9rt59t*PTz\:X8;_eji%WKR*"].-IkKh5\ZpbZ?2$xB ] t!.҅@   bb?&1 ~Lc?.q ~\?.q ~\'?! O~B'?! O~B        |Y2 Mi He@,d&ˀ4Y2 Mi He@,d&ˀ4Y2 r MiH@,d9&ˁ4Yr MiH@ZL%A, dI&K4Yɒ Mi$H%A, dI&KL/˂4Yɲ Mi,HeA, dY&˂4Yɲ Mi,HeA, dY&˂4Yɲ Mi,He@,d&ˀ4Y2 Mi He@,d&ˀ4Y2 Mi H&i=Mz4Ii$el-$IbOD&tahN< ˢcXZ,%F&KK|,!YB泄g rg 2%d>K|y+!RB楄K 2/%d^Jȼy)!RB楄K 2/%d^Jȼ}BB槄O '$d}BB '$d}BB '$d}BB '$d}BB '$d}BB '$d}BB '$d}BB '$d}BB '$d}BB '$dO! 2%d~K<5_:6!؄c3$odHȐ!y#C%/~G2d_첼L6k3f5[fHʐy3| g<8q$q2=AF2zуdt @F2:сdt @F2 gx?~3 g>}3| g>}nָ~3 gOS3 gx?~3 g?3 g?~3 gx?~3 g=A{3 yCfސ f4ç>iO3| f4ç>iO3|7d yCfސ7d yCfސ7d yCfސ7d \f'd yBf'W*U |U_lKđ$fb!Zy |U_Wk Uox[*V Uox[kaZxc+X +Y |Vg>+Y |V |Vg>+Y |Vg>+Y |Vg>+Y |V0-Z Vxk^+Z VxTXg*3STaΓb/i4~G/ zG/o|}7ϾgͳwyzR|Y NyV Oէꓢ+ꮨ+ꮨ+L,D+ꮨ+j抚+jފz+ꭨފz+ꭨފz+ꭨ*k8?m,HCv\[Ynnot~uK* /^(PxB 흽{d xv}w7ou 8 8 8-Z^RKjAjAjAjAj_KZR܎vwwwwwwwwwwۓoO=ۓo @|#P@=x^/#R~?G#~??;;;;;;;;;;;;6.^߻=6婜9?pgpN- l}xs{o@n@nh4bsw-=c{C:б}Ke-{hCZб~=]Ƀ/֭\a^zü]:;gsѭ G><cYSsT&0=LabS<=偱=alc{0ap{0= ap{ i`* sn?}'WwΝăUٳkK=K-e1* *Α*$B *$S:pdyH!H"QX6f`:mgRo,5i(31\WUuUp]\WUuUp]\W9VuG%{txh<$ _WUU_WUU_W^+~g{Cǧ+ . * . * . * . * . * . * . *ʅuk>2 +* +* +* +:G|A_|\\WUpq\\WUpq\\WUpq#>:G|Au# / / #Y6~qkmYEVp\d1G⒘FOg( +Qϭx9Fnh9`*ؾ 6ͫ`'*؉ v}`: 1; ; ; ; ; ӐiH40N40N40N40N4upl"[H؝pN8%k ǵZq-Ḗp\K85'olWܻ z %vĞ8q3ܨ3BU~zG+جH"JV ( H?)CP:-+ tO0π xpB8^!I *J` |pb'%3`, စpB8`!I *J`(ᤅpB8i!NZ'-I ᤅpB8i!NZ'-s\rp 4'N#::qiN/_9X]CSuβ.j{xs.O.Oι];i>Uf `+%J R`+%u:c±XpC8!u:Xǝkן{V8!c[{gϠaQtƩC7꿃8uu{txksk{qo=e$ϑ;cӎiشC#:4C#:4썝k{s[76"pvD8;"Ύqx>_ЭWSWPT# LVQwK1L.KV&\'?oܳȇ `%p &\ `%+|ƥrMvr0,c%Xy V^`%Xy V^s gwv<ꪆdD`%y t;/K8#y v^sdn@yDrG9RҎAiǠ/Kp9 J;ҎAiǠcP1(v J;=ԳԳ3@ p 1G⒘>+R=ÃA U fs߃gp38l36&=cg4MpFg4MpFg4MpFg4MpFg4MpFg4MpFp;<# E`h7ۛ|y֟ngXpM8& j`& j`& j`& js*>+U=+U=+U};k~mr5nŭ͙Lv6ok[m_6M8 ( Àa@0pP8 8Gc& my`& m¡BPpP8T(* C¡BPpP8T(* C¡BPpP8T(* C¡BPpP8T(*L6M0iL6M0iL6M0iL6M0iL6M0iL6M0iLڤG{G{֑zT,@ac}[bO HKb&'@Pwu;@Pwu;@Pwu;@Pve(;@Pve(;0 $ O|T.0 LSg8;pvg:pt\88ppXrV9U7c16_Q6 mo|6 mo|6 mo|6 mo|6 mox5U`fX} mo|6 mo|6 lg<x6 u|*0lR0LE|qϔ!0eQ0]LEtQ0]#xL SLFq)?S 0%L "я~D#2%HDG":ёȔ 2%JDW"ѕDt%+]JDW"ѕDt%+]JDW"ѕDt%+]JDW"ѕȔ /}KD_"їD%/}KD_"їD%/}KD_"їD%/}KD_"їD%/}KdNљȜ 7MDo"sȜ 2'PdNѣE(G=QD", ѧ>E)O}SD"ѧ>E)O}SD"ѧ>E)O}SD"ѧ>E)O}SD"ѧ>E)O}SD"ѧ>E)O}SD"ѧ>E)O@d>Dt+[݊VD"ѭnEt+[݊VD"ѭnEt+[݊VD"ѭnE WD"ѯ~E+_WD"ѯ~E#"2/"`-wF#ԑ}>uda00-EV#+`de02YSG#ԑUȪ`dU0*Y Ft;*OEV#ݼG=}{D#K%Ȓ`dI0D#G?D#G@|@{@axa}ρ9>xs=Pĸ$1.IKx"1H'x"1H'x"1H'x"1H'㉄~'> Mlg<&3ў Mlg<&x6 Mlg<&x6 Mlg<&x6 Mlg<%/ K_%/ K|j?42玌sG#ߋq8wX;L,DH#r_ˑ~9/GH#rd;2ǎcGƱ#ؑqȸjggggٯuĞ8q$.XV%%%%%%%%%%%%%%%GL1tL0L1tL0L1tL0L1tL0L1tL0L>1|L01|L01|L09ϼ1DL0L1DL0L1DL0L1DL0L1DL0L1DL0L1DL0L1DL0L1DL0L1DL0L1DL0L>31LL031LL0}'I0k̚&I0[j Bl-#@ā#qI5Zg3 ~?g3 ~?/ ~_/ ~_W|_W|_W|_W|ƅ sㄹq8an07N'̍ sㄹq8an07N'̍ sㄹq8an07N'̍ sㄹq8c q8ar09N'L& 9+ + &b{^kb5[M&R{ďO%~|*SJTb 4ďO%~|*L{&`b/ߗؗJK1G⒘h>Ub*OاJS%T}>Tb*؇J;%N}ľSbiGP mȿ!oȿ!oȿYO}P?J%G9_K~CGs>@?d'I$O'Ib_$/I$E"~Hb"oطH[$-}ľEb"oطH'u:OmHv\W*^ W'OhO?ќ~9Ds'r 9~BN?O?O?O?O?m^5&-Dq Q~^7[={K=1#q &H\3բ߃{=|߃{=|/ / + + noooooooo7zކt^+weLߕ2VZ^1 V+jeZLiɗv|iiiiiiiivivivivi%[mWK-ߒK-j8ԫ88_Oz{{{{{{{{{{{{{~?~?#~?G#~?G ~?_"D~22̔3SL2[x䧔φ)xJ+Ҋ)xJ+Ҋ)xJ+Ҋ)xJ+Ҋ,(⹫x*⵫x*^׮⵫x*^׮;GE$ߒ#BkWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv]kWUv+ + ËePqT\9ꤡoA,4Z B- łoxy 7^_y}ͺ3OnW\*7^?o>: zG>zn?WP}v}}2?w`ĖchUcYF;{76֍^~kc֖wbY'wbؽ_ln۟wnd䡝S+^y=P߯~=3m]_eUzm&v;?lu_=/յTi*ZOj~{nNhusxa.kluelY'[r,rJɴNu[Fll::ɤN&uNɚ:Y['kdmuuN:Y_' uP' uX'uX'dCl-----------------X;yym[(k_]KuTmuU}uN u^[V|̓ų"V=z0l7M}7}}tHys_T\]auz6c Xmuz6<<|FԣmRYT_G~SS'kdP#CT5R~R:Y:Y444444444/+/+/kX~ c-[?uNVƾN0oaX~ ck6uNV7X7X7Xe+3W/x'_'>'wQ)uo/W]_PZ]w{L_ q'x}jN'/p???OuGϻ7sgM}̛O?=z;ۓ[wO+?9x~/~=䞟ܟy,~lrONϻO~O+OOOurrbr|rlrtKG>ve#[c?cW?~h.sxrhrpr'?pi~}[$}^X|>-ᄐ/s}݋݋;}]~iv~{>&{Gzew?q[o77OPr _>8<~k^|a;&=yLor_.{vr䞹>'wts{;۟v_垚W=<.I3[Ϲ͍mOnkr'wmropܻ'&'GO|!&7L.G ExEu]J\t/drxE.^v;~׾[5_5W<^WNϻr~y+ݯܯܯ|Ƚjqb{s^^qѽ|nOe/-9sK}?{tr/#sG&\ׇGw9Ж4[\܅9ɝN9ك{-wf㙹O^4߿u &Op _+hdb/login/vendor/tecnickcom/tcpdf/fonts/dejavusansb.z000064400001246205151502156020016615 0ustar00x`E8>{.PB=ҥwB  *TH#""/Ҍ 1DDD@l^r|}~3{#xݵ}َnQZ>ݳ\'B\V:v񾺮 B oե[ y%B9J:vI=%3p|?Pƥ ::Bom67:Bo߄; 4@{:2 ==7wHwp7! ia?|i<5t) V\Geho|qvށde3\o7f/ZHm@ }G$ Դq&GW_C]y|ġg RGHC-WO4Iř^1A/8?PD|7!u; c;OO!9Os #3 ? }\"x.@HD - 2Q 'Hy¼D  F8$!m"HG HG ѐ ^HxH' N@(tz !=I ^!3 a,Fn,6t)A:[lbgHwn ,.ADS>B8}ڠO'A:Y?33!=K4ED9Yr/@z Hҿ z'>a!lDkk#bO>i? SS9t":>xaCMD7M: ǎCMQSGF<3ppQbܰcSN'L>p>ڄX[\ه\]:ܭ3*a-*;i ڷZ,]:\QAb5`=!.}^[1ܾc;XsGB1 ܏3n%jP 8 p1ƌB}H& &,#; p' 욁]SiAȇQ:j zAPD4G+Z D|p?.p>/su0G;.i1ٳqC^;g5dg9l֥pYcxo/%n tj`4ť(/)4avHh6#A˱V`tDPs2QFPWEEbFi|0ϖ`U*P,R֝b99ZXIda0]!f s ']\>s}: V)K|60Jx,X>w `mwnɿQ Tqij6*w;0Lfaph*7Ef$pdԫ[8Q p-"ז_E"fbs/> gh> 1@"@M m 0b9 <6MЪxN; :EAGh zuh3ڎA42*B7b+؂]8 a^ bb-]-pwU'LhJ}JZ UM=b)$,BB,6!*rAld"BT#ŲH(;idw;؝^vg 3:ԏN8=k40 36@ &ĩZ[@;tM@+] neb. hi*X`wue^ޥ ؆p4ǩ8g&n;ஸ7x49 Z o;nqx9.U\Up*9)Eܥm!,5S)M)~ X*d< #quTn͞ƞΞŞe'&1" >O0Ɵx1 k6l `!0ğ| p@!u[%@ |9:ρ_/qtN,ǥj%|+Y%j/1<̋H*$-S[!wiš+r~U"LĬ6ߙWxrđP1_6'<̹O=V&\[#}kQJ5h @wz HA"g3^#1s Tm9t/oga),_owap$ Y- B)4ZBW# 9baZX+l ;>pT8.|&|)\. uP"r$D!D!6XF$vXq8C'.ϊy:q]# xNV,7;u΢std]m]=]#_k[[[[۠ۢۡۥ۫;+ӝҝ՝}+!I M x)UJ2&R A*r\i4Q&͑K+ZiM)Iq3KtI*K%$;''5 Ln); y-/E *(ťD)JR[4RJNT+Cxe2K,T)+5eC٥U(1rV9|\Q)7zMSL}} }k}}W}o}>W?Z?Q?M?G~~~~~~~~~3KBu-}3Ha0 CCC3CKCC'CwC_ pXd <ó<:fvCaaC i9÷ˆ" j䍊btdcmc=c#ߘmlgliobiojeo\h\f\i\c`baek<`,03257~obfikB&d0LahS)Քn45106u0u56rMMMLsLOVV֚6vv>3}ihd*4]729d6Ϝhi0747341w2w75275O603/0/1?k33o6o7?4063kl.201ޢX,%kIԶԳ4-ٖvΖ!񖩖Ye5 -]1)Yy+kVdf[SLkk kkkkWkok5::::uuuuuuuuu3֋KBu-kI6al [C[3[K[['[w[_ pXd <۳<:fv[mmC i9۷˶" jbw٣d{m; X7O`9'2<"^l'zo>R&'sȣUo0M<rvI{5ۯ*|0?Ӌ)rW}5)e32[dW+mhPj2tv?+b\Y3h5G咿}+p@5+ ] `f2Um~UB}Ay;WKJ'; Wr>kUXI z@o5o/m帺Zp5ejw̦"Uط'JWNZOCYHDH Ca"j(,³ RT8~Mh}?z+6g\O⵮w\N{tM n~YzQtv   #gd0 7WlBNYހz Ÿܫ,p$9d&z0X}WVƊ/B%Yhϩx:vMvm!z d Q,4V?ѷX`oj+ z|ȹs@Ӝ\[[)a]eik$ep"<7Bfo ;v8p8g_\=s(=誀UYmom`mN~7?_K|!ŗ &GI ̈́B]+  c3ya ؑrT9||\T.)uRޤw#>}>CPLRFI]W?H?\?V?Y?C?Og7{GOO_oUoP e5$jlC;CgCOCHxT,|B2J.^C{5M]#2Ff 3F㍩tc1ǘkmhfc|¸ظ¸ڸָɸ͸Ӹ۸xxxKE%cę$0E|DSMSiiiiiiiiYSiii)ߴǴt[eSI5fl1QXso63w647147O527/4/341o0o10250OϚϛ7_1_34ߵ h1Xl0K%ޒjIdZXZXZ[:XZz[r,іi9',-+,-k-,,;--,,G--Y\\Z[nYJUkgMִfXZY[ZX;Y[ZY[Z'[gXYXXYY7[[{GZOXO[Y^YoXXUoSle%jl[;[g[O[V߿oGg < d4[{(8$BC1i~9iQGi>I7_5aZzL-4]YǙ|GqgRY{ Wҩk5ðwf b杁V3*7{j%~k#߅.SYҪ=͢N+ǁH֢k ErPҼ$ڤɼȪg7 uU῁VUԭT{Cq#*5k:|qqB59vjX~ "aHWVCt|J>CV!IHBH#ԁ4!B6 aI³)"|f'Yg,4B?fYl%6 B;@G_f"ZEhStW3 -X,@:8n N8-e.aP,.(Xd q)]*tlCG!s!tG/Et aJf3`A( []ť,%ß.]}_B dٚ:awg9X Hw h.F>X!˜"~bI,it3g ;@B0NEf/ Gy'0R/e N⟥4d9_2ir՗%z, K,ڭO,cAoCo ` Cbdԣo# bI|Dvj;UOfІ<f%n;/x2x ~ux3ގ4>ŗq`9p..咹\=粹v\g'ןsSY|n![ɭ6p[.n/w+qy{ D7HJ FH4'$d&iM:7!d4HdYM֒MdIv}9Jȗ"D ur/&G>>g f|K ߉d~?_/uf~;Sh?o_bšxԔY~Q<>T|(BF8j[֨~wFq/ =⁨g9gC`\E֜󠇹T.p P[+KQ{::Z>11uu"oc{ ؞ACl+m/mW<.퐭=ڀVoTJ=q F#W|'sH"A+(ft(q= 6Zv>?t?gtƱڸn8ÝqO#x<B Emcu00 &C#Cr&ȷ2)"7<G|2_7|6ߎCx~*?/+5~ w߳t#1ƕDf6$=B fm&'U62%v,pf?`fX~3Ù잃]1 A̋R+SnCrت`>|Z ;NJka^ |68X3a_.~d0'%t : B?ʳrX/z@ۆk(~i($!@s 4/ kBB1z &١X+(L>YPٽOB8؊z갫XN}_^}3(嘕V5gjwŬ{سU!\ҝ4{/Hj"\T Bk{kMK7iqa9[!be phkWHъ<Ḑ{[ o%v ynfNd!oOS,='&>Zkjex՝ b8 7cx)Dda@#ǂ 8gDk ۂi<]e%$aI(O B-M"]nV.+H—!ZIV keVC}cYjr90w xa 9}jfO/d4K'd]J &QFBQm4`;A[Drf^XwhtCTؚfJɞrzqU]l΁ӱŞfmXaFˁg90k0 ~r>Q>͎i <0z<;Ӕ;x]M3jO|Ev@ijfhz5GxF`lC0>_hf&Fwho3j؉ڱ0:NlAaua]aug=a<cxSQ?6@-| wh0'pz43rhnn :F&B'k )$W ^u_>Ql4Xa:+Ƣxi* ͖K| tYzJz ,},GlH]nWW;ПQoF_XG އ%A,zIcl֟338[[{k/`ejcqM: c{Ogbp:31 [จG9u8n9n㹎1GC-~;ess:^霋;s>W66Uy::_3:xVVZ=T }jƷܴ(v)vnWwdLma_詼`i逩|gmmmmmmx5 -]1)Yy+k6_Dg1a]d=(3L`Y,}q 2Ls0|},Zy#×le"MY+2Fc7CVi+ f܍ެŬ,g-dK?*|f>\jf5jmL~`QvՑZ峧kZNưz=+]!4wѸ֯utӫ Ƅp*&̱~( KkiAkAVwT$P ـ h`-Bd CqSv/ALYz@SZ\>DMn3i8ɰ!tPX BV,}E%Y,L(0aR<Vj/_c3Y V3JڱJܠvTAk R/ |uo  |L/ zYqKk>B}Ε /`eF䠄hi2Cfmf]H͚wB2]m,b{C@|!~G0kQ]e8b{kebCl0om{d:{ʯAL,ҪN,͸@"C4 ^v Zr^`i/3|p*<  svagSj~1zhZҏky(AsX ^l 8 _+VvM75J>B ,G҇ }n׎ 4f˿iVˊ<8Vp`=k ^ 5$e49AMgR^Oq@3tÞ9A)bB-ćAY lrv&j-r"+MN]! RfHwXfnVEkC*ibbP1!lU@4;QM, չYkY9޾j+XM.A{f7fB66-,$Upj\H CZR,y6hVAI3t uP4ID#X3f9+9,Gcخm/ k!د@AHBrG|7*݃Xem.l)/e_xj zMF׾կ߳5յ=響խY֛(9Be6Kd(XvlJpIeokWΛ˚jj&RWVT[KZ_u5 _>lk]vXzBJ[zl65,BkXSR{+$pU}gHk[Z=H[;%sQ5Vzl ߧS׉`޽SSǀfnZ{+?.,;.dYͿ{ZQNDZ/K230xU K`%?QYz[fd- ָflsӊk9w4(y)TUY#fV+4|Ev0~a(E=+xjvr׽usZ- ⣪y5:PO\FeJUk5?jS(l3WdJ5NhU/5`C<i4+'`.C+'HU-˿*5(,|M^ VGq8xtC@!oСb8dT9!/& va2b7vp# #!>d±8p"ND18# n!n#'7bk5[-HQ8r+%J ͲBfJJ$VV![f<qQ`Q-8tO̸0W +F㊙ÂᰂlÎ:@p2'v#q+q+q+qK`܊b>Mᰠh /z+ @Az71-8h i&(80.:iHHx Lp$09GADaer pXD+8p$ pNDlVvl=%3ppRd/ DTS)q An&+2q8Zj㚸&NH4HS: 8⺐_3QntP&fg%sЪ<<77?<]L(C*_Er\*ۨJR279 /% $,G=췣@C+ 7|8z= dYUh5z$i ZzArn^>hp1*%nH|,7(ќ :x Z~W)}[ Z!0'ث Wv qiێc% (I4]~vَ>EKy)\-uE3N8-8qXtdā#ЩNB:]<}htsqkġpcGCMF ;w=p=pX;fQs|ܰcʼnSNąs÷&8X5 q!Ҷ[gru҇u "PG b ᬒ\ZT`ڷútn8/jA2\Ma}b=$=ܥee;zXsG.,'S 9Uy""3-;MG:?8pd 881(a-cA5A֚JJ%(\U"/%U\f0F%CyK q PkEκrw}7Mm]Wn춹0w;w'SݵhZku}:gWW ;b w܊趸n;c dw w*u}u'Wu[?]%27ܒ[6np{>w;ѝ ~\ B z bI!R< Y9H@8%^g6Gqz.@Ľpos{w}?ܻ w; kܯu7;ws%\)]@x)$E9Q.////ן mV_la##i0D!qD5h#` 6 l@XG(QA `Ay8،H ,I!"8ؔkAop`tnA`e,6``6` `%ap`: ,$,$,$,$,$,$8'%a$aQ$a#a#p=4f$,f$#5ȅ]&3 + ;x:x9^ sWU7̀ww$,$,$:Tna^OKU[-Hӵ2ʳ3ʳu3ʳ3^B!)H s"`k#ɝfm\l$O&w߇Yi`'o%l阎jq=;iU M g+o|.Do5{]Mߩf/WMjrzk_59^\7k&w;W!W%ALM׮B*xGcm|C6!3P+yp FNyv?>gl; #F0_z*SUFF_WYD>.>M;iWk[v9D08Lp9"юXG#Qۑt4r4spd;8:8:9:溞u=Zfϱq=Zigz}YwSw3ws2 }밻A;+V6N.^Ai<(X.dZ ٮw/p/oow/q/tspb0طٷgrhz^dac/q G#s;5z&}1SA\s9 ۹;;{pwOupsqqwOvOsOoqϲoru~ҽk}{{k}S]݄n@ԑA!0b} m@›—(E8'| >]Uob{8ttxq$G GAG+G[ێ.y ~%1g]gO[ۺ;qwupv=αOqOwG_pvsOb=LF~c'O_u/uzOr?1`f]t64vm /Ai)::-5Dm`C;QQɐNCzӐ3,3mb?MeOfM QVT!ߌS*دT@NѱE3V*K!;z+/9Jov'ҝ] ֒P9(ٞÎxvngvvvf]puz)ESE yJ9JyvJ)vʑOm:_NH0hF"VV׬ޯX_z?cuńGh ,%Q*  tT" 1 Y#hݞ 7{ d%F E]Z]#4hԽR~by>~B$FG;(MdCOG$Cf14НW_YMX"IhC6ɤSΝYx5%0J<p@G\2'##q$4'٤.eAk/gwqgj;b:NeGC t #ӯP_עA&ƻ&&ƹ]&AiCŨKqiC}CF;ua߄ׇp1thKvEKtxHw=׺}lˏ%wP`|ʯ1PWx.Ekgek!"qOhlg2%>'G>C܇nYPxn !26CD l쏀tvxN3i7<:"dد~mґt!=Io2\|yZysQtxx?~{ӫ&}w]pLۘ1O,ƅ%Ռ7#nvSq+vƝ!Ǹ+q#&M|/$>INJJj>sRI+^O:t4ۤe)})OIR úԴQRޭQ#Fך֜[+ZjN]}-Ȗ[nYeVV[vk=e[ٺ}kٯ7o>pb]YܤY-;\Zs?f5NeeeeL2|hW#/Of'B0PX$ GSuQ ƈ~ ^]>}wFL4~h:e:o`9Czၘ㐣iq]c]<$z=< ^0)y=ޣ޳ [#}}+||{}|g}_QS̢qaqQqq5&UŸ$Kܐx$CR #g7^N"()SN廉Twdԝ@55̩9o,S[ZniӖ[mYeVikح[v}됭.ںb놭wS%_Tl/7,.\⯊Hթ?)~(;Rvl;eo嗽Vղuek˞/[]le٢=YSֿ{#ee2.U\TP+󔅗Le2ƫ/~knp^q{e~ۋn?u{'o?~?֍7nxqcWnlo<{cэ>7zo';zuAWsj竝vjݫiQ{oRXTxŸ /XC~Sx/ ~^i½oQ\᳅./\Vtᓅs g,^X0Va|aXo~柇_|WRW++r~*[?]˟Nt?'?/_勗_~c'_μ\r.ݼIF\a~a[{LdT٨Qţ~uvԩQGsTQFunTQ#ߏ{?Q}bœa0s)fӇa}}}]k΁gP~30NSCIQ?e{^|o ]Ob4@D0Q hZ(y`1@$,2 pn:!^ -<Y[xpxS7pDh,@<#A m4p{k ̅sH_p>k `ċ3 Pppk z|HG JƦZL5G@[J! <3AiZ8?MK1@ "Z>_xw?ޅtK8C_Ln@Ӈ@o(@FM@ @쇐d>An,PR'!9v]p;(_FkA#y}]Euҍ32u li'ȃAnP~3 m@@WjHG]΋HYpN zH<`*ɵڴui0A<7iAL <[ yR xyVRH?|@'[{ ғll) / ->]=; IwQC 0_s[ pOL Џ[ EY q@pq sq#ns\2AjϸЇ)_l qOi`ƭ%d#n'A@>NB0:G +Ao7ăo`3G@>t6Ή@_/136{ `Ǔ@ߓ_p4-$HM@ߒf9I50'L5MOꮁd1 |`RHMO5s@HCߓ?I3Wҷ$]mrI`Ó!7R)`O, 6"xoyI{%[mM9<\r `S@-@TTR{ د4 ,P.d;uf+SԆSATT Fb%2d{Ylq hWxWl >&@hjoXAj-5 i`YW+OmhGmz/@X>A W͐d h e 76{ o | 2[ڠ[>og~l>ol9 |Vh d+m+ze>mi[u+m9 2>wi`lw[Aηm z tj+Vl࿶ml;~}>&}7p |z_;7`=*<;؂b;eNgBU 4-A&i@b@k;а[ g;з;bho1q1R >dvl@1ī X ~AwTh >HxJ[lPpU4p(-+t ݗ1~ qG?~8 |!^87: <9~sg#u8F,SAY|ip.6\O{\ {N`'ep> 2S+ ᛵ@\5\rѼ 6-+ .prH qΊiwOIB2R>̌,ȊlȎȉ\ȍP8@(ˍa._ `tEXկm#?ǃ%ze_za՞u~C ꊺa-@OEiu&mA@[+U~D &z fkF?jEE4> mD(n445$φB4 =jxʰڰt5hi}145] Fcl=cIfP^w? ޴t@8tKx_,ԓ7w> >3Lԓ @ہ688>AY51];AQN8 Ļ[_ Z>%=Sb9_' 4Zr WC8Cߡ/Eꄇq7(3CrwP~qtWa/P??UH]%-%3Nӡ= "GE{^tOr35މã'N>G7Dk5|Ot}}4zZn"N~JcctmDZL#$A:h;.> -z<ENxaTg^1jϢN龽eezB|!*$H|Bw]m; TPNK/ȆZkB8'7xoeq\Ŗj1ɔXs͐!~cIĉ{$,xVpmEkB5&G%Hdɏj΍tL) ,o&KħR':̉HnRU]*)J1VCuU. gJSMյGP'm_,e<ԉxE"YJJ݄ӱ5d/58Sy`NrfNV7vmVd4(q5Bt,iۛ\8g 8;1 0d9Xxa v{Qj~΅N79ϸu#;wԹ1ucx./ ~tzz (:o aV#^r8NX-^*9s'cOLbrU&XW#NPeXNv7)q79]R`eaAd,q͚͝]ee8R'YۚTׯu_NN#V]vk3(H"7م&]G7 p(ܼU{~k Sظ9_y#H55MPM7~P}C--Z|$E:]=xHu`H}DDx>,,2dR /E/^EE^FL$,K:W!YAݢ\ʸ˱\KMY_(ű"tnF&0)ݎMr;XU[kjٳ}EiK9BZn߁>s⤙3'MwwUhwϝ{ݯ͚8iIgir=~%2L/6Ͳ%YYv_#݌1J)IwBzy^_Kv >OukMyd^q=n ;h5Ա>]d9z &,&1G/ݺ $ᘬ4j~d h'T] ayY6+&Ow!|Q<+~][mZ޸7M[ܷv20]n2B?$q^FMY$#RYQ^?Fp=pO0eq3 Ft8&Ʉ|׀Iw Z1.&ċ_@ W\)5YoԾ[h'gof;Q/Rn_?#\gP?O{դM))%y8<_R1C&7H.ڬ{٤üVb Yaf¬n"W^g)Uo m/\Pi1fw7&NzdWlϴկ%ŸlN<ᔼ}Aq pjV՛eZQ?b+S$"j0IȢ5z(dp3DQa#%aZ`kMEunN}svܞ?Υ{mޥ;_[T߸C_yh[ *-#& 7J>[Joq,*0^` &*T;}<@.*_MNF5s]^a!V{߈aϏ[+楸d w%Z\K% "3_|OM>Coe>/[tz1FbD1v ,AM 0E-hj 0xsj`1⨘Xjoŏw9,.';K:?ױ:]1cygUeucn{-5EX.ŋ,X\ eJ64ꤓ9(پ"N NWRs振.ٸqI3?7odES.Qg./Nv%26]`#I="Oz{r5YԐk>PM`MՔ98i!K5}~QzA={&B?{^-ݧ.Jg*}`f}l̖š4ʟfHځ(hyt^zS6sj3QL"ĘtPqDf%dUX c4]hɣGMZG8y/I4wکcN2vܔ){s?\\.+'W9#o&}{]Ƽ ;,k]y Q F JJ.i)(W6`(r~&CG?黭C֖kzcX7;4"77;j32o8V^^?G%W>&nz& vRyP稳-l-~ |-?v |-uo*gCP*cƠ4x_Zo&^4?- SDAkA"sN\ _4!wU#=w"|RkW8I|m[yI7JM{e5k[0SZ8ao{4`&۵k #^styo3}{o?Cz"0CjJED$?lKNM״ $X&GmsXV5 k`Cq:Q_L#10H_W&%>E>.6>I3t Gk=G5Oŗz2Y5e+1jLSklwԽ-X8g[$.r3/]n?۩m4g<Ѵ VC iaϞ~BٳqЏsӈGb`TyDAEAHr@Ӝ'@(Yyh/9EtLAd@0Kp nKF:͂h^tWrh.+͕'+A8NbIQא >|Jj-$Bq8 d43"~@Z$VIk=;}>:r_H4xgnR\:t~8ׅ3wkp Aӵ;@; F4>ɟ`CD, a0a6H^G\ӢstjZ>ɢY~Zbb;UV{yBR`V>9)|ϵP=-}k`w.yS 8P΅Yic^`6%F_ᨱ?`! I,;$/^ˀMj}"Dr_?k6r@@;liލ̾;h!w-)X+ bdo(ZϛK'rJ_6 A`;i!~k3h`^I?^_չU>]f#\x'Qёu uQX#!>l8GՔۻx `+0Waٷg]&Rr=eg3([eef /-[vtGK(,0hr sIf,uf1hިC}אα~HIT:<䚲1qͷa>m][IoKP=/t{~Z+POR5գGz GR %W(0bL+7A~XW0QTCi3QaDR/o8"CDפ}ww .bhBڑ>O7 S1%tsu O :w5Zpm\/4@r1xnعbadHcg4Kp5t'7\LiӒk\tg% _Oe.ƆRyG+cjSݧNL21'dEƙ"'(: ȡdpXP:RhWIAżeGf6ȕ^ΩJ^٩s\;];KK΍ӍSVq++\._1|'S*N p}I+KdH9X~^ cԣ#8FB0SJuMup;[oY5I(/22۸LDhKu\^WG#lbBuVXg}ѹzbC ^b'0<\{DS8k= quw:;9/v.ZJF& ]iC; kmyar-sRY$|n 0?r$#Gq:/ WjIUW0uZx^[kW ;uhl7d%P$fxʽ dڅv:bt5bTv3ƃ ^--P2dF EAk'ԭEy(ZJ{-FTcfAkJ 7XjxQge6R?8  97+@r5iV}q RQ?r`76єd@gJԕ}|^/hو(?#2 ܮ0Jw)vSw=XE-Υ'XA/YtfoBڻ(ȰȈLg!CNCC]9*Vf7sv8 ۗ8ya=[]ymcjOsdeP֦.2x㙅?k??SV?_~|9ϚUߞ>lyaZРaNM 8oCw.:&]\O`tkGE]IԌ|Ck 0m;41w(0poҗrЉ+BjUwwixmV`)OFKmKɢVaM2nRoo_o'mXg hOo{WTz!sKSSLT/qsƜs=џ.$Xt,Sa}Dq懸q ݂WIP+ܚڈ=pO\; 4~ >]|54?!9/RFT2 ^΄39)BygCAHݨd8O[!#ܕO|=E``sܽfT]q8"XG#pB]%?;s^ %S˲ ..p)9}!K&I|CFC) >CHuR\0[ mtכM݄bg]gM0㸱d8?\7T.RG%Ji'E}dWxC:`h[@MpO_c jKT[R?9gI B%=T<:(#bj٣%N' (FWtyR:= ru3SNY:Wp" *dh^eAV2"D'7!u̓|*s"DoRD*5x1A|ח)CHq--idӈ'%S_Vc eBdWrwKEwZ(ʊ|*re$$*Kj˥HbfdLijW::q9 P DJF$]騌Sp@plu'-ȸsl(}b:W x%H`=!bZp&+E0)1p ~@DH $E$YRs}6i-uw'fmSL*4{Ĕ@HsI#M]GtB~ _ n 0F%Vdqgw L4K= {p]̙Jo\=iڡgng,!+<q6) YNs8\ ~;!>$&u_! oկrksb.6>1% _ D:w_viz76h Ӌ"׏6Or1W]itϲKTYD^=}R\o:e~>5π$(MhH_Ͱj [ײqH1͓ ߜIK|Kb^ﵘw}83ӽF];yGx}.zwS|I`T`5>nׅܦ<2t1n_a3|IGM2a#ӮMόIy->ިnk(ϯ&; .28?Rh8eFyc/ '-l0l6d讥MBy hrn&M>i̙3r+ꭓSvQܟmذ_ ꧾvAD&ϔ_1Q:OF+ lе0"Gm7Y Kڂqs y?\[k=O0~L*T=K/QG Wq&C}#hE{#:enNIyceG72CMͥ,b?Uښ.J-t B]SNrr(&NNs=,4/~~X?ܯ#JA -(<] X>.am yQNNrQKhnZXR4f:c\AIӸvɄ_fυX:nc+>͝3jQz\ 7R<;{ MEiףM g!,m@y䫧IQIm"R}IyyzYdvMpzB]kjPxf &~:p6'F rw_oZnjomCHM~86ж\8qZݩ9_&!D`'Mldʮ6 G OqM?kցA}w}o)7|1؝Yf"n^fU7Gw_}ݨ?#|m;⶗v_xnlD\k/~%:J wM/*]^ j.79C,[Nr<^'Ks7+&\~5թGfNg &Y8gx"H bak>Y,>ǚcog՞ 17 EtxlMrY*O ^9$bpa7' `SsT~8SS3Mev< AjFh8FZۑi`oފCWNq=)fM1yߨwp+2Ս_ZLJ!|*ne]>M]c'E|yrҽ./TFl{m*-*CҀ Q{ݝkֶ@, 39"?0!޸m!K(!^nމЖ.Yyr[Z) y"E@;+/. ү4)IU;U-c֐+LWܤ(_U^9ۖL\7QZ;#!nNFggF{Q'dz ǝ[ ǂsp]";N٢KgQ5t岞6eYz(C1f)Ֆk+ ),Xiodhdl+QZ9}>yOϰϘ`M:dMQG&>j@^W kmd~؅GD,ޠلC=b=m~_Gw~jeSstDV* QT9 _s&XD TcKB*Ր 4S}T FRCCsS+NNl%6"Ra) 9b.GpIxqn4Y&OH M+ +L[W+vD#c8 1# ?'(,_0vEbqLkw@_+u—\I•Uz<ݟ}9\cd#Qt,WlQu NWq,<fD#ir]D~; 2ZDfȏyd\~ +Zy.zq"')r|##K%ʿʷur[,3@0yD;GIvk5x7)Ɩ\[Rg\qEriw?(Q:ɟ)_S77)'-+EUVi,xWL8oS,S}kũqoJA:w08ك̠e#1!3u3'" et7-f^MKo)gZE 7(l8Sb4YtZt(7[Fk%3[C L$L'H.S/ċ:c I2eB6 8*. ąƅ0xil_1b~ '{|9_9CcǦg fh9W LO zQ*qw3jY>.E65&ikI6YW=qٖ\n:7U9b.Y0P(FIme: b,K?")u|w tסu(Ϲ[ r誺x_'ԋ r w, 7Ȋs *f!rq4fMDW%ѷYںP6I 86 80޿zJ~W>ie?" ¡qߚ /'DGHN3(PYϳg49z-eNlPWEw hPnǍmIvhXee/mYz7SV:O]פ3 4 dFڣ9Zt|#['l7KcFw[suxk7K'!{w`ռڟ9퉌l>" '=s;o9b0< x6+u6z Fc4F=nE|ۦrA0 Y ʅ#caEtKk`rt&vugQ?MXHK%ȒmzآX`,#7σc9KS? Pų3F:Yj#|: ǫop͇W8AY79xÑqj]I鏇`{yuI [0` ̮ITNX2k ?y wQɞ)zQ5G #nToTOoMGb>2RgۯoS#"AF1:kS[;idݠODnֆ3*߷]@[Uaا0}S?0NJW mڶal)8I{;q>G]wkZ>8sً=?$%I{^)S&N'_ ^+J:˷u%*~Uέ[? .AdUAnިj3~IlLӈ7޲ Uu-zX" ܔFo6NH!5aIxCM?Ճ'XyX7fcƨjisH7qҜ3.w~v 71dݻAj=zv_3&O-3f,f)g ~K|ϨHE1G^,B|&C ~oű~wTF>EtI8ݤTf[U!7/\rҭ\4 ƺRscsScw#G6j10׸Y'J>ǟ?9E^K?cKǾK\AfuMk`' 펊zdxZďQ7eN&o6qAFn Di6[uR[FI;qO_y0_v>ƅ 7}xR د+-e~+Dbߣ?l=qnZ3YZ,~oWP= 7Z#)Zzصr_ 3j\} )&OG׈D V7:7~gbϺ[״V!'Ӧm2VKH3k`ܼ8.Q]qq:sDNJ+ϸG%6:"nu:~u~z}թх3Pג 6y-!= .|VFMT禖.ti?EvEӝs~B rO[/32+~w>>\Y8z[ڪŌ:ujja֭ nzȦiZ>8Vz݃K V [MFn4li"Z?-{x.C8PzuE:<*.` ؞~~v f^3ط3X~mm}+o#|Dgƅ` J.O,{qe]{vVCIm/`~fEF>6}qQQDNb܋cwިP;C"4|DB)ӡoF9QTqW47Glb^GMluP~[>cncEiukՊbPsᯑMlOkn'vrM ‘T 6-16A&{u+Oo1ѦYo $6eCdS,JyXm;5kQvu'1$w<<&c߯V qiOj3>YvNҝ~u_k`|Eu07͵M>SbZz>3} {fƶ1e۶)iff%SoJa{x; KN,RK dB(:d=4/k},dEĻFjll;]ADSu+:7z-[ B}c3#`;T?>*m|6׍uRXܶW\(Iˆo|=z^s;EEEHs n"6 a$ D/ӕ:'Xľv<2qXحv...ig]ƻOUG\-z!$芿aQӮȈ'c&FGƝkj֨p[|qxDX+FMhLwЖYY>&rQ-7 W,RIĘZY̘Zyz9Gu+esh1#F&<)))mٞ|vwv=OHy}cs`Top̨i r]IX[` ۱rSk}Akז꒸}Lja6tW;L};cf1:5RKjC>Omm;vx]_KÀ&i8!^ǮvaNLc V8ׇw q $LdW+m2Y l/fډ;;jF6qews=5fh"2.8^&rk.Nӹtwlo6 |>I>Xoo=&6k>&[m<Ɯ gԒҫ>ߘCټ '1\tt4_vrQ'bDp\僧KuDŽ)ZT&N(6ZkPRr~iPyE=CFI3g0dh񮷚y`[e;:<ǟXܦ= gpNtis=J&!^):+e:O.[cwS͈>V-[u:^]:!eT92^]dŽkٽVq^⼌3'6ZVB+f7\*i-6īzߡ}m}m%Klߵkwe4Mo֢Y禝 j=tEM744}H'6b㓪?3l;mPiGV2nZRlΛCy-Ev{cW`C&ӾcVNQCF y[`T==dlQ!cIES˧r7 /֮gU\_0;(׉%!v)/r(;.|d?(~ Fn)[EiA! ѸΒf Äg wU?ѩr1S";lā{ͼ-t0"XhܘH6FK̫Q;gPP =q赴k'p7ā{Amqy$ƁFb1 !{e+m<-cZqvt<rz Mv4Jy&egLLmg7ӔHOO۴GgtӧJ?±#lܘl=W'-"_ݘ@ѯnRg 5kӱ9Tjz?+[dfqaDŸR&W74?>+!G+W#Y9i勭du c"yEUT$Tl7{cmiwv;hIBpnlķ GtrI&~!1G-B"RIGT$n vz;$p ݫ',&O r8>k kv$`9$V /DXZ|}T-_ў!il(:V>)P^q?bclkt4x==[/w-k}` N h}܄. Ə${D#R oxh */dc!\/#}x<R 0a2yL1:#UQ/kHٞíXĔXx$˸NK^_qIq)d.\ Yqt82=e(6L2JpyD64YV7R!ɼh\Glv1sI]_57<Ѻ@^Tr5JRRTJp\&R< o`i]e(z,e#:&wM^3ewA\ [gp &ExU=6 b.`%,pǪ RQT e{p!Ș|5j= QDQGO Kxi|T_QDН.]62Rhe{?H֑fO?' p|zڋIes&|@t^2w/4MLd>w_HʏANC/V?eVJ c5XL\HNղjƤ=\a^c"gۻu:(u@pyf_0!{0me|JX}w.}l&< ?(&")^ 6}i`?RHjBtbbeJ2D`${bdYi8,F0L!\Q3GE,u kF@tWg>TL|+h 7ڀP;U@P9#GN;j)43* ڭUeuj 01`} ^n48ZW_:{}#:Gw)6U_o@83s/ĩat+*?[7w,x:%7͝YtjsY^TlYilV)~.ȸ%Yd, F%h1١ɸWG jRRz!)yN$ kV'hr 2΋\Yg{_ZL0@S2`K=g/? ѻ_/Nk/\PſFxWw~o#8w$_Sn# c4P(ֿ 7cE:V=^~^L m[+\i!UJ]xyFc 1X$1 1WqD! H&+Ep9| ^DaGO70{"bwjB·,'<֮A wH:F|Sa'z Ё-/Ն[(x8ؙ rʩ>HL|Ko 4ql %=7⩞dGvL?䋽av;Knl ޷h0ٚ9zz@p'{w/3 y^L'X zo$i|j|I0:6|*0-?ؘ>(Om,"6O9Om8ElŐwr$Cl|7nꇩTclа`e%&&6VVc=_gxb9@gK6a_,O0-H~`5/CK Ņ3P[̑hA\,9,>*OKY)SKK]˸y-;S aΏN)kˌGfm" oχ3KJ"+{id+(l' m n=$:fDqx0L^ }<& bDB2NL#xz'EX-fsS[N b@R~}%c5Wq 6<:Q#7Jn1nLorjƂC$uNs׌g䯩^=GDS9 (/6h 4c?o-88XN${1}޾.Ck<+R!(rNz fT}I)%,oku.߀)"0rFPZ)f4g݆hS϶g1ʌ$"rtkBL*E20Rs XGb@bO$QNof(uf\>9Wy7tݛ~s "{Kr}ΰ"tТt.BebDϝT;Ҫ퇫6mܬBʤFPXUӐij nZegjL654dzS`vyaQO~*< n#_XRFDyES2|lZ*<:I)EErn*tb)_pz&ZUcf3zu#?џG^H4ܪ=Ntj?ۋS}2]Q'3m4hͪX>*2ąƊ1.)cYM7cQt{ŭhv=*H<:YjY7rf*`mMu \C{Tybp 51+â aQ8?B#|l]O%,skØC(١(g ҎuZ1mGc ơ02AWIuu[zM[- 1m4讉]_6,lI,/׭q))qA!м}Vtؽi.;/c.ыG`B1;H +(aU4 m.\%Ol!+9p<:`i0= 8R+kjo8Pn^l;R4MSȁ/<94GuFԓaeGo7^ 9297ىf ?E}CVЌ47o#G`h֋G4BTa@'kÚh 8Ag< \#ˆ9l , t2a!bbNnoEKG8=JZ`tDDH!Gr2iGONM9W>& xfjJ~Nn[})}Vpb/NI!H UL'1؃%*VDVD)vZD[]ZO&"R\7iةI<.;֛Z<I ~ᑡk55n7|shR?$?D8춉; UsJDD Ԉlu?7DD(V X[ۋ."g ?\=m3g?.QVxPB~Ʋi ؘn*X, jVW2 ՖC2V6T 94 Xweeh8Nn|Rא_@ݛO6TFw{Fb݁Sh.Yъh`SO] y~~'ҕ+<m4103Gӕ _OI=SH{f^n4*=V@xAL}rNK &g+V5!*zi͟9c9YC %C>ʷ;xar50>upp20UP֘xc"riQ ;z ž_l''EMI p YI}S:KbƊY#*.ChυNam-uN0;^2uj5QIJtpGLs˘Q;h De*̗PddF%6u 7a-9^>K8r[ޜN瘄#xFUN#ەA;-{AWV/{xci|MPmp^)`K?ԣ);eH#z!d;%NVсV2&iJD5ЬzՄjRɯ1o'ku$Kq!r$I(0iFSrzUalAX[Lx{ETȂAϑ[kQՁC̖@ 2IKq%X^N?d_ᚅٗ&Q6$&S7~(pZVo׆McXulǜ in1Rx4f6mge-=u8MՕ+KOnu1ًOX߷* zŹ\uI[0=u w 3$k5u$@{" b?BRAjAOu.[4 TB Fy> hG>iO !Zm+vίF,ݛOx >Iq_5[G_q<Ю  ?>cRvv4Kdp]i{n~e<6Fo`:2p>uާ׎?pZт w[1yK^p{:HXw'{/(?ܸm۶-JI^' `^:jiSۀȮN'9MI` %J)EGDˈl,V57ߣ`A'B$'Oo9]6aS]_;nV5ϔ))\ؙ? ϵǵ}B:jM O vǞW&CCh6ڒv5݀ۛ ȼ`{47{Y](d99HJ1qܸ GMעC成Ac6Rٕۅc@9pM@ִOk XET#c^R}\XDd{Z|97n Tx[ DLV1n˙ :X-3f|:gьk:x9ZM}K π{$#q ixqr-Ad cɖyl6kȦ.<-8$%>9rYc=Qk'N:yqgOkpP\hic4hJImumOBfԚÿ4mߎ ᩒmK?^r{W5<|!P5'?1E2%SCq/DN`1d ƼYc`1p%Ղ KQܤ'JjA}8,`S g`˱;Xbo]HYKfK@q1lPJ `:6\/_L9%{.#6c%%r ?a n|P÷J>N睼~'/qY oywTn{rgi&Q=2${5WMYx$@{m "O0[Hb~d_~+?=2MNix+c 7KX;+_};c\D\/|xDL'z~Mf. _tNfז+W'Xc׏(?I_)?1?/ID6q~Ih&2?K9IC[CG +ƵY-/gD=~Z<>}C_[`D*a>X-Dl)-lH2{\W,=y͟wZfRrf 眜/ 4A'l tN@m]Wj \#ٌ4HI 6f -4 i2B {rҼLq '| I c)%0`nM=p~C]$%dnג!٠oO4s:ŭ`ŭ;4)R*oې97b!IG:z}q~.A{7Dp&#/D#tĻ =MGr_d?|1=_cUCx(G#$6b&/Y$>nMq ijoV1ɖPz3>̣"OemVl$V < Oډ@Wח3/kρmó wDM"K'Ks hh F6VNܒ-|mVL¼7ؼ.n@}"M3|L{0O.Lc#^ј-Gϝ ߉|G_%\>:`yNphy)_NRԌhƏ>,Yx|Ƒ|w60W>WF*/Lf &18RW~{o8Wo@;HOp hs/^#{K<߁+16W>YT~x!"χ}χ}?;_a;*R?y'{#K !%`_h>$h>7GZ;y޼罚[;?b ؛R j ӷ1)imy7vm0άo|p-0U哻 IjSv1W^m?yF͜>f>~ 7L-Sz.jeV&'?&Ԡq>@N %$r}g֫,[Y~VV5vb[vzKA7']}KEUAlSǏd' ?٢A7݊i"~y7I. E: gnV(-rhiVV*q|PxR$6³JQXp勽w/d{A % md曝򉶕 UxQё#p/shQ}=8 d^zW[gd8)5K,۷y!>e)ן5czNZPзyb_8瘸w> &;.Jw*d ovNW߇_ ޝ13~h]< p3[=08F jכ`t·3Wn1s=%rli#W`Ir=X}X5lsK䷽KACwSY8R0mGLՋ~Si8(;WbڽBjw9)cJYvP/m~8[ bSt֐\ ҧs*jf@mٍ2;0=6EB٩Q?z JU'wgĵPsx2 nR rqŗ1ޗ-ޗ)a V^]3Q;p#+A]q${ҏsY}BԖҿc?](_H>gNّ9Pӏ-޹{&Ҁ ѺȢAG$@ y ޏl|M27{t` =h{GO%M;| } < 6W"~:Wu l] gCZs\W@8@<O=>#vP;vi~Vpq 4tQO{5xb2rL?y2͡3? zػGu]Q@B-eSb_ڡ Jph{n:ՕhZ1Xx+}W7-m 0Aߔ߯͝*Pl4l3xU灹bV/2&C >69_v5L3IPUj Ld8P{ݤb>0!v a*̱ O5~Ece ܡȵv9q3Sp3B=7m̀z zZTX O&-17%>TYѪR8 fOHtFKtn`Ͽ;wոƌrLj}<(8%j;x5ä60; Ų!yt,3eMefjbMRcIbJ95Q_h6mfX9~(cPf NkVf_Ν l؁jT*h3gO!/DΜjoU~$D;yW(y.n.kxFpgg tlA)1H`sPsN9- 4dLsX@RKPzjd0pa٘!&?t}̄ыu97M*HBO֬X6 W'½ f%Ps :hҊZQNPi:3=,`7I|Anf9sCxJu^ol©SŎA^N( z7r;k TX1U+=`4Ƥct8fmaDbNYH ** Z$c'vEw )pY.P(X *UX{b )~\K'Nt V7r+u= ]</8<{XBtj| CÏaɃ,ǡ6lL> a @[)FUf1}jFgCYVD6RbXޜ3VFȂ4Sm.(n҈7އ}J:V7hYgx Չ#9rn$>1٭4;)-a5fWgA|t!m2UP m|[Sÿy3 `7&K29N*%/= J]_:4*oYvpKVصsxغƚEd-aFH8 .Ә)4鍄&Ih"b>w\GԆӡ?rlqbW]=vkλIm@-mžEq})(!["/c>_Rn j1^ڶrH[/ 8hVeHr*YPd@@qH#?sDR%F]N@#?.<؏6 Ϡ[k 'D)hRdD;>Zu42j4?}%>ūEckqZ梩;U]Vʷe5F|L_y(}8WޜC{n· {>ėAMr*! iٹn"\0#XK5Ny^UmDZۡ[\4D**f ]o$ެt]>"ރ4N;`:y@:n%}!*֞wXЯK_+=Nŕ&0`OB`edOPv@yg]hucvWnx!<{ x?-N Wؓ_}AG y-jCk1a%YO>A^? &{{Y&^ihd+ܱAs{^X͟1s M|kntqF&;wno˷SH&jۤ]9ɭ 1FPxd3eyNV~Qة>gg9?g˲ᔚ)v*R>GK+:R`.Yx [w1 H9 m7`t.Doe&D.k,f5@kxIfm@p;6%3gC _ \}S|g;6O*+DDbx{3C쑘m֐íҎM<:LlIQ5AD2)gNݢc2{xT4h@}Okݾmٌy[ ؟9p@~?L*LKB,&W֙"h5PiPwIt!Oij:iBLခ}?S):ܘ.}zӒz&>R*kQ(,%^J){9q؟OFR~Sz>G)1q L7L:w*Mz=}ӒD/ ?B%'j=Y3k,eOFO* n߾k;[8?hulh͛7ml֬.!#GEA$A$lB&ܦ5i\9(Lwbպ.]WSp$ܭ4UXPUXYHʱ`[P 1r]PFg.J" @#ڛ_{yN4SaoH޺8Ƕh< ]{m/kz \&}lH;' 0QV_:8 8=9) yYA3Oyet.UQ}AL[M1@uT,cjp`*ťM7 NJC4#Jد̈́F&ކ=)CdYԐ0^b3oaUӅie QD3wGHz-ThvJ_QyF#"Qb}~^f6,ƓJ'n>9&>m8o 뼻;UT ;H[بw%%>{&M3!u2f4 4pzH?~gv?{fHekI G3$aBbq)6UĢH˃]cD"˻vf={2Kxz0x_8@R4za2l97e'{;?±٩- Utɳ-j|In"~ahgGckPb'TMR8;._χc=CaO.YPŸ~H;^l4_<`V~QNM-n6Nϫ8?;뺿K Gt3:/!w#;.d[ƦPTߵ{')1Yn-`4{$_y[/hCY.y0g#(>TH/`2a)瓌TʒC,VgA|I} XvLXH>&d;U 6|Y3h81=}jVbb pn쌈.#o(k]:w 5pQ&rH.-D޳'iutؘu` IYS'Nz~Etq- X`и{Γvu늭#ac/71cmKKÝҖ8'<ց?InêrBR[8WhH 'h<+ `(J^1;+&SD7 F'*a~$D^do1%D%BZ GKJ$%l+İǞsHhAG};v*I}V6=Yrp=[D}f3?BCnb1S -(}$;0f?[S 0)Fp#fY]۵1&F aA51:FI(Zm 0:n``?Û`L+&Jz&L3؄d8Y`d&hf6H)}? 2ꗽro$1gڻZLT;Yy 0sikW-M.V+a /đ5R ^K/j%w4z3 Dttg f|vGJ61j{Xѝo΂W"ۖ+ds \@]%ƕzW;AOgq!;pߊ?بK'MZ߃hgQ6]|eܼyt!og^t(3}%/E D"74|Px_=@( j#!2LjԮLwN>gZiکxwgـl'bm$O@[BlK/#{ղ+b{hv-}}C:B_j41F> f|3|2ҙxyu]b,a, MV( q5vs6B,?ŸVXȥ%X4* g'& =u^B{ ,;} ,zcN0)/19@Ǎr)NC -J?z7zNYc>Bi ftX@,jvG9$.e{jD<}u " ;.`>|5C6 u[ "! 1%ub%8^^|A /BI1b᷊5`5j³3*>vICh43Mdԩ&7vV +PǛn1]jSD|C a2lesR\c)Bg~5YŲp$ǃ'S}yY$ф4Et3Q #K@:Oh$MnR%E tE_?*gzr瓥JNr)X1Co>C@hII8Vg6?p`9F` מp/| zit=<~.w@R?:{G7qE@W`CԤK8Ϥq6T!LS< bMޢ[F /s~g][35t-9\SsHM͑FA BRRsNIsՋ6:; "4֌F8+%[KLd,+|HZfm.އwjڴ@%z=8Z<u+u3w^*}&,(=ts*